PETSc and OpenMP

Barry Smith bsmith at mcs.anl.gov
Mon Oct 9 11:42:35 CDT 2006



On Mon, 9 Oct 2006, Patrick Lechner wrote:

> Dear all,
> 
> I basically use PETSc inside an existing OpenMP application. All PETSc
> solves are done in serial in this application. I therefore do not need MPI
> (at the moment...). The code solves finite element problems, where the
> OpenMP environment is used to use various parameters for these systems. All
> private variables are allocated on the stack, the OpenMP parallel loop makes
> calls to PETSc.

   This is a problem. If you have 

do i=1,100000
   call SomeCodeThatCallsPETSc()
enddo

and the OpenMPI uses threads to parallelize the loop; you will have
multiple calls to PETSc "at the same time". PETSc may not handle this, wierd
stuff is likely to happen since several threads will access/change PETSc global
variables at the "same time": at least profiling and logging information maybe 
other stuff. So you will need, at least to not do any PETSc profiling.

  Let us know how it goes,

   Barry



> Thanks for your replies,
> Patrick
> 
> 
> 
> On 10/9/06, Barry Smith <bsmith at mcs.anl.gov> wrote:
> > 
> > 
> >    Patrick,
> > 
> >     Are you using "user level threads", that is your code stops
> > and starts additional threads directly or are you using loop level
> > threads, that is OpenMPI manages all the threads for you. If the
> > later you are fine, if the former make sure only one thread
> > makes PETSc calls.
> > 
> >    Barry
> > 
> > 
> > On Mon, 9 Oct 2006, Patrick Lechner wrote:
> > 
> > > Dear all,
> > > I am currently writing a code and try to combine PETSc and OpenMP (where
> > > PETSc will be used inside a parallel environment).
> > > My questions now are:
> > >   1. Is it safe to combine these libraries?
> > >   2. What will I have to consider to make my code work reliably?
> > > Thanks a lot for your help.
> > > Best wishes,
> > > Patrick
> > >
> > 
> > 
> 
> 
> 




More information about the petsc-users mailing list