HLR is available as open source under the LGPL license.
Currently, there are no official releases of HLR.
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.
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
bin/hlib-config to the directory where you have installed HLIBpro (this is standard
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
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.
Set compiler and compiler flags in the top section of the
Various options are available for
scons to alter the default set of programs or frameworks used
By default, all programs together with all frameworks are used. To limit both sets,
use the options
The available programs are automatically detected in the
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.
||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|
||seq, omp, tbb, tf, hpx, mpi, gpi2, cuda||comma separated list of frameworks to use|
|Installation Paths of external Libraries|
| ||installation path of HLIBpro|
| ||installation path of TBB|
| ||installation path of C++-TaskFlow|
| ||installation path of HPX|
| ||installation path of GPI-2|
| ||base directory of Intel MKL|
| ||base directory of CUDA|
| ||installation path of jemalloc|
| ||installation path of mimalloc|
| ||installation path of tcmalloc|
||default, system, jemalloc, mimalloc, tbbmalloc, tcmalloc||specify malloc library to use|
||0/1||use LikWid library|
||0/1||disable/enable optimisation options|
||0/1||disable/enable debug options|
||0/1||disable/enable full output of compiler call|
||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