<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 9, 2018 at 6:22 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">Mark Adams <<a href="mailto:mfadams@lbl.gov">mfadams@lbl.gov</a>> writes:<br>
<br>
> I get an error in PetscCommGetNewTag. So I copied the test to may main and<br>
> I get the same problem. So this code fails:<br>
><br>
> int main( int argc, char **args )<br>
> {<br>
>   PetscErrorCode   ierr;<br>
>   ierr = PetscInitialize( &argc, &args, "./.petscrc", NULL );CHKERRQ(ierr);<br>
>   { // debug<br>
>     PetscCommCounter *counter;<br>
>     PetscMPIInt      flg;<br>
>     ierr =<br>
> MPI_Attr_get(PETSC_COMM_WORLD,<wbr>Petsc_Counter_keyval,&counter,<wbr>&flg);CHKERRQ(ierr);<br>
>     if (!flg) SETERRQ(PETSC_COMM_SELF,PETSC_<wbr>ERR_ARG_CORRUPT,"Bad MPI<br>
> communicator supplied ???????????????");<br>
>   }<br>
><br>
> Any ideas?<br>
<br>
</span>Why do you think there would be a value on PETSC_COMM_WORLD (an outer<br>
comm)?  Use PetscCommDuplicate() to get an inner comm or use the<br>
communicator on a PETSc object.<br></blockquote><div><br></div><div>Get the same thing with this. This is an ancient code and I had an ugly hack where I duplicated MPI_COMM_WORLD and set PETSC_COMM_WORLD with that. I'm going over this code and trying to de-uglify it ...</div><div><br></div><div><div>int main( int argc, char **args ) </div><div>{</div><div>  PetscErrorCode ierr;</div><div>  MPI_Comm       newcomm;</div><div>  ierr = PetscInitialize(&argc, &args, "./.petscrc", NULL);CHKERRQ(ierr);</div><div>  ierr = PetscCommDuplicate(PETSC_COMM_WORLD, &newcomm, NULL);CHKERRQ(ierr);</div><div>  { // debug</div><div>    PetscCommCounter *counter;</div><div>    PetscMPIInt      flg;</div><div>    ierr = MPI_Attr_get(newcomm,Petsc_Counter_keyval,&counter,&flg);CHKERRQ(ierr);</div><div>    if (!flg) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_CORRUPT,"Bad MPI communicator supplied ???????????????");</div><div>  }</div></div><div><br></div><div> </div></div><br></div></div>