[petsc-users] Customizeing MatSetValuesBlocked(...)

Satish Balay balay at mcs.anl.gov
Wed Aug 8 13:44:54 CDT 2012


First - can you confirm that you've preallocated the matrix correctly?

run with '-info' and look for 'mallocs' and make sure its zero.

The second cost is the data movement between processes. To speed this
up - try a few calls MatAssemblyBegin/End(MAT_FLUSH_ASSEMBLY).

i.e:

insert
<flush>
insert
<flush>
insert
<final-assembly>

Satish

On Wed, 8 Aug 2012, Jinquan Zhong wrote:

> Dear PETSc folks,
> 
> I have an emerging need to resolve the performance issue in building sparse matrix in PETSc.
> 
> I am are currently having some performance issues in building the sparse matrix in PETSc.  I am trying to input the inverted matrix from ScaLAPACK into PETSc.  This matrix is partitioned into series of submatrices with indices identified as block-cyclically distributed pattern.
> 
> Here are the options I have tested in PETSc to build them into PETSc and their limitations:
> 
> 
> 1.       MatSetValue(s)(...) is very easy to use.  However, the assembling process is extremely slow and expensive;
> 
> 2.       MatSetValuesBlocked(..) can speed up the assembly.  However, it is not well-fit for block-cyclically distributed matrices; and
> 
> 3.       MatCreateMPIAIJwithArrays(...) seems to be promising.  However, it is not straightforward to use for block-cyclically distributed matrices.
> 
> 4.       Customizeing MatSetValuesBlocked(...) such that we can specify the indices for (*mat->ops->setvaluesblocked)(...).  However, I have trouble to locate proper line for
> 
> mat->ops->setvaluesblocked=&unknownFunctionName
> 
> The question is what other options you have to resolve this performance issue? From your experience, do you guys have a worked example to build PETSc sparse matrix from block-cyclically distributed matrices obtained from ScaLAPACK with good performance?
> 
> I appreciate your inputs on this issue.
> 
> Thanks,
> 
> Jinquan
> 
> 



More information about the petsc-users mailing list