[petsc-users] MatAssembly Cost Jump

Ali Berk Kahraman aliberkkahraman at yahoo.com
Sat Mar 24 13:35:48 CDT 2018

Dear All,

I have a sequential algorithm to determine the nonzero structure of my 
Jacobian on my unstructured grid. The overall code goes like following,

1.Do other MPI stuff regarding the problem, irrelevant of this mail
2. If you are rank 0, set all of the nonzeros of the MPI Jacobian Matrix
3. MatAssemblyBegin/End, send the nonzero locations to other processes 
from rank 0

I have been testing the algorithm to see how long it takes on a 
structured grid for which I know the Jacobian non-zero structure. Here 
is where I have a question. For a square grid, 129x129 nodes making 
16641x16641 Jacobian Matrix, having 16641x13 nonzeros in it, step 2 
takes 1 second and step 3 takes 2 seconds. For a square grid, 257x257 
nodes making a 66049x66049 Jacobian matrix, having 66049x13 nonzeros in 
it, step 2 takes 9 seconds, step 3 takes around 50 seconds.

My question is, why does the time get multiplied by a factor of 25 while 
the data that should be transferred only quadruples in step 3. Is this 
expected behavior?

Best Regards,

Ali Berk Kahraman
M.Sc. Student, Mechanical Engineering
Boğaziçi Uni, Istanbul, Turkey

More information about the petsc-users mailing list