Personal tools
You are here: Home openCMISS Wiki Running Libmesh examples on Bioeng22
Views
Technical committee meetings >> Minutes 19 June 2006 >> OpenCMISS/libMesh Development Notes >>

Running Libmesh examples on Bioeng22

last edited 2 years ago by taus007
  • Change directories to examples and either (1) type make run or (2) cd to a specific example (e.g. cg ex4) and then type make run.
    • Problems with Parallel Runs
    • Example 4 works for 1 or 2 processors.

    But it fails for 3 or 4 processors with the following messages::

    ** On entry to DGEMV parameter number 6 had an illegal value

and the program then pauses. Others have had similar problems on Debian (see this message and this message).

Changing the solver with the command line option -ksp_type cg makes the example run fine for 1 to 4 processors.

This suggests that the problem is in Ubuntu's libpetsc2.2.0 2.2.0-4. The example runs fine for 1 to 4 processors with petsc 2.3.1_p13 on a i686 system.

Travis compiled using Recommended Configuration and then reran this example. I observed that the problem described by Karl above only occurs for the 3D problem and only for n < 9. The example uses n=6 and fails. If you run with n=10 or greater then it works. Note that this is for the default GMRES solver.

  • Example 14 fails at Solve 3 with the same message as above.

    With -ksp_type cg, it runs fine for 1 to 3 processors, but for 4 processors, sometimes mpich reports::

    p0_6750: p4_error: Child process exited while making connection to remote process on localhost: 0

and sometimes petsc reports a SIGSEGV. Note that I (Travis) have observed this occuring for 3 processors too. My recent observation is that ex14 only has 3 elements which is why it fails for 4 processors. So in general this example works fine.

PETSc 2.3.1_p13 is similar. With 1 process on Solve 2:

            [0]PETSC ERROR: MatLUFactorNumeric_Inode() line 1425 in src/mat/impls/csr/inode/inode.c
            [0]PETSC ERROR: Detected zero pivot in LU factorization
            see http://www.mcs.anl.gov/petsc/petsc-as/documentation/troubleshooting.html#ZeroPivot!
            [0]PETSC ERROR: Zero pivot row 100 value 1 tolerance 1e-12 * rs 3.68356e+28 inode.size 2!
            [0]PETSC ERROR: MatLUFactorNumeric() line 2212 in src/mat/interface/matrix.c
            [0]PETSC ERROR: PCSetUp_ILU() line 551 in src/ksp/pc/impls/factor/ilu/ilu.c
            [0]PETSC ERROR: PCSetUp() line 798 in src/ksp/pc/interface/precon.c
            [0]PETSC ERROR: KSPSetUp() line 234 in src/ksp/ksp/interface/itfunc.c
            [0]PETSC ERROR: KSPSolve() line 334 in src/ksp/ksp/interface/itfunc.c
            [0]PETSC ERROR: User provided function() line 288 in unknowndirectory/src/numerics/petsc_linear_solver.C

Changing the preconditioner with the command line option -pc_type jacobi is a workaround. With this option the example ran for 1 to 3 processes, but had a SIGSEGV for 4 processes. Again, problem is that there are only 3 elements and libMesh does not gracefully take care of case that you have more elements than processors.