Fande,
Checking aij.result:
Mat Object: () 1 MPI processes
          type: seqaij
          rows=25816, cols=25816, bs=4
          total: nonzeros=1297664, allocated nonzeros=1297664
          total number of mallocs used during MatSetValues calls=0
            using I-node routines: found 6454 nodes, limit used is 5

i.e., it uses bs=4 with I-node. The implementation of MatSolve() is similar to 
baij with bs=4. What happens if you try aij with '-matload_block_size 1 
-mat_no_inode true'?
Hong

________________________________
From: petsc-users <petsc-users-boun...@mcs.anl.gov> on behalf of Fande Kong 
<fdkong...@gmail.com>
Sent: Monday, March 30, 2020 12:25 PM
To: PETSc users list <petsc-users@mcs.anl.gov>
Subject: [petsc-users] AIJ vs BAIJ when using ILU factorization

Hi All,

There is a system of equations arising from the discretization of 3D 
incompressible Navier-Stoke equations using a finite element method. 4 unknowns 
are placed on each mesh point, and then there is a 4x4 saddle point block on 
each mesh vertex.  I was thinking to solve the linear equations using an 
incomplete LU factorization (that will be eventually used as a subdomain solver 
for ASM).

Right now, I am trying to study the ILU performance using AIJ and BAIJ, 
respectively. From my understanding, BAIJ should give me better results since 
it inverses the 4x4 blocks exactly, while AIJ does not. However, I found that 
both BAIJ and AIJ gave me identical results in terms of the number of 
iterations.  Was that just coincident?  Or in theory, they are just identical.  
I understand the runtimes may be different because BAIJ has a better data 
locality.


Please see the attached files for the results and solver configuration.


Thanks,

Fande,

Reply via email to