Availability of OMPT device-related callbacks in LLVM ≥12

Hello,

I’m interested in the device-related callbacks in the OMPT interface for tracing initialisation of my Nvidia GPU when offloading with a target region. The LLVM 12.0.0 OpenMP runtime I’m using reports that the “ompt_callback_device_initialize” callback is not available. Is there any support available for tracing activity on GPU devices in a later version?

For info, the runtime I’m using reports the following version information in “ompt_start_tool”:

Runtime version: LLVM OMP version: 5.0.20140926
OMP version: 201611

Here are the results I get from “ompt_set_callback” for each event (I’ve marked the callbacks of interest with (*)):

Return codes from ompt_set_callback:
Event | Availability
ompt_callback_thread_begin | ompt_set_always (5)
ompt_callback_thread_end | ompt_set_always (5)
ompt_callback_parallel_begin | ompt_set_always (5)
ompt_callback_parallel_end | ompt_set_always (5)
ompt_callback_task_create | ompt_set_always (5)
ompt_callback_task_schedule | ompt_set_always (5)
ompt_callback_implicit_task | ompt_set_always (5)
ompt_callback_target | ompt_set_never (1)
ompt_callback_target_data_op | ompt_set_never (1)
ompt_callback_target_submit | ompt_set_never (1)
ompt_callback_control_tool | ompt_set_always (5)
ompt_callback_device_initialize | ompt_set_never (1) *
ompt_callback_device_finalize | ompt_set_never (1) *
ompt_callback_device_load | ompt_set_never (1) *
ompt_callback_device_unload | ompt_set_never (1) *
ompt_callback_sync_region_wait | ompt_set_always (5)
ompt_callback_mutex_released | ompt_set_always (5)
ompt_callback_dependences | ompt_set_always (5)
ompt_callback_task_dependence | ompt_set_always (5)
ompt_callback_work | ompt_set_always (5)
ompt_callback_masked | ompt_set_always (5)
ompt_callback_target_map | ompt_set_never (1)
ompt_callback_sync_region | ompt_set_always (5)
ompt_callback_lock_init | ompt_set_always (5)
ompt_callback_lock_destroy | ompt_set_always (5)
ompt_callback_mutex_acquire | ompt_set_always (5)
ompt_callback_mutex_acquired | ompt_set_always (5)
ompt_callback_nest_lock | ompt_set_always (5)
ompt_callback_flush | ompt_set_always (5)
ompt_callback_cancel | ompt_set_always (5)
ompt_callback_reduction | ompt_set_always (5)
ompt_callback_dispatch | ompt_set_never (1)
ompt_callback_target_emi | ompt_set_never (1)
ompt_callback_target_data_op_emi | ompt_set_never (1)
ompt_callback_target_submit_emi | ompt_set_never (1)
ompt_callback_target_map_emi | ompt_set_never (1)
ompt_callback_error | ompt_set_always (5)

Many thanks,

Adam Tuft