[petsc-users] re. AIJ preallocation man page

Karl Rupp rupp at iue.tuwien.ac.at
Mon May 23 06:39:14 CDT 2016


Hi Marco,

 > I'm struggling with this statement:
>
> "It is recommended that you call both of the above preallocation
> routines [MatSeqAIJSetPreallocation and MatMPIAIJSetPreallocation] for
> simplicity."
>
> (source: https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MATAIJ.html
> )
>
> I saw that, even on a single-processor communicator,
> MatMPIAIJSetPreallocation works fine (at least, it gives no errors,
> but I don't know about efficiency drops).
> What's the effect of the recommended double preallocation?

It allows you to quickly switch between a serial run and a parallel run. 
If something doesn't work as expected, it's much easier to debug (if 
possible) on a single rank, hence MatSeqAIJSetPreallocation. However, 
ultimately you are looking for parallel runs, for which you need 
MatMPIAIJSetPreallocation. Changing your code back and forth is 
non-productive, hence it's recommended to call both and you get full 
flexibility :-)

Best regards,
Karli


More information about the petsc-users mailing list