[petsc-users] Bug report VecNorm

Barry Smith bsmith at petsc.dev
Sun Dec 10 09:00:10 CST 2023


   I don't fully understand your code and what it is trying to demonstrate, but VecGetArrayWrite is Logically Collective. Having 

  if(rank == 0)
  {
    PetscCall(VecGetArrayWrite(vec, &xx));
    PetscCall(VecRestoreArrayWrite(vec, &xx));
  }

is not allowed.  The reason is that VecRestoreArrayWrite() changes the PetscObjectState of the vector, and this state must be changed consistently across all MPI processes that share the vector. 



> On Dec 10, 2023, at 2:40 AM, Stephan Köhler <stephan.koehler at math.tu-freiberg.de> wrote:
> 
> Dear PETSc/Tao team, 
> 
> there is a bug in the voector interface:  In the function 
> VecNorm, see, eg. https://petsc.org/release/src/vec/vec/interface/rvector.c.html#VecNorm line 197 the check for consistency in line 214 is done on the wrong communicator.  The  communicator should be PETSC_COMM_SELF.
> Otherwise the program may hang when PetscCheck is executed.
> 
> Please find a minimal example attached.
> 
> 
> Kind regards, 
> Stephan Köhler
> -- 
> Stephan Köhler
> TU Bergakademie Freiberg
> Institut für numerische Mathematik und Optimierung
> 
> Akademiestraße 6
> 09599 Freiberg
> Gebäudeteil Mittelbau, Zimmer 2.07
> 
> Telefon: +49 (0)3731 39-3188 (Büro)
> <minimal_ex_vec_norm.cpp><OpenPGP_0xC9BF2C20DFE9F713.asc>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20231210/8d155004/attachment.html>


More information about the petsc-users mailing list