Change PETSC_COMM_WORLD to PETSC_COMM_SELF

  Barry


> On Jul 9, 2020, at 7:48 AM, Serge Van Criekingen 
> <[email protected]> wrote:
> 
> Dear PETSc team,
> 
> I have a parallel matrix that, in some cases, I want  to turn into a 
> sequential matrix on rank 0. I have been succesfully using 
> "MatCreateSubMatrices" for this purpose, along the following lines (a small 
> but complete reproducer is attached):
> --
> if (MPIrank==0){
>       nSubMatToExtract=1;
>       ierr = 
> ISCreateStride(PETSC_COMM_WORLD,globalSizeOfTheMatrix,0,1,&IS_MPI); 
> CHKERRQ(ierr);
> } else {
>       nSubMatToExtract=0;
>       ierr = ISCreateStride(PETSC_COMM_WORLD,0,0,1,&IS_MPI); CHKERRQ(ierr);
> }
> ierr = 
> MatCreateSubMatrices(A,nSubMatToExtract,&IS_MPI,&IS_MPI,MAT_INITIAL_MATRIX,Aseq);
> --
> Unfortunately this does not seem to work anymore with petsc 3.13.3 (while it 
> worked at least up to 3.12.5, the latest version I tried before 3.13.3).
> The error message mainly says:
> --
> PETSC ERROR: Petsc has generated inconsistent data
> PETSC ERROR: MPI_Allreduce() called in different locations (code lines) on 
> different processors
> --
> So was I just lucky that it worked before? And/or is there another (better) 
> way to reach this goal?
> 
> For your information, I had this implemented to obtain and then solve a 
> coarse-level domain decomposition matrix before discovering the possibility 
> of using the "Telescope" option to agglomerate the unknowns spread on the 
> subdomains. I managed to use Telescope, but I wish to know if I could go on 
> using my previous way of doing in case I want to gather all the coarse-level 
> unknowns on only one rank.
> 
> Thanks a lot,
> 
> Serge
> 
> 
> <mat.c>

Reply via email to