Add OpenMP runtime for codelets
Compare changes
GitLab upgrade completed. Current version is 17.10.3. We now benefit from the enhancements of 17.9 and 17.10 releases. Among other improvements, it is now possible to set the automatic deletion of continuous integration pipelines. You can help us reduce storage usage by setting an expiry date for your pipelines.
This is a placeholder for my ongoing work attempting to bring OpenMP as a backend runtime for Chameleon.
The current implementation for codelets uses dependent task
, the plan is also to add some target
version and see how it behaves wrt existing runtimes.
I've "openmp-ified" all codelets, though they have definitely not been extensively tested (or tested at all, for some).
OpenMP doesn't have a "runtime init" or "runtime finalize" as the other runtimes, so we need to put a #pragma omp parallel
/#pragma omp master
somewhere to create a team of threads that will execute our tasks.
The semantic around the parallel region has some constraints (such as no return
or jump outside the region from within the region), and I didn't find a great place so far for them yet, so currently it lies directly in the timing files (see timing/time_zpotrf_tile.c
for an example).
I'll focus on doing the first experiments on a small subsets of kernels, meanwhile feel free to give me feedback on this!