Aller au contenu. | Aller à la navigation

Laboratoire d’Etudes en Géophysique et Océanographie Spatiales

Outils personnels

This is SunRain Plone Theme



Par ECOLA Dernière modification 09/12/2016 11:40

Main contributors:

Cyril Nguyen :

Florent Lyard:

Damien Allain :


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 :
    • CXsparse
    • MUMPS
    • UMFPACK (OpenMP optimisation through BLAS)
    • PASTIX (OpenMP native optimisation) DO NOT USE pastix_release_3725 !
  • parallel (MPI)
    • MUMPS
    • HIPS





poc-solvers sources and configuration files are available through the Mercurial depot at 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.

Mandatory pre-requisite

blas, lapack

Optional pre-requisite

 suite-sparse, pastix

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 .

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


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


Useful websites:

SuiteSparse (provides UMFPACK, CXsparse, etc...)





Actions sur le document