fixed in master and next with the commit a9de710 Barry
> On May 29, 2015, at 1:08 PM, Barry Smith <[email protected]> wrote: > > > I will fix this. > > Barry > >> On May 29, 2015, at 10:40 AM, Mark Adams <[email protected]> wrote: >> >> I have a 2 x 2 MatComposite and PCSetup is hanging because this branch below >> does "NEED" to be checked. This is in matrix.c around line 7500. Barry >> added this a year ago (and the code has been working so I am puzzled). I >> commented this code out and it works. >> >> The 2nd block here is very small and is all on one processor, so all but one >> proc have (n == rend-rstart). >> >> This code seems to work in maint, so I am puzzled. Perhaps this code was >> merged recently? >> Mark >> >> if (!iscol || isrow == iscol) { >> >> PetscBool stride; >> >> ierr = >> PetscObjectTypeCompare((PetscObject)isrow,ISSTRIDE,&stride);CHKERRQ(ierr); >> >> if (stride) { >> >> PetscInt first,step,n,rstart,rend; >> >> ierr = ISStrideGetInfo(isrow,&first,&step);CHKERRQ(ierr); >> >> if (step == 1) { >> >> ierr = MatGetOwnershipRange(mat,&rstart,&rend);CHKERRQ(ierr); >> >> if (rstart == first) { >> >> ierr = ISGetLocalSize(isrow,&n);CHKERRQ(ierr); >> >> if (n == rend-rstart) { >> >> /* special case grabbing all rows; NEED to do a global reduction >> to make sure all processes are doing this */ >> >> if (cll == MAT_INITIAL_MATRIX) { >> >> *newmat = mat; >> >> ierr = PetscObjectReference((PetscObject)mat);CHKERRQ(ierr); >> >> } >> >> PetscFunctionReturn(0); >> >> } >> >> } >> >> } >> >> } >> >> } >> >
