Clock Domain API

Some applications require the capability to trace events with user-defined timestamps and frequencies that are different from the ones generated by a CPU. For example, you may want to instrument events that occur on a GPU. To do this, you can create a clock domain.

To create a clock domain, use this following primitive:

__itt_clock_domain * ITTAPI __itt_clock_domain_create(__itt_get_clock_info_fn fn, void* fn_data)

Parameters of the primitive:

[in]

fn

Pointer to a callback function that retrieves alternative CPU timestamps and frequencies and stores them in the clock domain structure field __itt_clock_info.

[in]

fn_data

Argument passed to the callback function. Can be NULL.

Tasks issued from different clock domains display on the same timeline. This happens by the synchronization of a referenced clock domain base timestamp (captured at the instant when the clock domain was created) and a CPU timestamp (captured in the same instant).

To recalculate clock domain base timestamps and frequencies, if necessary, for example, when a GPU frequency changes, use the following primitive:

__itt_clock_domain_reset()