Add OpenMP runtime for codelets
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!
Merge request reports
Activity
Philippe Virouleau, le ven. 10 août 2018 09:54:12 +0200, a ecrit:
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 guess we could make them runtime-provided macros then.
Thanks @viroulea !
We indeed need to think further about this init/finalize issue.
Don't know if it is quick to add it to all timing routines until we find a more robust solution so that we can test all the routines?
- Resolved by Philippe Virouleau
added 28 commits
Toggle commit list- Resolved by Mathieu Faverge
added 64 commits
-
a7384302...55938b98 - 58 commits from branch
solverstack:master
- af6dd0d8 - Add OpenMP in codelets
- c65cc982 - add more params into xp output
- 35353a96 - Cleanup
- 33dd497c - Fix semi colon messing up with pragma
- 8f68e367 - Various fixes for QR.
- b12f1fa0 - Merge branch 'feature-openmp' of gitlab.inria.fr:viroulea/chameleon into feature-openmp
Toggle commit list-
a7384302...55938b98 - 58 commits from branch
@viroulea Thanks for your effort to pass all tests. For me, it is now ready for integration. Green light.
- Resolved by Philippe Virouleau
- Resolved by Mathieu Faverge
- Resolved by Philippe Virouleau
mentioned in merge request !131 (merged)
added 14 commits
-
7923a202...a4a509da - 4 commits from branch
solverstack:master
- 819df649 - Add OpenMP in codelets
- 3a8e7b03 - add more params into xp output
- eebb7320 - Cleanup
- 5a2d5f05 - Fix semi colon messing up with pragma
- b710c04e - Various fixes for QR.
- e9b8dd62 - fix syrk2k
- e9435e0f - Enable CI for OpenMP
- d30ee0e7 - Fix CI
- 48aa6f27 - Use VLA instead of malloc for scratch
- 8da6b5f8 - Reviews
Toggle commit list-
7923a202...a4a509da - 4 commits from branch
mentioned in issue #67 (closed)
added 3 commits
@faverge I've just fixed the last tests after our modifications from yesterday.
Everything's green now!
- Resolved by Philippe Virouleau
added 17 commits
-
4b20960f...1f74f316 - 2 commits from branch
solverstack:master
- 835fd102 - Add OpenMP in codelets
- 658637a0 - add more params into xp output
- 8755a160 - Cleanup
- b78fbfdd - Fix semi colon messing up with pragma
- 2c0e3003 - Various fixes for QR.
- e6282e91 - fix syrk2k
- 2f0e695e - Enable CI for OpenMP
- beadac2a - Fix CI
- 5ca2d21c - Use VLA instead of malloc for scratch
- 6b897cb1 - Reviews
- f28af593 - Adjust macros for Fortran
- 28d05b39 - Cleanup codelets
- 8cd3a86f - Fix doc
- 4f60cf7c - Fix CI
- 195a1bf8 - Final fixes to make tests pass
Toggle commit list-
4b20960f...1f74f316 - 2 commits from branch
mentioned in commit 5dc364ef