Installation¶
Download¶
HLR is available as open source under the LGPL license.
Releases¶
Currently, there are no official releases of HLR.
Repository¶
Source code for HLR is available from the official repository via
git clone https://gitlab.mis.mpg.de/rok/hlr
Please note, that only the default branch is considered stable, e.g., most example programs will run. However, since HLR is still under heavy development, API changes should be expected.
Prerequisites¶
A C++17 compiler is needed for compiling HLR (some code may require C++20 compatibility). This is also a prerequisite for some of the parallelization frameworks. HLR is tested with GCC version ≥ 9, and Clang version ≥ 10. Recommended is at least GCC-10.
Download HLIBpro, unpack and set the prefix
variable in
the file bin/hlib-config
to the directory where you have installed HLIBpro (this is standard
HLIBpro installation).
Alternatively, you may install HLIBcore, which contains the basic definitions (classes, functions, etc.), for HLR to compile and run.
Install all wanted frameworks according to the corresponding installation instructions. Please note, that if no framework is available, HLR can still be used in sequential mode.
For MPI, it is assumed that at least MPI_THREAD_SERIALIZED
is supported (optimal is MPI_THREAD_MULTIPLE
).
For compilation, the scons
make replacement is needed.
Optionally, you may install one of the supported malloc libraries (jemalloc, mimalloc, tbbmalloc and tcmalloc). I recommend to use jemalloc.
Compilation¶
Set compiler and compiler flags in the top section of the SConstruct
file.
Various options are available for scons
to alter the default set of programs or frameworks used
during compilation.
By default, all programs together with all frameworks are used. To limit both sets,
use the options programs
and frameworks
The available programs are automatically detected in the programs
subdirectory. For this, the naming scheme programname-framework.cc, e.g., dag-lu-tbb.cc
with dag-lu being the program and tbb the framework, is assumed with the latter being
one of the supported frameworks.
Option | Values | Description |
---|---|---|
programs |
tlr, hodlr, tileh, tiled-h, tiled-hca, tiled-hodlr, dag-lu, dag-gauss, dag-inv, dag-waz, dag-hodlr, uniform, uniform-mm, uniform-lu, approx-mm, approx-lu, dpt, polykern, cuda | comma separated list of programs to build |
frameworks |
seq, omp, tbb, tf, hpx, mpi, gpi2, cuda | comma separated list of frameworks to use |
Installation Paths of external Libraries | ||
hpro | installation path of HLIBpro | |
tbb | installation path of TBB | |
tf | installation path of C++-TaskFlow | |
hpx | installation path of HPX | |
gpi2 | installation path of GPI-2 | |
mkl | base directory of Intel MKL | |
cuda | base directory of CUDA | |
jemalloc | installation path of jemalloc | |
mimalloc | installation path of mimalloc | |
tcmalloc | installation path of tcmalloc | |
Compilation Options | ||
malloc |
default, system, jemalloc, mimalloc, tbbmalloc, tcmalloc | specify malloc library to use |
likwid |
0/1 | use LikWid library |
optimise |
0/1 | disable/enable optimisation options |
debug |
0/1 | disable/enable debug options |
fullmsg |
0/1 | disable/enable full output of compiler call |
color |
0/1 | disable/enable colorized compilation output |
An example for the options:
scons debug=1 programs=dag-lu,tlr frameworks=seq,tbb,hpx hpro=/home/user/hlibcore
The chosen options are saved. To recompile with the same options, you just need to enter
scons