Bug#953116: [petsc-maint] 32 bit vs 64 bit PETSc

Drew Parsons dparsons at debian.org
Sun May 31 16:33:22 BST 2020


On 2020-05-27 22:00, Junchao Zhang wrote:
> On Wed, May 27, 2020 at 12:09 AM Drew Parsons <dparsons at debian.org>
> wrote:
> 
>> On 2020-05-24 10:01, Drew Parsons wrote:
>>> On 2020-05-23 23:45, Satish Balay wrote:
>>>> 
>>>> One more issue: Most externalpackages don't support
>> 64bit-indices.
>> ...
>>>> We haven't tried using MUMPS in this mode with PETSc
>>> 
>>> This will be the interesting test. I'll start with the 64-bit
>> build of
>>> MUMPS and see how tests hold up.
>> 
>> The PETSc mumps tests seem to be robust with respect to 64 bit.
>> (64 bit MUMPS in the form of -DPORD_INTSIZE64, not all-integer
>> -DINTSIZE64)
>> 
>> That is, 32 bit PETSc passes its tests with 64 bit (PORD) MUMPS
>> and 64 bit PETSc passes its tests with 32 bit MUMPS.
>> 
>> The test in question that's passing is src/snes/tutorials/ex19, run
>> with
>> 'make runex19_fieldsplit_mumps'
>> Perhaps it's not stress-testing 64 bit conditions.
> 
> Could you provide more details, e.g., the error stack trace?



Hi Junchao, PETSc's mumps test runs fine, there is no error to trace as 
such, just a diff with the reference output.

With 32-bit PETSc and 64-bit [PORD] MUMPS,

$ mpirun -n 2 ./ex19 -pc_type fieldsplit -pc_fieldsplit_block_size 4 
-pc_fieldsplit_type SCHUR -pc_fieldsplit_0_fields 0,1,2 
-pc_fieldsplit_1_fields 3 -fieldsplit_0_pc_type lu -fieldsplit_1_pc_type 
lu -snes_monitor_short -ksp_monitor_short  
-fieldsplit_0_pc_factor_mat_solver_type mumps 
-fieldsplit_1_pc_factor_mat_solver_type mumps

returns the result:

lid velocity = 0.0625, prandtl # = 1., grashof # = 1.
   0 SNES Function norm 0.239155
     0 KSP Residual norm 0.235858
     1 KSP Residual norm < 1.e-11
   1 SNES Function norm 6.81968e-05
     0 KSP Residual norm 2.30906e-05
     1 KSP Residual norm < 1.e-11
   2 SNES Function norm < 1.e-11
Number of SNES iterations = 2


where output/ex19_fieldsplit_5.out has

lid velocity = 0.0625, prandtl # = 1., grashof # = 1.
   0 SNES Function norm 0.239155
     0 KSP Residual norm 0.239155
     1 KSP Residual norm < 1.e-11
   1 SNES Function norm 6.81968e-05
     0 KSP Residual norm 6.81968e-05
     1 KSP Residual norm < 1.e-11
   2 SNES Function norm < 1.e-11
Number of SNES iterations = 2


So the diff in this case is

$make runex19_fieldsplit_mumps
3c3
<     0 KSP Residual norm 0.239155
---
>     0 KSP Residual norm 0.235858
6c6
<     0 KSP Residual norm 6.81968e-05
---
>     0 KSP Residual norm 2.30906e-05



More information about the debian-science-maintainers mailing list