Event Query Kernel Timestamps Extension
Contents
Event Query Kernel Timestamps Extension¶
API¶
Enumerations
Structures
Functions
Event Query Kernel Timestamps¶
This extension enables the querying of synchronized event timestamps.
Synchronized event timestamps are device timestamps synchronized to the host time domain.
Notes
The querying of synchronized event timestamps has a performance cost.
This extension is designed to complement and eventually replace all usages of zeEventQueryTimestampsExp and zeEventQueryKernelTimestamp.
The value returned by the pCount parameter of zeEventQueryKernelTimestampsExt is implementation specific.
ze_device_properties_t devProps; ze_event_query_kernel_timestamps_ext_properties_t tsProps; devProps.stype = ZE_STRUCTURE_TYPE_DEVICE_PROPERTIES; devProps.pNext = &tsProps; tsProps.stype = ZE_STRUCTURE_TYPE_EVENT_QUERY_KERNEL_TIMESTAMPS_EXT_PROPERTIES; tsProps.pNext = nullptr; // Determine the level of support by getting the module properties zeDeviceGetProperties(hDevice, &devProps); const bool supportsKernelTimestamps = (0 != (tsProps.flags & ZE_EVENT_QUERY_KERNEL_TIMESTAMPS_EXT_FLAG_KERNEL)); const bool supportsSynchronizedTimestamps = (0 != (tsProps.flags & ZE_EVENT_QUERY_KERNEL_TIMESTAMPS_EXT_FLAG_SYNCHRONIZED)); // Assumption: hEvent was created with ZE_EVENT_POOL_FLAG_KERNEL_MAPPED_TIMESTAMP // ... // launch kernel // synchronize host // ... if (supportsKernelTimestamps || supportsSynchronizedTimestamps) { // Number of event timestamps uint32_t count = 0; // Get the number of timestamps associated with the event. zeEventQueryKernelTimestampsExt(hEvent, hDevice, &count, nullptr); // Allocate storage for kernel timestamp results std::vector<ze_kernel_timestamp_result_t> kernelTimestamps(count); // Allocate storage for synchronized timestamp results std::vector<ze_synchronized_timestamp_result_ext_t> synchronizedTimestamps(count); // Build event query kernel timestamps descriptors ze_event_query_kernel_timestamps_results_ext_properties_t resultsProps; resultsProps.stype = ZE_STRUCTURE_TYPE_EVENT_QUERY_KERNEL_TIMESTAMPS_RESULTS_EXT_PROPERTIES; resultsProps.pNext = nullptr; resultsProps.pKernelTimestampsBuffer = supportsKernelTimestamps ? kernelTimestamps.data() : nullptr; resultsProps.pSynchronizedTimestampsBuffer = supportsSynchronizedTimestamps ? synchronizedTimestamps.data() : nullptr; // Query the event timestamps zeEventQueryKernelTimestampsExt(hEvent, hDevice, &count, &resultsProps); }