SyLVER is a sparse direct solver for symmetric systems which may be either positive-definite or indefinite.
The implementation uses DAG-based algorithms that enable an efficient exploitation of multicore CPU architectures and GPU-accelerated systems. The parallel implementation relies on the StarPU runtime system developed and maintained by the STORM team at Inria Bordeaux Sud-Ouest.
The code has been developed in the context of the EU H2020 NLAFET project.
The compilation of the code is handled by the CMake tools. For example, the compilation can be achieved as follow:
mkdir build # create build directory cd build cmake <path-to-source> -D SYLVER_RUNTIME=StarPU -D SYLVER_ENABLE_CUDA=ON # configure compilation make # run compilation
SPRAL is an open-source library for sparse linear algebra and associated algorithm and has several important features used in SyLVER. The latest release of SPRAL can be found on its GitHub repository.
SPRAL is automatically built during the compilation of SyLVER. See documentation if you wish to use your own version of SPRAL for building SyLVER.
The MeTiS partitioning library is needed by the SPRAL library and therefore, needed when linking the SyLVER package for building examples and test drivers.
When compiling SyLVER you can provide the path to the MeTiS library
-D METIS_DIR CMake option or the
The hwloc library is
topology discovery library which is necessary for linking the examples
and test drivers if SPRAL was compiled with it. In this case, the
library path can be given to CMake using either the
CMake option or the
HWLOC_DIR environment variable.
-DSYLVER_RUNTIME=StarPU enables the compilation of the parallel
version of SyLVER using StarPU runtime
system. In this case the StarPU
version needs to be at least 1.3.0. The StarPU library is found with
FindSTARPU.cmake script located in the
directory. Note that, for this script to be able to find the StarPU
library, you need to set the environment variable
STARPU_DIR to the
path of you StarPU install base directory.
By default, CMake will configure the compilation for a parallel
version of SyLVER using StarPU. The sequential version can be compiled
using the option
BLAS and LAPACK
The BLAS and LAPACK libraries play an important role in the performance of the solver. We recommend using the MKL library for best performance on Intel machines and the ESSL library when running on IBM machines. Alternative BLAS and LAPACK libraries include OpenBLAS. Note that SyLVER should be linked against the sequential BLAS and LAPACK libraries.
cmake <path-to-source> -D BLA_VENDOR=Intel10_64lp_seq # configure compilation
selects and locates the sequential BLAS and LAPACK implementation for the compilation and when linking test drivers, example and tests.
If CMake is unable to locate the requested libraries via the
-D BLA_VENDOR, it is still possible to give them explicitly using the
-D LLBAS and
-D LLAPACK options. For example:
cmake <path-to-source> -D LBLAS="-L/path/to/blas -lblas" -D LLAPACK="-L/path/to/lapack -llapack" # configure compilation