MatCreateMPIAIJ Pre-allocation Query

Matthew Knepley knepley at gmail.com
Sun Jun 17 11:54:03 CDT 2007


On 6/17/07, Tim Stitt <timothy.stitt at ichec.ie> wrote:
> Actually my sparse matrix has >2^32 rows and columns hence the global row and
> column arguments need to be 64-bit.

Cool. What problem is that big?

  Matt

> On Sunday 17 June 2007 17:36, Barry Smith wrote:
> >   If your problem is so big that you need integers that represent numbers
> > more than about 2 billion then yes you will need to rebuild PETSc.
> >
> >   Barry
> >
> > You'll be the first PETSc user who solves a problem with more than
> > 2 billion unknowns.
> >
> > On Sun, 17 Jun 2007, Tim Stitt wrote:
> > > Thanks for that Matt...will check it out.
> > >
> > > Incidentally, I need to pass a 64-bit integer to MatCreateMPIAIJ. Do I
> > > need to rebuild PETSc using a 64-bit integer option switch?
> > >
> > > Tim.
> > >
> > > On Sunday 17 June 2007 17:07, Matthew Knepley wrote:
> > > > On 6/17/07, Tim Stitt <timothy.stitt at ichec.ie> wrote:
> > > > > Hi All,
> > > > >
> > > > > Currently I am using MatCreateMPIAIJ to create a distributed sparse
> > > > > matrix for use in my parallel sparse eigensolver. If I understand
> > > > > things correctly, it is important to specify the correct
> > > > > pre-allocation values for (o_nz,d_nz) or (o_nnz, d_nnz) respectively
> > > > > to obtain optimum memory usage per node.
> > > > >
> > > > > For information my matrix redistribution routine generates each row
> > > > > in the sparse matrix (associated with a given node) "on-the-fly" and
> > > > > then uses MatSetValues to apply the elements.
> > > > >
> > > > > My question is: does anyone have a standard code template for the
> > > > > calculating the d_nz or d_nnz values (along with o_nz or o_nnz
> > > > > respectively) so that optimum pre-allocation is obtained? Is there a
> > > > > simple way of determining if a given non-zero value in a row is part
> > > > > of the diagonal or off-diagonal regions for a given distributed
> > > > > topology?
> > > > >
> > > > > Any assistance gratefully received.
> > > >
> > > > Basically, you run through the construction algorithm once to calculate
> > > > d_nnz and o_nnz, and then again to set values. You can see my code for
> > > > doing it in preallocateOperator() in src/dm/mesh/mesh.c.
> > > >
> > > >    Matt
> > > >
> > > > > Thanks in advance,
> > > > >
> > > > > Tim.
> > > > >
> > > > > --
> > > > > Dr. Timothy Stitt <timothy_dot_stitt_at_ichec.ie>
> > > > > HPC Application Consultant - ICHEC (www.ichec.ie)
> > > > >
> > > > > Dublin Institute for Advanced Studies
> > > > > 5 Merrion Square - Dublin 2 - Ireland
> > > > >
> > > > > +353-1-6621333 (tel) / +353-1-6621477 (fax) / +353-874195427 (mobile)
>
> --
> Dr. Timothy Stitt <timothy_dot_stitt_at_ichec.ie>
> HPC Application Consultant - ICHEC (www.ichec.ie)
>
> Dublin Institute for Advanced Studies
> 5 Merrion Square - Dublin 2 - Ireland
>
> +353-1-6621333 (tel) / +353-1-6621477 (fax) / +353-874195427 (mobile)
>
>


-- 
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




More information about the petsc-users mailing list