[Openmp-dev] unexpected dispatch of ompt_callback_task_dependences callback

Yizi Gu via Openmp-dev openmp-dev at lists.llvm.org
Thu Jul 12 14:30:11 PDT 2018


I built the latest version of OpenMP runtime library (commit 07d9ad356558ea7700cc1794848a7e327f9192ea). I registered the callback function ompt_callback_task_dependences callback for task-dependences event. However, if a program does not contain any tasking construct (only contains a parallel region), the callback is still dispatched. 

The call path is shown below:

Starting program: /home/yg31/data-race/pkgs-src/client-dev/more-test/test_sections 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[0]: ompt initialize: finished
[New Thread 0x7fffed4aa780 (LWP 39448)]
[New Thread 0x7fffed0a9800 (LWP 39449)]
[Switching to Thread 0x7fffed4aa780 (LWP 39448)]

Breakpoint 1, TaskDependencesCallback (task_data=0x1, deps=0x1, ndeps=14896224) at /home/yg31/data-race/pkgs-src/ompt-race-dev/src/ompt_race.cpp:734
734	   KA_TRACE(0, STDOUT, 0, "TaskDependencesCallback", "called", 0);           
Missing separate debuginfos, use: debuginfo-install glibc-2.17-157.el7_3.1.x86_64 glibc-2.17-196.el7_4.2.x86_64 libgcc-4.8.5-16.el7_4.1.x86_64 libgcc-4.8.5-16.el7_4.2.x86_64 libstdc++-4.8.5-16.el7_4.1.x86_64 libstdc++-4.8.5-16.el7_4.2.x86_64
(gdb) where
#0  TaskDependencesCallback (task_data=0x1, deps=0x1, ndeps=14896224) at /home/yg31/data-race/pkgs-src/ompt-race-dev/src/ompt_race.cpp:734
#1  0x00007fffee213c8f in __kmp_join_barrier(int) () from /home/yg31/data-race/pkgs/llvm-openmp-latest-2/lib/libomp.so
#2  0x00007fffee1ec783 in __kmp_launch_thread () from /home/yg31/data-race/pkgs/llvm-openmp-latest-2/lib/libomp.so
#3  0x00007fffee240332 in __kmp_launch_worker(void*) () from /home/yg31/data-race/pkgs/llvm-openmp-latest-2/lib/libomp.so
#4  0x00007fffedf98e25 in start_thread () from /lib64/libpthread.so.0
#5  0x00007fffedcc634d in clone () from /lib64/libc.so.6

I checked the code and it is related with the callback:
	if (ompt_enabled.ompt_callback_sync_region) {
1500       ompt_callbacks.ompt_callback(ompt_callback_sync_region)(
1501           ompt_sync_region_barrier, ompt_scope_end, my_parallel_data,
1502           my_task_data, return_address);
1503     }

In __kmp_join_barrier() of kmp_barrier.cpp. 

It could be seen that the parameter task_data = 0x1 and deps = 0x1, which corresponds to to the ompt_sync_region_barrier (equals 1) and ompt_scope_end (equals 1). 

May I have some suggestions on this issue? Thanks.

Best regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/openmp-dev/attachments/20180712/596e91a2/attachment.html>

More information about the Openmp-dev mailing list