[petsc-users] using OpenMP in PETSc

Matthew Knepley knepley at gmail.com
Wed Mar 14 15:17:49 CDT 2012


On Wed, Mar 14, 2012 at 1:33 PM, Xiangdong Liang <xdliang at gmail.com> wrote:

> On Tue, Mar 13, 2012 at 5:57 PM, Matthew Knepley <knepley at gmail.com>
> wrote:
> > On Tue, Mar 13, 2012 at 4:39 PM, Xiangdong Liang <xdliang at gmail.com>
> wrote:
> >>
> >> Hello everyone,
> >>
> >> Can someone provide me advice on using OpenMP in PETSc? I am solving a
> >> problem like this:
> >>
> >> int main()
> >> {
> >>  vec vsum;
> >>
> >>  for(i=0; i< N; i++)
> >>    {
> >>      vec vi;
> >>      fcomputev(i, vi);
> >>      VecAXPY(vsum, 1.0, vi); // vsum +=vi;
> >>    }
> >>
> >> }
> >>
> >> Can I use OpenMP "omp parallel for" to do the loop in parallel? For
> >> example, suppose I have 8 processes.   It would be nice if each petsc
> >> subrountine fcomputev uses 2 processes while 4 different i's are
> >> computed in parallel (since different i's are independent).
> >
> >
> > PETSc is not threadsafe. This is trivial to do in MPI where the comm for
> eah
> > Vec is a group of 2 procs.
>
> Do you mean the use of MPI_Reduce? If I use MPI_Reduce, should I
> convert the Vec objects into regular array by vecgetarray first, then
> apply the MPI_Op (MPI_SUM) on these arrays? Is there any way to
> circumvent this vec-arrary converting by define MPI_Op and
> MPI_datatype on Vec ?
>

I think you miss my point. This is the difference between writing SPMD
programs
and threaded programs. PETSc is SPMD, and I don't ever expect that to
change.
CUDA, for instance, is also SPMD.


> Another quick question, where can I find the implementation of vec
> ops?  For example, In petscvec.h, VecAXPY is implemented like
> (*y->ops->axpy)(y,alpha,x).  Can you point me to the implementation of
> methods ops->axpy?
>

src/vec/vec/impls

   Matt


> Thanks.
> Xiangdong
>
>
>
> >
> >   Matt
> >
> >>
> >> Any helps or hints on this would be appreciated.
> >>
> >> Best,
> >> Xiangdong
> >
> >
> >
> >
> > --
> > What most experimenters take for granted before they begin their
> experiments
> > is infinitely more interesting than any results to which their
> experiments
> > lead.
> > -- Norbert Wiener
>



-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120314/d1cbb4f7/attachment.htm>


More information about the petsc-users mailing list