[Openmp-dev] unexpected dispatch of ompt_callback_task_dependences callback

Joachim Protze via Openmp-dev openmp-dev at lists.llvm.org
Fri Jul 13 10:07:40 PDT 2018


Hi Yizi,

this looks like something goes wrong when you register the callback.

In general, I suggest to use callback.h as a prototype for a tool:

https://github.com/llvm-mirror/openmp/blob/master/runtime/test/ompt/callback.h

Especially the register_callback macros introduce some type safety, 
which will also point you to interface changes for the callbacks, 
whenever we update the runtime implementation to a new version of the spec.

The main source for your issue is most probably that you rely on an 
outdated version of ompt.h.

While ompt_callback_task_dependences was 16 in TR4, it is now 18 as of 
TR6. This was updated more than a year ago. This was changed in the 
implementation before the clang/6.0 release.

Best
Joachim

On 07/12/2018 11:30 PM, Yizi Gu via Openmp-dev wrote:
> Hi,
> 
> 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,
> Yizi
> 
> 
> 
> _______________________________________________
> Openmp-dev mailing list
> Openmp-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev
> 



More information about the Openmp-dev mailing list