as you might know, OpenMP 5.0 will include a tools interface (OMPT).
An early prototype implementation of OMPT is already available in the LLVM-openmp runtime. But the specification of OMPT evolved quite a lot since this prototype implementation.
Although it will take another year to release the final version of the OpenMP 5.0 specification, we started to update the OMPT implementation. The latest published version of OMPT spec is part of the OpenMP 5.0 preview 1 document:
To get an overview of the changes in the runtime, please have a look on this diff against master:
The OpenMP tools working group was active since the TR4 document, and OMPT evolved further. Although the branch is called towards_tr4, we are actually implementing the latest internal specification or OMPT.
About half of the deletions come from the removed ompt.h in include/30-45. Since OMPT is part of 5.0, from our perspective it makes sense to only include OMPT in version 5.0 builds.
More then half of the additions come from OMPT specific tests.
This mail is to let you know, that we are about to land in the near future, and to discuss on how to proceed with the review process. Should I create a single big Differential in Phabricator, or what would you suggest?
patches would result in inconsistent implementation stages. At least in stages that would not pass the tests, without modifying the tests on the way.
Since OMPT is integral part of OpenMP 5.0, I suggest to enable OMPT by default for 5.0 builds.
There are 2 open issues, we will not address with this patch:
- Anything target/device-related (callbacks/functions) is developed in different repositories. Also, this mainly changes libomptarget and not the runtime code.
- To enable the runtime to differentiate sections from static loops, compiler support will be needed; it will need a separate discussion on how to approach this issue
I'm looking forward to your feedback.