An experimental OpenMP runtime-library implementation built on top of the XKaapi runtime system, and an extended LLVM's Clang ABI.
You must have an installation of
Example of LLVM build
cmake ../llvm -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ENABLE_RUNTIMES="openmp;offload" -DLLVM_TARGETS_TO_BUILD="NVPTX;X86" -DCMAKE_INSTALL_PREFIX=~/install/llvm/debug
Example of XKOMP build
cmake -DCMAKE_BUILD_TYPE=Debug ../
Example of application build
xkcc main.c -o main
- Pass
-fopenmp-task-jit-type=[pointers|packed]toxkcxxso that the LLVM-IR/PTX of tasks/targets is kept after compile-time, and passed to the XKOMP runtime for JIT during taskgraph optimizations. Withpointers, all arguments (firstprivate, shared, etc.) are stored in avoid ** argsarray, referenced within the outlined region. Withpacked, they are packed in avoid * args, size_t sizecompact structure. - The
OMP_TASKGRAPH_OPT=opt1,opt2,...,optncan be used to enabletaskgraphoptimizations. Available optimizations are:reduce-edge,reduce-node,batch,prog-fuse,jit,copy-normalize,copy-fuse,sequence
XKRT is a fork of XKaapi, that it extended with support for task dependencies over intersecting regions of memory (https://gitlab.inria.fr/xkaapi/dev-v2) This repo is a prototype implementation of OpenMP, with partial support for taskgraphs (6.0) and extensions for dataflow, on top of XKRT.
A previous implementation of OpenMP on top of XKaapi is available here: