[petsc-users] calling both MatSeqAIJSetPreallocation and MatMPIAIJSetPreallocation

Matthew Knepley knepley at gmail.com
Mon Jan 11 15:38:39 CST 2021


On Mon, Jan 11, 2021 at 4:32 PM Sam Guo <sam.guo at cd-adapco.com> wrote:

> A follow up question: if I call preallocation, is there any
> performance difference between
>
> MatSetValues <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatSetValues.html#MatSetValues>(mat,1,&I,1,&J,&v,INSERT_VALUES <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/INSERT_VALUES.html#INSERT_VALUES>); // insert value one by one
>
> vs
>
> MatSetValues <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatSetValues.html#MatSetValues>(Mat <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/Mat.html#Mat> mat,PetscInt <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscInt.html#PetscInt> m,const PetscInt <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscInt.html#PetscInt> idxm[],PetscInt <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscInt.html#PetscInt> n,const PetscInt <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscInt.html#PetscInt> idxn[],const PetscScalar <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/PetscScalar.html#PetscScalar> v[],InsertMode <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/InsertMode.html#InsertMode> addv) // insert multiple values
>
> My input is triple arrays
>
> vector<int> r;
>
> vector<int> c;
>
> vector<double> a;
>
> where r/c are not sorted by rows/cols. I don't want to waste memory/time to create idxm/idxn unless there is a performance penalty.
>
>
It is cheaper to insert many values than sequences of single values.
However, allocating memory is much much more expensive. As with most
performance questions, there is no substitute for experiments.

  Thanks,

     Matt


> Thanks,
>
> Sam
>
>
>
> On Mon, Jan 11, 2021 at 12:27 PM Sam Guo <sam.guo at cd-adapco.com> wrote:
>
>> Thanks!
>>
>> On Mon, Jan 11, 2021 at 12:25 PM Matthew Knepley <knepley at gmail.com>
>> wrote:
>>
>>> On Mon, Jan 11, 2021 at 3:00 PM Sam Guo <sam.guo at cd-adapco.com> wrote:
>>>
>>>> Dear PETSc Dev Team,
>>>>    The documentation recommends calling  both of the above
>>>> preallocation routines for simplicity. Do we waste memory by calling both?
>>>>
>>>
>>> No. Only one will function, depending on the matrix type.
>>>
>>>   Thanks,
>>>
>>>      Matt
>>>
>>>
>>>> Thanks,
>>>> Sam
>>>> MATAIJMATAIJ
>>>> <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MATAIJ.html#MATAIJ> =
>>>> "aij" - A matrix type to be used for sparse matrices. This matrix type is
>>>> identical to MATSEQAIJ
>>>> <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MATSEQAIJ.html#MATSEQAIJ> when
>>>> constructed with a single process communicator, and MATMPIAIJ
>>>> <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MATMPIAIJ.html#MATMPIAIJ> otherwise.
>>>> As a result, for single process communicators,
>>>> MatSeqAIJSetPreallocation
>>>> <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatSeqAIJSetPreallocation.html#MatSeqAIJSetPreallocation> is
>>>> supported, and similarly MatMPIAIJSetPreallocation
>>>> <https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatMPIAIJSetPreallocation.html#MatMPIAIJSetPreallocation>()
>>>> is supported for communicators controlling multiple processes. It is
>>>> recommended that you call both of the above preallocation routines for
>>>> simplicity.
>>>>
>>>
>>>
>>> --
>>> 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
>>>
>>> https://www.cse.buffalo.edu/~knepley/
>>> <http://www.cse.buffalo.edu/~knepley/>
>>>
>>

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

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20210111/69ed62c8/attachment.html>


More information about the petsc-users mailing list