[Openmp-commits] [PATCH] D14746: Add support for ompt_event_task_dependences and ompt_event_task_dependence_pair

Harald Servat via Openmp-commits openmp-commits at lists.llvm.org
Tue Nov 17 06:06:17 PST 2015

harald.servat created this revision.
harald.servat added reviewers: openmp-commits, llvm-commits, jmellorcrummey.

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



-------------- next part --------------
A non-text attachment was scrubbed...
Name: D14746.40391.patch
Type: text/x-patch
Size: 13540 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20151117/b8123983/attachment.bin>

More information about the Openmp-commits mailing list