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)
