llvm-project/openmp
Jonas Hahnfeld 39b6862482 [OMPT] Add support for ompt_event_task_dependences and ompt_event_task_dependence_pair
The attached patch adds support for ompt_event_task_dependences and
ompt_event_task_dependence_pair events from the OMPT specification [1]. These
events only apply to OpenMP 4.0 and 4.1 (aka 4.5) because task dependencies
were introduced in 4.0.

With respect to the changes:

ompt_event_task_dependences
According to the specification, this event is raised after the task has been
created, thefore this event needs to be raised after ompt_event_task_begin
(in __kmp_task_start). However, the dependencies are known at
__kmpc_omp_task_with_deps which occurs before __kmp_task_start. My modifications
extend the ompt_task_info_t struct in order to store the dependencies of the
task when _kmpc_omp_task_with_deps occurs and then they are emitted in
__kmp_task_start just after raising the ompt_event_task_begin. The deps field
is allocated and valid until the event is raised and it is freed and set
to null afterwards.

ompt_event_task_dependence_pair
The processing of the dependences (i.e. checking whenever a dependence is
already satisfied) is done within __kmp_process_deps. That function checks
every dependence and calls the __kmp_track_dependence routine which gives some
support for graphical output. I used that routine to emit the dependence pair
but I also needed to know the sink_task. Despite the fact that the code within
KMP_SUPPORT_GRAPH_OUTPUT refers to task_sink it may be null because
sink->dn.task (there's a comment regarding this) and in fact it does not point
to a proper pointer value because the value is set in node->dn.task = task;
after the __kmp_process_deps calls in __kmp_check_deps. I have extended the
__kmp_process_deps and __kmp_track_dependence parameter list to receive the
sink_task.

[1] https://github.com/OpenMPToolsInterface/OMPT-Technical-Report/blob/target/ompt-tr.pdf

Patch by Harald Servat
Differential Revision: http://reviews.llvm.org/D14746

llvm-svn: 259038
2016-01-28 10:39:52 +00:00
..
offload Liboffload: Patch for MPSS > 3.4.x (provided by Tim Cramer) 2015-05-06 10:58:40 +00:00
runtime [OMPT] Add support for ompt_event_task_dependences and ompt_event_task_dependence_pair 2016-01-28 10:39:52 +00:00
testsuite Apply name change to testsuite file. 2015-06-01 04:24:23 +00:00
www Update Reference.pdf files. 2015-09-23 18:09:47 +00:00
CMakeLists.txt Integrate libiomp CMake into LLVM CMake build system. 2015-05-05 20:02:52 +00:00
CREDITS.txt This patch contains the new files for OMPT and the needed changes to the build infrastructure 2015-04-29 16:22:07 +00:00
LICENSE.txt updated copyright date to 2015 2015-04-16 11:10:17 +00:00