Installation¶
Quick Start¶
Under Linux, or Mac OS X:
# Get latest development version from github
git clone https://github.com/NLAFET/SpLLT
# Move to source directory
cd SpLLT
# Create build directory
mkdir build
cd build
# Create Makefile with cmake command. The -DRUNTIME option can be
# used to select a runtime system.
cmake <path-to-source> -DRUNTIME=<StarPU|OMP|Parsec>
# Build SpLLT software
make
Third-party libraries¶
BLAS and LAPACK¶
The solver depends on high performance BLAS and LAPACK libraries to perform the dense linear algebra operations that are abundant in our kernels. For best performance, please use the library recommended by your computer manufacturer (normally the Intel MKL). If this is not available, use an optimized alternative, such as OpenBLAS. The reference BLAS and reference LAPACK libraries from netlib are at least an order of magnitude slower than modern optimized BLAS, and should be avoided. If bit-compatible results are desired, a bit-compatible BLAS library must be used.
The BLAS library can be passed to cmake using the LBLAS
variable and the LAPACK library can be passed using the
LLAPACK
variable as following:
cmake <path-to-source> -DLBLAS=/path/to/blas -DLLAPACK=/path/to/lapack
SPRAL¶
SPRAL is an open source (BSD) library for sparse linear algebra and associated algorithms. It can be downloaded directly from the SPRAL GitHub repository: https://github.com/ralna/spral.
Runtime system¶
In this package, we use a runtime system for handling the parallel
execution of the code. SpLLT currently supports three runtime systems
among OpenMP, StarPU and Parsec that can be set using the
RUNTIME
variable when running the cmake command. For
example, to compile the OpenMP version:
cmake <path-to-source> -DRUNTIME=OMP
For StarPU and Parsec runtime systems, it is possible to specify which
library to use for the compilation. For example, when building SpLLT
with StarPU, you can pass the StarPU directory using the
STARPU_DIR
variable:
cmake <path-to-source> -DRUNTIME=StarPU -DSTARPU_DIR=/path/to/StarPU
Compilers and compiler options¶
If no compiler is specified, cmake will pick a default compiler to use. If cmake cannot find an appropriate compiler, or you wish to specify a different compiler you can do so by setting the following variables:
- CC
- specifies the C compiler to use.
- FC
- specifies the Fortran 90/95/2003/2008 compiler to use.
- NVCC
- specifies the CUDA compiler to use.
Additionally, compiler flags can be specified using the following variables:
- CFLAGS
- specifies options passed to the C compiler.
- FCFLAGS
- specifies options passed to the Fortran compiler
- NVCCFLAGS
- specifies options passed to the CUDA compiler.
For example, to compile with ifort -g -O3 -ip
we could use:
FC=ifort FCFLAGS="-g -O3 -ip" cmake <path-to-source>
Support¶
Feeback may be sent to florent.lopez@stfc.ac.uk or by filing an issue on our github: https://github.com/NLAFET/SpLLT/issues.