On tool shutdown (ompt_finalize_tool), the runtime should attempt to dispatch any outstanding events. Our tool, Score-P, does rely on this.
The NVHPC runtime, up to 22.11, does not dispatch events on worker threads. In particular, the events
- implicit-barrier-wait-end
- implicit-barrier-end
- implicit-task-end
for the last parallel region of the program and
- thread-end
are missing.
Here is a reproducer for thread-end: events_not_dispatched.c (1.9 KB)
Compile and run like this:
$ nvc -fopenmp -mp=ompt events_not_dispatched.c && ./a.out
Expected output is (order not deterministic):
thread-begin @ tid 0
tid = 0
thread-begin @ tid 1
tid = 1
thread-end @ tid 0
thread-end @ tid 1
I get
thread-begin @ tid 0
thread-begin @ tid 1
tid = 1
tid = 0
thread-end @ tid 0
a.out: events_not_dispatched.c:44: ompt_finalize: Assertion `worker_thread_end_dispatched' failed.
It would be nice to see the missing events in the next NVHPC release ;-)
Thanks,
Christian