diff options
author | Joachim Protze <protze@itc.rwth-aachen.de> | 2019-05-20 14:21:36 +0000 |
---|---|---|
committer | Joachim Protze <protze@itc.rwth-aachen.de> | 2019-05-20 14:21:36 +0000 |
commit | 48b8a4b5190d94a8ab2d2f28eb42e2f15f61ef3f (patch) | |
tree | 39d93dc7ee1a9162f2afc61e179b8a631378502a /openmp/runtime/src/kmp_runtime.cpp | |
parent | 7c8ec1896470f2010a0b78c546d303def912aa1e (diff) | |
download | bcm5719-llvm-48b8a4b5190d94a8ab2d2f28eb42e2f15f61ef3f.tar.gz bcm5719-llvm-48b8a4b5190d94a8ab2d2f28eb42e2f15f61ef3f.zip |
[OMPT] Handling of the events of initial-task-begin and initial-task-end
OpenMP 5.0 says that the callback for the events initial-task-begin and
initial-task-end has to be ompt_callback_implicit_task.
Patch by Tim Cramer
Differential Revision: https://reviews.llvm.org/D58776
llvm-svn: 361157
Diffstat (limited to 'openmp/runtime/src/kmp_runtime.cpp')
-rw-r--r-- | openmp/runtime/src/kmp_runtime.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/openmp/runtime/src/kmp_runtime.cpp b/openmp/runtime/src/kmp_runtime.cpp index fcf8803f0a1..7da7f089884 100644 --- a/openmp/runtime/src/kmp_runtime.cpp +++ b/openmp/runtime/src/kmp_runtime.cpp @@ -3897,11 +3897,11 @@ int __kmp_register_root(int initial_thread) { ompt_thread_initial, __ompt_get_thread_data_internal()); } ompt_data_t *task_data; - __ompt_get_task_info_internal(0, NULL, &task_data, NULL, NULL, NULL); - if (ompt_enabled.ompt_callback_task_create) { - ompt_callbacks.ompt_callback(ompt_callback_task_create)( - NULL, NULL, task_data, ompt_task_initial, 0, NULL); - // initial task has nothing to return to + ompt_data_t *parallel_data; + __ompt_get_task_info_internal(0, NULL, &task_data, NULL, ¶llel_data, NULL); + if (ompt_enabled.ompt_callback_implicit_task) { + ompt_callbacks.ompt_callback(ompt_callback_implicit_task)( + ompt_scope_begin, parallel_data, task_data, 1, 1, ompt_task_initial); } ompt_set_thread_state(root_thread, ompt_state_work_serial); @@ -3991,6 +3991,13 @@ static int __kmp_reset_root(int gtid, kmp_root_t *root) { #endif /* KMP_OS_WINDOWS */ #if OMPT_SUPPORT + ompt_data_t *task_data; + ompt_data_t *parallel_data; + __ompt_get_task_info_internal(0, NULL, &task_data, NULL, ¶llel_data, NULL); + if (ompt_enabled.ompt_callback_implicit_task) { + ompt_callbacks.ompt_callback(ompt_callback_implicit_task)( + ompt_scope_end, parallel_data, task_data, 0, 1, ompt_task_initial); + } if (ompt_enabled.ompt_callback_thread_end) { ompt_callbacks.ompt_callback(ompt_callback_thread_end)( &(root->r.r_uber_thread->th.ompt_thread_info.thread_data)); |