Line data Source code
1 : /**
2 : * Copyright (c) 2025 Huawei Technologies Co., Ltd.
3 : * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4 : * CANN Open Software License Agreement Version 2.0 (the "License").
5 : * Please refer to the License for details. You may not use this file except in compliance with the License.
6 : * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7 : * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8 : * See LICENSE in the root of the software repository for the full text of the License.
9 : */
10 :
11 : #include "profiling_manager.h"
12 : #include "mmpa/mmpa_api.h"
13 : #include "common/log_inner.h"
14 : #include "common/prof_reporter.h"
15 :
16 : namespace acl {
17 : const std::map<AclProfType, std::string> PROF_TYPE_TO_NAMES = {
18 : {AclProfType::AclmdlRIExecuteAsync, "aclmdlRIExecuteAsync"},
19 : {AclProfType::AclmdlRIDestroy, "aclmdlRIDestroy"},
20 : {AclProfType::AclmdlRICaptureBegin, "aclmdlRICaptureBegin"},
21 : {AclProfType::AclmdlRICaptureGetInfo, "aclmdlRICaptureGetInfo"},
22 : {AclProfType::AclmdlRICaptureEnd, "aclmdlRICaptureEnd"},
23 : {AclProfType::AclmdlRIDebugPrint, "aclmdlRIDebugPrint"},
24 : {AclProfType::AclmdlRIDebugJsonPrint, "aclmdlRIDebugJsonPrint"},
25 : {AclProfType::AclmdlRICaptureThreadExchangeMode, "aclmdlRICaptureThreadExchangeMode"},
26 : {AclProfType::AclmdlRICaptureTaskGrpBegin, "aclmdlRICaptureTaskGrpBegin"},
27 : {AclProfType::AclmdlRICaptureTaskGrpEnd, "aclmdlRICaptureTaskGrpEnd"},
28 : {AclProfType::AclmdlRICaptureTaskUpdateBegin, "aclmdlRICaptureTaskUpdateBegin"},
29 : {AclProfType::AclmdlRICaptureTaskUpdateEnd, "aclmdlRICaptureTaskUpdateEnd"},
30 : {AclProfType::AclCreateDataBuffer, "aclCreateDataBuffer"},
31 : {AclProfType::AclrtLaunchCallback, "aclrtLaunchCallback"},
32 : {AclProfType::AclrtProcessReport, "aclrtProcessReport"},
33 : {AclProfType::AclrtCreateContext, "aclrtCreateContext"},
34 : {AclProfType::AclrtDestroyContext, "aclrtDestroyContext"},
35 : {AclProfType::AclrtSetCurrentContext, "aclrtSetCurrentContext"},
36 : {AclProfType::AclrtGetCurrentContext, "aclrtGetCurrentContext"},
37 : {AclProfType::AclrtSetDevice, "aclrtSetDevice"},
38 : {AclProfType::AclrtSetDeviceWithoutTsdVXX, "aclrtSetDeviceWithoutTsdVXX"},
39 : {AclProfType::AclrtResetDevice, "aclrtResetDevice"},
40 : {AclProfType::AclrtResetDeviceForce, "aclrtResetDeviceForce"},
41 : {AclProfType::AclrtResetDeviceWithoutTsdVXX, "aclrtResetDeviceWithoutTsdVXX"},
42 : {AclProfType::AclrtSynchronizeDevice, "aclrtSynchronizeDevice"},
43 : {AclProfType::AclrtSynchronizeDeviceWithTimeout, "aclrtSynchronizeDeviceWithTimeout"},
44 : {AclProfType::AclrtSetTsDevice, "aclrtSetTsDevice"},
45 : {AclProfType::AclrtCreateEvent, "aclrtCreateEvent"},
46 : {AclProfType::AclrtCreateEventWithFlag, "aclrtCreateEventWithFlag"},
47 : {AclProfType::AclrtCreateEventExWithFlag, "aclrtCreateEventExWithFlag"},
48 : {AclProfType::AclrtDestroyEvent, "aclrtDestroyEvent"},
49 : {AclProfType::AclrtRecordEvent, "aclrtRecordEvent"},
50 : {AclProfType::AclrtRecordEventWithFlag, "aclrtRecordEventWithFlag"},
51 : {AclProfType::AclrtResetEvent, "aclrtResetEvent"},
52 : {AclProfType::AclrtQueryEvent, "aclrtQueryEvent"},
53 : {AclProfType::AclrtQueryEventStatus, "aclrtQueryEventStatus"},
54 : {AclProfType::AclrtQueryEventWaitStatus, "aclrtQueryEventWaitStatus"},
55 : {AclProfType::AclrtSynchronizeEvent, "aclrtSynchronizeEvent"},
56 : {AclProfType::AclrtSetOpWaitTimeout, "aclrtSetOpWaitTimeout"},
57 : {AclProfType::AclrtSetOpExecuteTimeOut, "aclrtSetOpExecuteTimeOut"},
58 : {AclProfType::AclrtSetOpExecuteTimeOutWithMs, "aclrtSetOpExecuteTimeOutWithMs"},
59 : {AclProfType::AclrtSetGroup, "aclrtSetGroup"},
60 : {AclProfType::AclrtGetGroupCount, "aclrtGetGroupCount"},
61 : {AclProfType::AclrtGetAllGroupInfo, "aclrtGetAllGroupInfo"},
62 : {AclProfType::AclrtGetGroupInfoDetail, "aclrtGetGroupInfoDetail"},
63 : {AclProfType::AclMallocMemInner, "aclMallocMemInner"},
64 : {AclProfType::AclrtMallocCached, "aclrtMallocCached"},
65 : {AclProfType::AclrtMemFlush, "aclrtMemFlush"},
66 : {AclProfType::AclrtMemInvalidate, "aclrtMemInvalidate"},
67 : {AclProfType::AclrtFree, "aclrtFree"},
68 : {AclProfType::AclrtMallocHost, "aclrtMallocHost"},
69 : {AclProfType::AclrtFreeHost, "aclrtFreeHost"},
70 : {AclProfType::AclrtMemcpy, "aclrtMemcpy"},
71 : {AclProfType::AclrtMemset, "aclrtMemset"},
72 : {AclProfType::AclrtMemcpyAsync, "aclrtMemcpyAsync"},
73 : {AclProfType::AclrtMemcpyAsyncWithCondition, "aclrtMemcpyAsyncWithCondition"},
74 : {AclProfType::AclrtMemsetAsync, "aclrtMemsetAsync"},
75 : {AclProfType::AclrtDeviceCanAccessPeer, "aclrtDeviceCanAccessPeer"},
76 : {AclProfType::AclrtDeviceEnablePeerAccess, "aclrtDeviceEnablePeerAccess"},
77 : {AclProfType::AclrtDeviceDisablePeerAccess, "aclrtDeviceDisablePeerAccess"},
78 : {AclProfType::AclrtGetMemInfo, "aclrtGetMemInfo"},
79 : {AclProfType::AclrtMemcpy2d, "aclrtMemcpy2d"},
80 : {AclProfType::AclrtMemcpy2dAsync, "aclrtMemcpy2dAsync"},
81 : {AclProfType::AclrtCreateStream, "aclrtCreateStream"},
82 : {AclProfType::AclrtCreateStreamWithConfig, "aclrtCreateStreamWithConfig"},
83 : {AclProfType::AclrtDestroyStream, "aclrtDestroyStream"},
84 : {AclProfType::AclrtDestroyStreamForce, "aclrtDestroyStreamForce"},
85 : {AclProfType::AclrtSynchronizeStream, "aclrtSynchronizeStream"},
86 : {AclProfType::AclrtSynchronizeStreamWithTimeout, "aclrtSynchronizeStreamWithTimeout"},
87 : {AclProfType::AclrtStreamQuery, "aclrtStreamQuery"},
88 : {AclProfType::AclrtStreamGetPriority, "aclrtStreamGetPriority"},
89 : {AclProfType::AclrtStreamGetFlags, "aclrtStreamGetFlags"},
90 : {AclProfType::AclrtStreamWaitEvent, "aclrtStreamWaitEvent"},
91 : {AclProfType::AclrtStreamWaitEventWithFlag, "aclrtStreamWaitEventWithFlag"},
92 : {AclProfType::AclrtStreamWaitEventWithTimeout, "aclrtStreamWaitEventWithTimeout"},
93 : {AclProfType::AclrtAllocatorCreateDesc, "aclrtAllocatorCreateDesc"},
94 : {AclProfType::AclrtAllocatorDestroyDesc, "aclrtAllocatorDestroyDesc"},
95 : {AclProfType::AclrtCtxGetSysParamOpt, "aclrtCtxGetSysParamOpt"},
96 : {AclProfType::AclrtCtxSetSysParamOpt, "aclrtCtxSetSysParamOpt"},
97 : {AclProfType::AclrtGetOverflowStatus, "aclrtGetOverflowStatus"},
98 : {AclProfType::AclrtResetOverflowStatus, "aclrtResetOverflowStatus"},
99 : {AclProfType::AclrtGetDeviceCount, "aclrtGetDeviceCount"},
100 : {AclProfType::AclrtGetDevice, "aclrtGetDevice"},
101 : {AclProfType::AclrtMalloc, "aclrtMalloc"},
102 : {AclProfType::AclrtSetStreamFailureMode, "aclrtSetStreamFailureMode"},
103 : {AclProfType::AclrtQueryDeviceStatus, "aclrtQueryDeviceStatus"},
104 : {AclProfType::AclrtReserveMemAddress, "aclrtReserveMemAddress"},
105 : {AclProfType::AclrtReleaseMemAddress, "aclrtReleaseMemAddress"},
106 : {AclProfType::AclrtMallocPhysical, "aclrtMallocPhysical"},
107 : {AclProfType::AclrtFreePhysical, "aclrtFreePhysical"},
108 : {AclProfType::AclrtMapMem, "aclrtMapMem"},
109 : {AclProfType::AclrtMemMapNoAccess, "aclrtMemMapNoAccess"},
110 : {AclProfType::AclrtUnmapMem, "aclrtUnmapMem"},
111 : {AclProfType::AclrtLaunchKernel, "aclrtLaunchKernel"},
112 : {AclProfType::AclrtMemGetAccess, "aclrtMemGetAccess"},
113 : {AclProfType::AclrtMemExportToShareableHandle, "aclrtMemExportToShareableHandle"},
114 : {AclProfType::AclrtMemExportToShareableHandleV2, "aclrtMemExportToShareableHandleV2"},
115 : {AclProfType::AclrtMemImportFromShareableHandle, "aclrtMemImportFromShareableHandle"},
116 : {AclProfType::AclrtMemImportFromShareableHandleV2, "aclrtMemImportFromShareableHandleV2"},
117 : {AclProfType::AclrtMemGetAllocationGranularity, "aclrtMemGetAllocationGranularity"},
118 : {AclProfType::AclrtMemSetPidToShareableHandle, "aclrtMemSetPidToShareableHandle"},
119 : {AclProfType::AclrtMemSetPidToShareableHandleV2, "aclrtMemSetPidToShareableHandleV2"},
120 : {AclProfType::AclrtDeviceGetBareTgid, "aclrtDeviceGetBareTgid"},
121 : {AclProfType::AclrtGetMemUceInfo, "aclrtGetMemUceInfo"},
122 : {AclProfType::AclrtDeviceTaskAbort, "aclrtDeviceTaskAbort"},
123 : {AclProfType::AclrtMemUceRepair, "aclrtMemUceRepair"},
124 : {AclProfType::AclrtCmoAsync, "aclrtCmoAsync"},
125 : {AclProfType::AclrtStreamAbort, "aclrtStreamAbort"},
126 : {AclProfType::AclrtMemcpyAsyncWithDesc, "aclrtMemcpyAsyncWithDesc"},
127 : {AclProfType::AclrtBinaryLoadFromFile, "aclrtBinaryLoadFromFile"},
128 : {AclProfType::AclrtBinaryGetDevAddress, "aclrtBinaryGetDevAddress"},
129 : {AclProfType::AclrtLaunchKernelWithConfig, "aclrtLaunchKernelWithConfig"},
130 : {AclProfType::AclrtKernelArgsAppend, "aclrtKernelArgsAppend"},
131 : {AclProfType::AclrtKernelArgsAppendPlaceHolder, "aclrtKernelArgsAppendPlaceHolder"},
132 : {AclProfType::AclrtKernelArgsParaUpdate, "aclrtKernelArgsParaUpdate"},
133 : {AclProfType::AclrtKernelArgsGetMemSize, "aclrtKernelArgsGetMemSize"},
134 : {AclProfType::AclrtKernelArgsGetHandleMemSize, "aclrtKernelArgsGetHandleMemSize"},
135 : {AclProfType::AclrtKernelArgsGetPlaceHolderBuffer, "aclrtKernelArgsGetPlaceHolderBuffer"},
136 : {AclProfType::AclrtMallocWithCfg, "aclrtMallocWithCfg"},
137 : {AclProfType::AclrtMallocForTaskScheduler, "aclrtMallocForTaskScheduler"},
138 : {AclProfType::AclrtMallocHostWithCfg, "aclrtMallocHostWithCfg"},
139 : {AclProfType::AclrtGetThreadLastTaskId, "aclrtGetThreadLastTaskId"},
140 : {AclProfType::AclrtStreamGetId, "aclrtStreamGetId"},
141 : {AclProfType::AclrtPointerGetAttributes, "aclrtPointerGetAttributes"},
142 : {AclProfType::AclrtHostRegister, "aclrtHostRegister"},
143 : {AclProfType::AclrtHostRegisterV2, "aclrtHostRegisterV2"},
144 : {AclProfType::AclrtHostGetDevicePointer, "aclrtHostGetDevicePointer"},
145 : {AclProfType::AclrtHostUnregister, "aclrtHostUnregister"},
146 : {AclProfType::AclrtValueWrite, "aclrtValueWrite"},
147 : {AclProfType::AclrtValueWait, "aclrtValueWait"},
148 : {AclProfType::AclrtGetStreamAvailableNum, "aclrtGetStreamAvailableNum"},
149 : {AclProfType::AclrtSetStreamAttribute, "aclrtSetStreamAttribute"},
150 : {AclProfType::AclrtGetStreamAttribute, "aclrtGetStreamAttribute"},
151 : {AclProfType::AclrtCreateNotify, "aclrtCreateNotify"},
152 : {AclProfType::AclrtDestroyNotify, "aclrtDestroyNotify"},
153 : {AclProfType::AclrtRecordNotify, "aclrtRecordNotify"},
154 : {AclProfType::AclrtWaitAndResetNotify, "aclrtWaitAndResetNotify"},
155 : {AclProfType::AclrtGetNotifyId, "aclrtGetNotifyId"},
156 : {AclProfType::AclrtGetEventId, "aclrtGetEventId"},
157 : {AclProfType::AclrtGetEventAvailNum, "aclrtGetEventAvailNum"},
158 : {AclProfType::AclrtGetDeviceInfo, "aclrtGetDeviceInfo"},
159 : {AclProfType::AclrtDeviceGetUuid, "aclrtDeviceGetUuid"},
160 : {AclProfType::AclrtDeviceGetPCIBusId, "aclrtDeviceGetPCIBusId"},
161 : {AclProfType::AclrtDeviceGetByPCIBusId, "aclrtDeviceGetByPCIBusId"},
162 : {AclProfType::AclrtDeviceSetLimit, "aclrtDeviceSetLimit"},
163 : {AclProfType::AclrtDeviceGetLimit, "aclrtDeviceGetLimit"},
164 : {AclProfType::AclrtDeviceGetStreamPriorityRange, "aclrtDeviceGetStreamPriorityRange"},
165 : {AclProfType::AclrtGetDeviceCapability, "aclrtGetDeviceCapability"},
166 : {AclProfType::AclrtCtxGetCurrentDefaultStream, "aclrtCtxGetCurrentDefaultStream"},
167 : {AclProfType::AclmdlRIBuildBegin, "aclmdlRIBuildBegin"},
168 : {AclProfType::AclmdlRIBindStream, "aclmdlRIBindStream"},
169 : {AclProfType::AclmdlRIEndTask, "aclmdlRIEndTask"},
170 : {AclProfType::AclmdlRIBuildEnd, "aclmdlRIBuildEnd"},
171 : {AclProfType::AclmdlRIUnbindStream, "aclmdlRIUnbindStream"},
172 : {AclProfType::AclmdlRIExecute, "aclmdlRIExecute"},
173 : {AclProfType::AclrtReduceAsync, "aclrtReduceAsync"},
174 : {AclProfType::AclrtGetDeviceResLimit, "aclrtGetDeviceResLimit"},
175 : {AclProfType::AclrtSetDeviceResLimit, "aclrtSetDeviceResLimit"},
176 : {AclProfType::AclrtResetDeviceResLimit, "aclrtResetDeviceResLimit"},
177 : {AclProfType::AclrtCreateLabel, "aclrtCreateLabel"},
178 : {AclProfType::AclrtSetLabel, "aclrtSetLabel"},
179 : {AclProfType::AclrtDestroyLabel, "aclrtDestroyLabel"},
180 : {AclProfType::AclrtCreateLabelList, "aclrtCreateLabelList"},
181 : {AclProfType::AclrtDestroyLabelList, "aclrtDestroyLabelList"},
182 : {AclProfType::AclrtSwitchLabelByIndex, "aclrtSwitchLabelByIndex"},
183 : {AclProfType::AclrtActiveStream, "aclrtActiveStream"},
184 : {AclProfType::AclrtSwitchStream, "aclrtSwitchStream"},
185 : {AclProfType::AclrtGetFunctionName, "aclrtGetFunctionName"},
186 : {AclProfType::AclmdlRISetName, "aclmdlRISetName"},
187 : {AclProfType::AclmdlRIGetName, "aclmdlRIGetName"},
188 : {AclProfType::AclrtGetBufFromChain, "aclrtGetBufFromChain"},
189 : {AclProfType::AclrtGetBufChainNum, "aclrtGetBufChainNum"},
190 : {AclProfType::AclrtAppendBufChain, "aclrtAppendBufChain"},
191 : {AclProfType::AclrtCopyBufRef, "aclrtCopyBufRef"},
192 : {AclProfType::AclrtGetBufUserData, "aclrtGetBufUserData"},
193 : {AclProfType::AclrtSetBufUserData, "aclrtSetBufUserData"},
194 : {AclProfType::AclrtGetBufData, "aclrtGetBufData"},
195 : {AclProfType::AclrtGetBufDataLen, "aclrtGetBufDataLen"},
196 : {AclProfType::AclrtSetBufDataLen, "aclrtSetBufDataLen"},
197 : {AclProfType::AclrtFreeBuf, "aclrtFreeBuf"},
198 : {AclProfType::AclrtAllocBuf, "aclrtAllocBuf"},
199 : {AclProfType::AclrtBinaryLoadFromData, "aclrtBinaryLoadFromData"},
200 : {AclProfType::AclrtRegisterCpuFunc, "aclrtRegisterCpuFunc"},
201 : {AclProfType::AclrtCmoAsyncWithBarrier, "aclrtCmoAsyncWithBarrier"},
202 : {AclProfType::AclrtCmoWaitBarrier, "aclrtCmoWaitBarrier"},
203 : {AclProfType::AclrtGetDevicesTopo, "aclrtGetDevicesTopo"},
204 : {AclProfType::AclrtMemcpyBatch, "aclrtMemcpyBatch"},
205 : {AclProfType::AclrtMemcpyBatchV2, "aclrtMemcpyBatchV2"},
206 : {AclProfType::AclrtMemcpyBatchAsync, "aclrtMemcpyBatchAsync"},
207 : {AclProfType::AclrtMemcpyBatchAsyncV2, "aclrtMemcpyBatchAsyncV2"},
208 : {AclProfType::AclrtIpcMemGetExportKey, "aclrtIpcMemGetExportKey"},
209 : {AclProfType::AclrtIpcMemClose, "aclrtIpcMemClose"},
210 : {AclProfType::AclrtIpcMemImportByKey, "aclrtIpcMemImportByKey"},
211 : {AclProfType::AclrtIpcMemSetImportPid, "aclrtIpcMemSetImportPid"},
212 : {AclProfType::AclrtNotifyBatchReset, "aclrtNotifyBatchReset"},
213 : {AclProfType::AclrtNotifyGetExportKey, "aclrtNotifyGetExportKey"},
214 : {AclProfType::AclrtNotifyImportByKey, "aclrtNotifyImportByKey"},
215 : {AclProfType::AclrtNotifySetImportPid, "aclrtNotifySetImportPid"},
216 : {AclProfType::AclrtGetStreamResLimit, "aclrtGetStreamResLimit"},
217 : {AclProfType::AclrtSetStreamResLimit, "aclrtSetStreamResLimit"},
218 : {AclProfType::AclrtResetStreamResLimit, "aclrtResetStreamResLimit"},
219 : {AclProfType::AclrtUseStreamResInCurrentThread, "aclrtUseStreamResInCurrentThread"},
220 : {AclProfType::AclrtUnuseStreamResInCurrentThread, "aclrtUnuseStreamResInCurrentThread"},
221 : {AclProfType::AclrtGetResInCurrentThread, "aclrtGetResInCurrentThread"},
222 : {AclProfType::AclrtCheckMemType, "aclrtCheckMemType"},
223 : {AclProfType::AclrtGetLogicDevIdByUserDevId, "aclrtGetLogicDevIdByUserDevId"},
224 : {AclProfType::AclrtGetUserDevIdByLogicDevId, "aclrtGetUserDevIdByLogicDevId"},
225 : {AclProfType::AclrtGetLogicDevIdByPhyDevId, "aclrtGetLogicDevIdByPhyDevId"},
226 : {AclProfType::AclrtGetPhyDevIdByLogicDevId, "aclrtGetPhyDevIdByLogicDevId"},
227 : {AclProfType::AclrtGetUserDevIdByPhyDevId, "aclrtGetUserDevIdByPhyDevId"},
228 : {AclProfType::AclrtGetPhyDevIdByUserDevId, "aclrtGetPhyDevIdByUserDevId"},
229 : {AclProfType::AclrtProfTrace, "aclrtProfTrace"},
230 : {AclProfType::AclrtLaunchKernelV2, "aclrtLaunchKernelV2"},
231 : {AclProfType::AclrtLaunchKernelWithHostArgs, "aclrtLaunchKernelWithHostArgs"},
232 : {AclProfType::AclrtLaunchKernelWithArgsArray, "aclrtLaunchKernelWithArgsArray"},
233 : {AclProfType::AclrtLaunchSIMTKernelWithArgsArray, "aclrtLaunchSIMTKernelWithArgsArray"},
234 : {AclProfType::AclrtCtxGetFloatOverflowAddr, "aclrtCtxGetFloatOverflowAddr"},
235 : {AclProfType::AclrtLaunchSIMTKernelWithHostArgs, "aclrtLaunchSIMTKernelWithHostArgs"},
236 : {AclProfType::AclrtGetFloatOverflowStatus, "aclrtGetFloatOverflowStatus"},
237 : {AclProfType::AclrtResetFloatOverflowStatus, "aclrtResetFloatOverflowStatus"},
238 : {AclProfType::AclrtNpuGetFloatOverFlowStatus, "aclrtNpuGetFloatOverFlowStatus"},
239 : {AclProfType::AclrtNpuClearFloatOverFlowStatus, "aclrtNpuClearFloatOverFlowStatus"},
240 : {AclProfType::AclrtLaunchHostFunc, "aclrtLaunchHostFunc"},
241 : {AclProfType::AclrtGetHardwareSyncAddr, "aclrtGetHardwareSyncAddr"},
242 : {AclProfType::AclrtRandomNumAsync, "aclrtRandomNumAsync"},
243 : {AclProfType::AclrtRegStreamStateCallback, "aclrtRegStreamStateCallback"},
244 : {AclProfType::AclrtRegDeviceStateCallback, "aclrtRegDeviceStateCallback"},
245 : {AclProfType::AclrtSetDeviceTaskAbortCallback, "aclrtSetDeviceTaskAbortCallback"},
246 : {AclProfType::AclrtGetOpExecuteTimeout, "aclrtGetOpExecuteTimeout"},
247 : {AclProfType::AclrtDevicePeerAccessStatus, "aclrtDevicePeerAccessStatus"},
248 : {AclProfType::AclrtStreamStop, "aclrtStreamStop"},
249 : {AclProfType::AclrtTaskUpdateAsync, "aclrtTaskUpdateAsync"},
250 : {AclProfType::AclrtCntNotifyCreate, "aclrtCntNotifyCreate"},
251 : {AclProfType::AclrtCntNotifyDestroy, "aclrtCntNotifyDestroy"},
252 : {AclProfType::AclrtIpcMemSetAttr, "aclrtIpcMemSetAttr"},
253 : {AclProfType::AclrtIpcMemImportPidInterServer, "aclrtIpcMemIpmportPidInterServer"},
254 : {AclProfType::AclrtNotifySetImportPidInterServer, "aclrtNotifySetImportPidInterServer"},
255 : {AclProfType::AclrtMemcpyAsyncWithOffset, "aclrtMemcpyAsyncWithOffset"},
256 : {AclProfType::AclrtCheckArchCompatibility, "aclrtCheckArchCompatibility"},
257 : {AclProfType::AclrtCmoGetDescSize, "aclrtCmoGetDescSize"},
258 : {AclProfType::AclrtCmoSetDesc, "aclrtCmoSetDesc"},
259 : {AclProfType::AclrtCmoAsyncWithDesc, "aclrtCmoAsyncWithDesc"},
260 : {AclProfType::AclmdlRIAbort, "aclmdlRIAbort"},
261 : {AclProfType::AclrtCntNotifyRecord, "aclrtCntNotifyRecord"},
262 : {AclProfType::AclrtCntNotifyWaitWithTimeout, "aclrtCntNotifyWaitWithTimeout"},
263 : {AclProfType::AclrtCntNotifyReset, "aclrtCntNotifyReset"},
264 : {AclProfType::AclrtCntNotifyGetId, "aclrtCntNotifyGetId"},
265 : {AclProfType::AclrtPersistentTaskClean, "aclrtPersistentTaskClean"},
266 : {AclProfType::AclrtGetErrorVerbose, "aclrtGetErrorVerbose"},
267 : {AclProfType::AclrtRepairError, "aclrtRepairError"},
268 : {AclProfType::AclrtMemSetAccess, "aclrtMemSetAccess"},
269 : {AclProfType::AclrtSetOpExecuteTimeOutV2, "aclrtSetOpExecuteTimeOutV2"},
270 : {AclProfType::AclrtGetOpTimeOutInterval, "aclrtGetOpTimeOutInterval"},
271 : {AclProfType::AclrtSnapShotProcessLock, "aclrtSnapShotProcessLock"},
272 : {AclProfType::AclrtSnapShotProcessUnlock, "aclrtSnapShotProcessUnlock"},
273 : {AclProfType::AclrtSnapShotProcessBackup, "aclrtSnapShotProcessBackup"},
274 : {AclProfType::AclrtSnapShotProcessRestore, "aclrtSnapShotProcessRestore"},
275 : {AclProfType::AclrtFreeWithDevSync, "aclrtFreeWithDevSync"},
276 : {AclProfType::AclrtFreeHostWithDevSync, "aclrtFreeHostWithDevSync"},
277 : {AclProfType::AclrtCacheLastTaskOpInfo, "aclrtCacheLastTaskOpInfo"},
278 : {AclProfType::AclrtCacheLastTaskExtendInfo, "aclrtCacheLastTaskExtendInfo"},
279 : {AclProfType::AclrtGetFunctionAttribute, "aclrtGetFunctionAttribute"},
280 : {AclProfType::AclrtFunctionGetParamCount, "aclrtFunctionGetParamCount"},
281 : {AclProfType::AclrtFunctionGetParamInfo, "aclrtFunctionGetParamInfo"},
282 : {AclProfType::AclrtIpcGetEventHandle, "aclrtIpcGetEventHandle"},
283 : {AclProfType::AclrtIpcOpenEventHandle, "aclrtIpcOpenEventHandle"},
284 : {AclProfType::AclrtMemRetainAllocationHandle, "aclrtMemRetainAllocationHandle"},
285 : {AclProfType::AclrtMemGetAllocationPropertiesFromHandle, "aclrtMemGetAllocationPropertiesFromHandle"},
286 : {AclProfType::AclrtHostMemMapCapabilities, "aclrtHostMemMapCapabilities"},
287 : {AclProfType::AclrtGetMemUsageInfo, "aclrtGetMemUsageInfo"},
288 : {AclProfType::AclrtReserveMemAddressNoUCMemory, "aclrtReserveMemAddressNoUCMemory"},
289 : {AclProfType::AclrtMemGetAddressRange, "aclrtMemGetAddressRange"},
290 : {AclProfType::aclrtMemP2PMap, "aclrtMemP2PMap"},
291 : {AclProfType::AclrtMemAllocManaged, "aclrtMemAllocManaged"},
292 : {AclProfType::AclrtMemPoolCreate, "aclrtMemPoolCreate"},
293 : {AclProfType::AclrtMemPoolDestroy, "aclrtMemPoolDestroy"},
294 : {AclProfType::AclrtMemPoolSetAttr, "aclrtMemPoolSetAttr"},
295 : {AclProfType::AclrtMemPoolGetAttr, "aclrtMemPoolGetAttr"},
296 : {AclProfType::AclrtMemPoolMallocAsync, "aclrtMemPoolMallocAsync"},
297 : {AclProfType::AclrtMemPoolFreeAsync, "aclrtMemPoolFreeAsync"},
298 : {AclProfType::AclrtMemPoolTrimTo, "aclrtMemPoolTrimTo"},
299 : {AclProfType::AclmdlRITaskGetSeqId, "aclmdlRITaskGetSeqId"},
300 : {AclProfType::AclmdlRIGetStreams, "aclmdlRIGetStreams"},
301 : {AclProfType::AclmdlRIGetTasksByStream, "aclmdlRIGetTasksByStream"},
302 : {AclProfType::AclmdlRITaskGetType, "aclmdlRITaskGetType"},
303 : {AclProfType::AclmdlRIDestroyRegisterCallback, "aclmdlRIDestroyRegisterCallback"},
304 : {AclProfType::AclmdlRIDestroyUnregisterCallback, "aclmdlRIDestroyUnregisterCallback"},
305 : {AclProfType::AclmdlRITaskGetParams, "aclmdlRITaskGetParams"},
306 : {AclProfType::AclmdlRITaskSetParams, "aclmdlRITaskSetParams"},
307 : {AclProfType::aclmdlRIKernelTaskGetAttribute, "aclmdlRIKernelTaskGetAttribute"},
308 : {AclProfType::AclmdlRIUpdate, "aclmdlRIUpdate"},
309 : {AclProfType::AclmdlRITaskDisable, "aclmdlRITaskDisable"},
310 : {AclProfType::AclrtMemManagedAdvise, "aclrtMemManagedAdvise"},
311 : {AclProfType::AclrtMemManagedGetAttr, "aclrtMemManagedGetAttr"},
312 : {AclProfType::AclrtMemManagedGetAttrs, "aclrtMemManagedGetAttrs"},
313 : {AclProfType::AclrtMemManagedPrefetchAsync, "aclrtMemManagedPrefetchAsync"},
314 : {AclProfType::AclrtMemManagedPrefetchBatchAsync, "aclrtMemManagedPrefetchBatchAsync"},
315 : {AclProfType::AclrtDeviceGetHostAtomicCapabilities, "aclrtDeviceGetHostAtomicCapabilities"},
316 : {AclProfType::AclrtDeviceGetP2PAtomicCapabilities, "aclrtDeviceGetP2PAtomicCapabilities"},
317 : {AclProfType::AclrtMemMapSelectedLink, "aclrtMemMapSelectedLink"},
318 : {AclProfType::AclmdlRIGetId, "aclmdlRIGetId"},
319 : {AclProfType::AclrtMemsetD32, "aclrtMemsetD32"},
320 : {AclProfType::AclrtMemsetD32Async, "aclrtMemsetD32Async"},
321 : {AclProfType::AclrtGetFuncBySymbol, "aclrtGetFuncBySymbol"},
322 : {AclProfType::AclrtGetSymbolAddress, "aclrtGetSymbolAddress"},
323 : {AclProfType::AclrtGetSymbolSize, "aclrtGetSymbolSize"},
324 : {AclProfType::AclrtMemcpyFromSymbol, "aclrtMemcpyFromSymbol"},
325 : {AclProfType::AclrtMemcpyFromSymbolAsync, "aclrtMemcpyFromSymbolAsync"},
326 : {AclProfType::AclrtMemcpyToSymbol, "aclrtMemcpyToSymbol"},
327 : {AclProfType::AclrtMemcpyToSymbolAsync, "aclrtMemcpyToSymbolAsync"},
328 : {AclProfType::AclmdlRICondHandleCreate, "aclmdlRICondHandleCreate"},
329 : {AclProfType::AclmdlRICondHandleGetCondPtr, "aclmdlRICondHandleGetCondPtr"},
330 : {AclProfType::AclmdlRIAddCondTask, "aclmdlRIAddCondTask"},
331 : {AclProfType::AclmdlRICaptureToModelRIBegin, "aclmdlRICaptureToModelRIBegin"},
332 : {AclProfType::AclrtDeviceL2CacheFlush, "aclrtDeviceL2CacheFlush"},
333 : {AclProfType::AclrtExceptionInfoCallbackRegister, "aclrtExceptionInfoCallbackRegister"},
334 : {AclProfType::AclrtExceptionInfoCallbackUnregister, "aclrtExceptionInfoCallbackUnregister"},
335 : };
336 :
337 639 : aclError RegisterType(const uint32_t index)
338 : {
339 639 : const AclProfType type = static_cast<AclProfType>(index);
340 639 : const auto iter = PROF_TYPE_TO_NAMES.find(type);
341 639 : if (iter != PROF_TYPE_TO_NAMES.cend()) {
342 639 : const auto ret = MsprofRegTypeInfo(MSPROF_REPORT_ACL_LEVEL, index, iter->second.c_str());
343 639 : if (ret != MSPROF_ERROR_NONE) {
344 5 : ACL_LOG_CALL_ERROR("Registered api type [%u] failed = %d", index, ret);
345 5 : return ACL_ERROR_PROFILING_FAILURE;
346 : }
347 : }
348 634 : return ACL_SUCCESS;
349 : }
350 26 : AclProfilingManager& AclProfilingManager::GetInstance()
351 : {
352 26 : static AclProfilingManager profilingManager;
353 26 : return profilingManager;
354 : }
355 :
356 6 : aclError AclProfilingManager::Init()
357 : {
358 6 : const std::lock_guard<std::mutex> lk(mutex_);
359 6 : const aclError reg_ret = RegisterProfilingType();
360 6 : if (reg_ret != 0) {
361 5 : ACL_LOG_INNER_ERROR("[Init][ProfEngine]init acl profiling reg failed, errorCode = %d", reg_ret);
362 5 : return reg_ret;
363 : }
364 1 : isProfiling_ = true;
365 1 : AclProfilingReporter::profRun = true;
366 1 : return ACL_SUCCESS;
367 6 : }
368 :
369 1 : aclError AclProfilingManager::UnInit()
370 : {
371 1 : const std::lock_guard<std::mutex> lk(mutex_);
372 1 : isProfiling_ = false;
373 1 : AclProfilingReporter::profRun = false;
374 1 : return ACL_SUCCESS;
375 1 : }
376 :
377 0 : bool AclProfilingManager::IsDeviceListEmpty() const { return deviceList_.empty(); }
378 :
379 2 : aclError AclProfilingManager::AddDeviceList(const uint32_t* const deviceIdList, const uint32_t deviceNums)
380 : {
381 2 : if (deviceNums == 0U) {
382 1 : return ACL_SUCCESS;
383 : }
384 1 : ACL_REQUIRES_NOT_NULL(deviceIdList);
385 4 : for (size_t devId = 0U; devId < deviceNums; devId++) {
386 3 : if (deviceList_.count(*(deviceIdList + devId)) == 0U) {
387 3 : (void)deviceList_.insert(*(deviceIdList + devId));
388 3 : ACL_LOG_INFO("device id %u is successfully added in acl profiling", *(deviceIdList + devId));
389 : }
390 : }
391 1 : return ACL_SUCCESS;
392 : }
393 :
394 2 : aclError AclProfilingManager::RemoveDeviceList(const uint32_t* const deviceIdList, const uint32_t deviceNums)
395 : {
396 2 : if (deviceNums == 0U) {
397 1 : return ACL_SUCCESS;
398 : }
399 1 : ACL_REQUIRES_NOT_NULL(deviceIdList);
400 4 : for (size_t devId = 0U; devId < deviceNums; devId++) {
401 3 : const auto iter = deviceList_.find(*(deviceIdList + devId));
402 3 : if (iter != deviceList_.end()) {
403 3 : (void)deviceList_.erase(iter);
404 : }
405 : }
406 1 : return ACL_SUCCESS;
407 : }
408 :
409 7 : aclError AclProfilingManager::RegisterProfilingType() const
410 : {
411 641 : for (uint32_t i = static_cast<uint32_t>(AclProfType::AclRtProfTypeStart) + 1U;
412 641 : i < static_cast<uint32_t>(AclProfType::AclRtProfTypeEnd); ++i) {
413 639 : const auto ret = RegisterType(i);
414 639 : if (ret != ACL_SUCCESS) {
415 5 : return ret;
416 : }
417 : }
418 2 : return ACL_SUCCESS;
419 : }
420 : } // namespace acl
|