Cyril Nguyen : firstname.lastname@example.org
Florent Lyard: email@example.com
Damien Allain : firstname.lastname@example.org
poc-solvers is an interface to the most recent linear system solvers, with a special interest for sparse matrix solvers. It allows for including standardized solver request inside codes, thus avoid endless copies of libraries handling routines. It contains a standalone solver (so it can function without additional libraries) that is a copy of CXsparse. Sources management is based on Mercurial distributed version control system.
To integrate more solvers, the package must be downloaded from solver's home pages, and Makefile needs to be modified to activate (as well to de-activate if wished so) a given solver by changing a single flag from NO to YES.
It integrates the following solvers:
- sequential :
- UMFPACK (OpenMP optimisation through BLAS)
- PASTIX (OpenMP native optimisation) DO NOT USE pastix_release_3725 !
- parallel (MPI)
poc-solvers sources and configuration files are available through the Mercurial depot at https://hg.legos.obs-mip.fr/poc-solvers. See foolowing instructions for installation and compiling.
Instruction for poc-solvers installation
poc-solvers comes with a built-in linear solver (cxsparse) but it is preferable to install more efficient sparse matrix solvers for heavy computational applications.
Instructions for depot installation and update
At first installation, you need to clone the depot by using in a local directory:
poc-solvers-depot> hg clone https://hg.legos.obs-mip.fr/poc-solvers .
cmake suite is necessary to install the local depot. First create a compilation directory (cmade in our tutorial) and edit src/CMakeLists.txt to select available linear solvers (previously installed on your computer). At the head of the file you will find a series of set instructions, and choose YES or NO to actually includes the various solvers listed :
set(STATIC NO CACHE BOOL "Set to YES to have a static library. Disables PASTIX.")
set(HIPS NO CACHE BOOL "Set to YES to auto-detect HIPS. If found, it will enable MPI.")
set(ARPACK YES CACHE BOOL "Set to YES to auto-detect ARPACK.")
set(PARPACK YES CACHE BOOL "Set to YES to auto-detect PARPACK. If found, it will enable MPI.")
set(PASTIX YES CACHE BOOL "Set to YES to enable PASTIX. If it can not find it or if PASTIX is disabled, it will enable UMFPACK instead. PASTIX may enable MPI.")
set(MUMPS YES CACHE BOOL "Set to YES to enable MUMPS. It will enable MPI.")
set(MPI NO CACHE BOOL "Set to YES to enable MPI. Enabled by MUMPS anyway.")
set(UMFPACK YES CACHE BOOL "Set to YES to enable UMFPACK. Needed by TUGO. It will enable LAPACK.")
set(LAPACK YES CACHE BOOL "Set to YES to enable LAPACK. Enabled by UMFPACK anyway.")
Save the modifications if any. Then generate the poc-solvers Makefile by executing :
poc-solvers-depot/cmade> cmake ../src
Latter on, you can follow poc-solvers developments and fixing by routinely updating the depot:
poc-solvers-depot> hg pull https://hg.legos.obs-mip.fr/poc-solvers
poc-solvers-depot> hg update
After depot update, you will need to re-compile (see next section).
Instructions for compiling
poc-solvers-depot/cmade> make install
SuiteSparse (provides UMFPACK, CXsparse, etc...)