HIPS
Hierarchical Iterative Parallel Solver

Documentation 

How to run the hips test program

In TESTS/PARALLEL you should find an executable testHIPS.ex. The path of the matrix you want to try as well as some parameters must be set in the file Inputs which is in the same directory. Once you have set the parameters you want to test in Inputs; you can run HIPS like in this example (mpich with 16 processors) : mpirun -np 16 ./testHIPS.ex <domsize> where <domsize> is an integer that indicates which size of interior domain you would like to use. The <domsize> parameter should be small enough to create at least one domain per processor, otherwise the program will end with an error message. This parameter is optional in the case you choose the ``ITERATIVE'' (full iterative) strategy in the Inputs parameter file (see next subsection for details).

Input parameters of the test program

The test program testHIPS.ex read the input parameters in the file ``Inputs''. Here is a description of the Inputs file :

Example of an ``Inputs'' file for the hybrid method :

../MATRICES/bcsstk16.rsa   #0#  Matrix name and driver
2                          #1#  0=unsymmetric pattern, 1=symmetric pattern, 2=symmetric matrix in RSA
0                          #2#  RHS file name (0=make a rhs (sol = [1]))
HYBRID                     #3#  Method (HYBRID, ITERATIVE)
1e-7                       #4#  Relative residual norm
ALL                        #5#  Fill-in : Strictly=0, Locally=ALL
100                        #6#  GMRES maximum iteration
100                        #7#  GMRES restart
0.00                       #8#  Numerical threshold in ILUT for interior domain
0.001                      #9#  Numerical threshold in ILUT for the interface
0.001                      #10# Numerical threshold for coupling between the interior level and Schur
5                          #11# Verbose level [0-4] (the higher the more it prints informations)

Important note for ``HYBRID'' method :

  • you must set the parameter #8# to 0 (it means that an exact factorization is used for the interior domain matrix);
  • the domsize parameter of ``testHIPS.ex'' is a domain average size ; it should be sufficiently small to ensure that at least one per processor can be created (the program will stop if it is not the case).

Example of an ``Inputs'' file for the full ITERATIVE method :

../MATRICES/bcsstk16.rsa   #0#  Matrix name and driver
2                          #1#  0=unsymmetric pattern, 1=symmetric pattern, 2=symmetric matrix in RSA
0                          #2#  RHS file name (0=make a rhs (sol = [1]))
ITERATIVE                  #3#  Method (HYBRID, ITERATIVE)
1e-7                       #4#  Relative residual norm
ALL                        #5#  Fill-in : Strictly=0, Locally=ALL
100                        #6#  GMRES maximum iteration
100                        #7#  GMRES restart
0.001                      #8#  Numerical threshold in ILUT for interior domain
0.001                      #9#  Numerical threshold in ILUT for the interface
0.001                      #10# Numerical threshold for coupling between the interior level and Schur
5                          #11# Verbose level [0-4] (the higher the more it prints informations)
Important note for ``ITERATIVE'' method :
  • it is better to set the parameter #8# a threshold value greater than 0 ;
  • in the case of the full ``ITERATIVE'' strategy when no argument is given to testHIPS.ex, the parallelization scheme use one domain per processor. mpirun -np 16 ./testHIPS.ex

Example to read an unsymmetric matrix in Harwell boeing format (RUA) : If you are sure that the matrix non zero pattern is symmetric you can set the parameter #1# to 1. If it is not the case (or you are not sure) set this parameter to 0 : it will symmetrize the matrix non-zero pattern.

../MATRICES/orsirr_1.rua   #0#  Matrix name and driver
0                          #1#  0=unsymmetric pattern, 1=symmetric pattern, 2=symmetric matrix in RSA

Example to read a symmetric complex matrix in matrix market format (require to compile the complex version of HIPS) :

3../MATRICES/young4c_.mtx   #0#  Matrix name and driver
2                          #1#  0=unsymmetric pattern, 1=symmetric pattern, 2=symmetric matrix in RSA

Example to use a right hand side member : you must write in a file the values of the right hand side in natural order that is to say the original numbering of the matrix in inputs ; the $ i^{th}$ line of the file contains only one entry that is the value of the $ i^{th}$ component of the rhs.

./rhs                      #2#  RHS file name (0=make a rhs (sol = [1]))