[petsc-users] parallelize matrix assembly process

Mark Adams mfadams at lbl.gov
Mon Dec 12 07:24:18 CST 2022


Hi Hyung,

First, verify that you are preallocating correctly.
Run with '-info' and grep on "alloc" in the large output that you get.
You will see lines like "number of mallocs in assembly: 0". You want 0.
Do this with one processor and the 8.

I don't understand your loop. You are iterating over vertices. You want to
iterate over elements.

Mark



On Mon, Dec 12, 2022 at 6:16 AM 김성익 <ksi2443 at gmail.com> wrote:

> Hello,
>
>
> I need some keyword or some examples for parallelizing matrix assemble
> process.
>
> My current state is as below.
> - Finite element analysis code for Structural mechanics.
> - problem size : 3D solid hexa element (number of elements : 125,000),
> number of degree of freedom : 397,953
> - Matrix type : seqaij, matrix set preallocation by using
> MatSeqAIJSetPreallocation
> - Matrix assemble time by using 1 core : 120 sec
>    for (int i=0; i<125000; i++) {
>     ~~ element matrix calculation}
>    matassemblybegin
>    matassemblyend
> - Matrix assemble time by using 8 core : 70,234sec
>   int start, end;
>   VecGetOwnershipRange( element_vec, &start, &end);
>   for (int i=start; i<end; i++){
>    ~~ element matrix calculation
>    matassemblybegin
>    matassemblyend
>
>
> As you see the state, the parallel case spent a lot of time than
> sequential case..
> How can I speed up in this case?
> Can I get some keyword or examples for parallelizing assembly of matrix in
> finite element analysis ?
>
> Thanks,
> Hyung Kim
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20221212/563d021f/attachment.html>


More information about the petsc-users mailing list