XKRT is a macro-dataflow and tasking runtime system for automating memory management alongside parallel execution. It provides portable abstraction for C, C++, Julia and partial support for BLAS and OpenMP. Please see the XKRT and XKBlas repositories for more information.
This package is the Julia API of the XKRT environment.
It currently exposes the XK.BLAS module: a composable, performant and portable multi-GPU BLAS library.
Other modules are experimentals.
To use XK.jl, please refer to the documentation and examples
XK.jl must currently be installed manually, please use the following steps.
- Julia >= 1.11
- CMake >= 3.17
- LLVM/Clang >= 20 (required — earlier versions lack the C++20 support XKRT needs)
- hwloc library
- Edit the header of
deps/build_xkblas.jlto your convenience - Make sure CMake will use Clang >= 20, e.g.
export CC=clang-20 CXX=clang++-20(the build aborts early with a clear message if the compiler is too old) - Run
julia --project=./deps -e 'using Pkg; Pkg.instantiate(); include("./deps/build.jl")'
If the installation succeeded, this should run (the --project=. is required so
Julia can find the XK package):
julia --project=. examples/blas/gemm.jlYou can run exhaustive tests with
julia --project -e 'using Pkg; Pkg.test()'If you are look for any support, feel free to contact us directly.
Romain Pereira (rpereira@anl.gov), Michel Schanen (mschanen@anl.gov), Swann Perarnau (swann@anl.gov)
[1] Multi-GPU memory coherence for BLAS matrices. Romain Pereira, Pierre Etienne Polet, Swann Perarnau, Thierry Gautier. 40th IEEE International Parallel & Distributed Processing Symposium Workshops (IPDPSW, HIPS), New Orleans, USA.
[2] [UNDER REVIEW] XKRT: a Runtime System for Macro-Dataflow Programming on Multi-Devices Architectures. Romain Pereira, Swann Perarnau, Pierre-Etienne Polet, Brice Videau, Thomas Applencourt, Thierry Gautier.
[3] [UNDER REVIEW]: XK.jl: Composable and Portable Multi-GPU BLAS in Julia. Romain Pereira, Alexis Montoison, Michel Schanen, Swann Perarnau