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));
78 S.append(
" parallel_data=").append(
makeHexString((uint64_t)ParallelData));
80 S.append(
" count=").append(std::to_string(Count));
86 std::string
S{
"OMPT Callback Dispatch: "};
87 S.append(
"parallel_data=").append(
makeHexString((uint64_t)ParallelData));
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) &&
102 Instance.ptr !=
nullptr) {
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=")
119 S.append(
" new_task_data=").append(
makeHexString((uint64_t)NewTaskData));
120 S.append(
" flags=").append(std::to_string(Flags));
121 S.append(
" has_dependences=").append(std::to_string(HasDependences));
127 std::string
S{
"OMPT Callback ImplicitTask: "};
128 S.append(
"endpoint=").append(std::to_string(Endpoint));
129 S.append(
" parallel_data=").append(
makeHexString((uint64_t)ParallelData));
130 S.append(
" task_data=").append(
makeHexString((uint64_t)TaskData));
131 S.append(
" actual_parallelism=").append(std::to_string(ActualParallelism));
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));
141 S.append(
" parallel_data=").append(
makeHexString((uint64_t)ParallelData));
142 S.append(
" task_data=").append(
makeHexString((uint64_t)TaskData));
149 std::string
S{
"Callback Target: target_id="};
150 S.append(std::to_string(TargetId));
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));
164 S.append(
" task_data=").append(
makeHexString((uint64_t)TaskData));
166 .append(
makeHexString((uint64_t)(TaskData) ? TaskData->value : 0,
169 S.append(
" target_task_data=")
173 makeHexString((uint64_t)(TargetTaskData) ? TargetTaskData->value : 0,
176 S.append(
" target_data=").append(
makeHexString((uint64_t)TargetData));
178 .append(
makeHexString((uint64_t)(TargetData) ? TargetData->value : 0,
186 std::string
S{
" Callback DataOp: target_id="};
187 S.append(std::to_string(TargetId));
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="};
201 S.append(std::to_string(Endpoint));
202 S.append(
" optype=").append(std::to_string(OpType));
203 S.append(
" target_task_data=")
207 makeHexString((uint64_t)(TargetTaskData) ? TargetTaskData->value : 0,
210 S.append(
" target_data=").append(
makeHexString((uint64_t)TargetData));
212 .append(
makeHexString((uint64_t)(TargetData) ? TargetData->value : 0,
215 S.append(
" host_op_id=").append(
makeHexString((uint64_t)HostOpId));
217 .append(
makeHexString((uint64_t)(HostOpId) ? (*HostOpId) : 0,
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="};
231 S.append(std::to_string(TargetId));
232 S.append(
" host_op_id=").append(std::to_string(HostOpId));
233 S.append(
" req_num_teams=").append(std::to_string(RequestedNumTeams));
238 std::string
S{
" Callback Submit EMI: endpoint="};
239 S.append(std::to_string(Endpoint));
240 S.append(
" req_num_teams=").append(std::to_string(RequestedNumTeams));
241 S.append(
" target_data=").append(
makeHexString((uint64_t)TargetData));
243 .append(
makeHexString((uint64_t)(TargetData) ? TargetData->value : 0,
246 S.append(
" host_op_id=").append(
makeHexString((uint64_t)HostOpId));
248 .append(
makeHexString((uint64_t)(HostOpId) ? (*HostOpId) : 0,
255 std::string
S{
"Callback Init: device_num="};
256 S.append(std::to_string(DeviceNum));
257 S.append(
" type=").append((Type) ? Type :
"(null)");
265 std::string
S{
"Callback Fini: device_num="};
266 S.append(std::to_string(DeviceNum));
271 std::string
S{
"Callback Load: device_num:"};
272 S.append(std::to_string(DeviceNum));
273 S.append(
" module_id:").append(std::to_string(ModuleId));
274 S.append(
" filename:").append((Filename ==
nullptr) ?
"(null)" : Filename);
275 S.append(
" host_addr:").append(
makeHexString((uint64_t)HostAddr));
276 S.append(
" device_addr:").append(
makeHexString((uint64_t)DeviceAddr));
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 ");
285 S.append(
makeHexString((Buffer !=
nullptr) ? (uint64_t)*Buffer : 0));
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,
' ');
296 S.append(std::to_string(BufferOwned));
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));
310 switch (Record.type) {
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.
unsigned * Index(unsigned *p, unsigned i, unsigned j, unsigned bound2)
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.
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.
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.
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.
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.
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.