24 if (Data == 0 && IsPointer)
27 thread_local std::ostringstream os;
29 os.str(std::string());
36 size_t NumDigits = (MinBytes > 0 && MinBytes < 9) ? (MinBytes << 1) : 8;
39 os << std::setfill(
'0') << std::setw(NumDigits);
41 os << std::hex << Data;
46 std::string
S{
"Assertion SyncPoint: '"};
47 S.append(
Name).append(1,
'\'');
52 std::string
S{
"OMPT Callback ThreadBegin: "};
53 S.append(
"ThreadType=").append(std::to_string(
ThreadType));
58 std::string
S{
"OMPT Callback ThreadEnd"};
63 std::string
S{
"OMPT Callback ParallelBegin: "};
64 S.append(
"NumThreads=").append(std::to_string(
NumThreads));
70 std::string
S{
"OMPT Callback ParallelEnd"};
75 std::string
S{
"OMPT Callback Work: "};
76 S.append(
"work_type=").append(std::to_string(
WorkType));
77 S.append(
" endpoint=").append(std::to_string(
Endpoint));
80 S.append(
" count=").append(std::to_string(
Count));
86 std::string
S{
"OMPT Callback Dispatch: "};
89 S.append(
" kind=").append(std::to_string(
Kind));
91 if (
Kind == ompt_dispatch_iteration) {
92 S.append(
" instance=[it=")
93 .append(std::to_string(
Instance.value))
95 }
else if (
Kind == ompt_dispatch_section) {
96 S.append(
" instance=[ptr=")
99 }
else if ((
Kind == ompt_dispatch_ws_loop_chunk ||
100 Kind == ompt_dispatch_taskloop_chunk ||
101 Kind == ompt_dispatch_distribute_chunk) &&
103 auto Chunk =
static_cast<ompt_dispatch_chunk_t *
>(
Instance.ptr);
104 S.append(
" instance=[chunk=(start=")
105 .append(std::to_string(Chunk->start))
106 .append(
", iterations=")
107 .append(std::to_string(Chunk->iterations))
114 std::string
S{
"OMPT Callback TaskCreate: "};
115 S.append(
"encountering_task_data=")
117 S.append(
" encountering_task_frame=")
120 S.append(
" flags=").append(std::to_string(
Flags));
127 std::string
S{
"OMPT Callback ImplicitTask: "};
128 S.append(
"endpoint=").append(std::to_string(
Endpoint));
132 S.append(
" index=").append(std::to_string(
Index));
133 S.append(
" flags=").append(std::to_string(
Flags));
138 std::string
S{
"OMPT Callback SyncRegion: "};
139 S.append(
"kind=").append(std::to_string(
Kind));
140 S.append(
" endpoint=").append(std::to_string(
Endpoint));
149 std::string
S{
"Callback Target: target_id="};
151 S.append(
" kind=").append(std::to_string(
Kind));
152 S.append(
" endpoint=").append(std::to_string(
Endpoint));
153 S.append(
" device_num=").append(std::to_string(
DeviceNum));
160 std::string
S{
"Callback Target EMI: kind="};
161 S.append(std::to_string(
Kind));
162 S.append(
" endpoint=").append(std::to_string(
Endpoint));
163 S.append(
" device_num=").append(std::to_string(
DeviceNum));
169 S.append(
" target_task_data=")
186 std::string
S{
" Callback DataOp: target_id="};
188 S.append(
" host_op_id=").append(std::to_string(
HostOpId));
189 S.append(
" optype=").append(std::to_string(
OpType));
191 S.append(
" src_device_num=").append(std::to_string(
SrcDeviceNum));
193 S.append(
" dest_device_num=").append(std::to_string(
DstDeviceNum));
194 S.append(
" bytes=").append(std::to_string(
Bytes));
200 std::string
S{
" Callback DataOp EMI: endpoint="};
202 S.append(
" optype=").append(std::to_string(
OpType));
203 S.append(
" target_task_data=")
221 S.append(
" src_device_num=").append(std::to_string(
SrcDeviceNum));
223 S.append(
" dest_device_num=").append(std::to_string(
DstDeviceNum));
224 S.append(
" bytes=").append(std::to_string(
Bytes));
230 std::string
S{
" Callback Submit: target_id="};
232 S.append(
" host_op_id=").append(std::to_string(
HostOpId));
238 std::string
S{
" Callback Submit EMI: endpoint="};
255 std::string
S{
"Callback Init: device_num="};
257 S.append(
" type=").append((
Type) ?
Type :
"(null)");
265 std::string
S{
"Callback Fini: device_num="};
271 std::string
S{
"Callback Load: device_num:"};
273 S.append(
" module_id:").append(std::to_string(
ModuleId));
277 S.append(
" bytes:").append(std::to_string(
Bytes));
282 std::string
S{
"Allocated "};
283 S.append(std::to_string((
Bytes !=
nullptr) ? *
Bytes : 0))
284 .append(
" bytes at ");
286 S.append(
" in buffer request callback");
291 std::string
S{
"Executing buffer complete callback: "};
292 S.append(std::to_string(
DeviceNum)).append(1,
' ');
294 S.append(std::to_string(
Bytes)).append(1,
' ');
304 S.append(
" type=").append(std::to_string(
Record.type));
306 T.append(
"time=").append(std::to_string(
Record.time));
307 T.append(
" thread_id=").append(std::to_string(
Record.thread_id));
308 T.append(
" target_id=").append(std::to_string(
Record.target_id));
311 case ompt_callback_target:
312 case ompt_callback_target_emi: {
314 ompt_record_target_t TR =
Record.record.target;
315 S.append(
" (Target task) ").append(T);
316 S.append(
" kind=").append(std::to_string(TR.kind));
317 S.append(
" endpoint=").append(std::to_string(TR.endpoint));
318 S.append(
" device=").append(std::to_string(TR.device_num));
319 S.append(
" task_id=").append(std::to_string(TR.task_id));
320 S.append(
" codeptr=").append(
makeHexString((uint64_t)TR.codeptr_ra));
323 case ompt_callback_target_data_op:
324 case ompt_callback_target_data_op_emi: {
326 ompt_record_target_data_op_t TDR =
Record.record.target_data_op;
327 S.append(
" (Target data op) ").append(T);
328 S.append(
" host_op_id=").append(std::to_string(TDR.host_op_id));
329 S.append(
" optype=").append(std::to_string(TDR.optype));
330 S.append(
" src_addr=").append(
makeHexString((uint64_t)TDR.src_addr));
331 S.append(
" src_device=").append(std::to_string(TDR.src_device_num));
332 S.append(
" dest_addr=").append(
makeHexString((uint64_t)TDR.dest_addr));
333 S.append(
" dest_device=").append(std::to_string(TDR.dest_device_num));
334 S.append(
" bytes=").append(std::to_string(TDR.bytes));
335 S.append(
" end_time=").append(std::to_string(TDR.end_time));
336 S.append(
" duration=").append(std::to_string(TDR.end_time -
Record.time));
337 S.append(
" ns codeptr=").append(
makeHexString((uint64_t)TDR.codeptr_ra));
340 case ompt_callback_target_submit:
341 case ompt_callback_target_submit_emi: {
343 ompt_record_target_kernel_t TKR =
Record.record.target_kernel;
344 S.append(
" (Target kernel) ").append(T);
345 S.append(
" host_op_id=").append(std::to_string(TKR.host_op_id));
346 S.append(
" requested_num_teams=")
347 .append(std::to_string(TKR.requested_num_teams));
348 S.append(
" granted_num_teams=")
349 .append(std::to_string(TKR.granted_num_teams));
350 S.append(
" end_time=").append(std::to_string(TKR.end_time));
351 S.append(
" duration=").append(std::to_string(TKR.end_time -
Record.time));
356 S.append(
" (unsupported record type)");
364 std::string
S{
"Deallocated "};
Declares internal event representations along the default CTOR definition.
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id ITT_FORMAT p const wchar_t int ITT_FORMAT __itt_group_mark S
std::string makeHexString(uint64_t Data, bool IsPointer=true, size_t DataBytes=0, bool ShowHexBase=true)
String manipulation helper function.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_buffer_cursor_t Begin
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_record_ompt_t Record
ompt_record_ompt_t * RecordPtr
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_function_lookup_t LookupFn
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_data_t * ParallelData
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_data_t * ParallelData
ompt_scope_endpoint_t Endpoint
unsigned int ActualParallelism
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_scope_endpoint_t Endpoint
ompt_data_t * ParallelData
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_target_data_op_t OpType
ompt_scope_endpoint_t Endpoint
ompt_data_t * TargetTaskData
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_target_data_op_t OpType
ompt_scope_endpoint_t Endpoint
ompt_data_t * TargetTaskData
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
unsigned int RequestedNumTeams
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_scope_endpoint_t Endpoint
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
unsigned int RequestedNumTeams
ompt_scope_endpoint_t Endpoint
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_data_t * NewTaskData
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_data_t * EncounteringTaskData
const ompt_frame_t * EncounteringTaskFrame
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
std::string toString() const override
Basic toString method, which may be overridden with own implementations.
ompt_data_t * ParallelData
ompt_scope_endpoint_t Endpoint
std::string toString() const override
Basic toString method, which may be overridden with own implementations.