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 :
17 : namespace acl {
18 : const std::map<AclProfType, std::string> PROF_TYPE_TO_NAMES = {
19 : {AclProfType::AclmdlRIExecuteAsync, "aclmdlRIExecuteAsync"},
20 : {AclProfType::AclmdlRIDestroy, "aclmdlRIDestroy"},
21 : {AclProfType::AclmdlRICaptureBegin, "aclmdlRICaptureBegin"},
22 : {AclProfType::AclmdlRICaptureGetInfo, "aclmdlRICaptureGetInfo"},
23 : {AclProfType::AclmdlRICaptureEnd, "aclmdlRICaptureEnd"},
24 : {AclProfType::AclmdlRIDebugPrint, "aclmdlRIDebugPrint"},
25 : {AclProfType::AclmdlRIDebugJsonPrint, "aclmdlRIDebugJsonPrint"},
26 : {AclProfType::AclmdlRICaptureThreadExchangeMode, "aclmdlRICaptureThreadExchangeMode"},
27 : {AclProfType::AclmdlRICaptureTaskGrpBegin, "aclmdlRICaptureTaskGrpBegin"},
28 : {AclProfType::AclmdlRICaptureTaskGrpEnd, "aclmdlRICaptureTaskGrpEnd"},
29 : {AclProfType::AclmdlRICaptureTaskUpdateBegin, "aclmdlRICaptureTaskUpdateBegin"},
30 : {AclProfType::AclmdlRICaptureTaskUpdateEnd, "aclmdlRICaptureTaskUpdateEnd"},
31 : {AclProfType::AclCreateDataBuffer, "aclCreateDataBuffer"},
32 : {AclProfType::AclrtLaunchCallback, "aclrtLaunchCallback"},
33 : {AclProfType::AclrtProcessReport, "aclrtProcessReport"},
34 : {AclProfType::AclrtCreateContext, "aclrtCreateContext"},
35 : {AclProfType::AclrtDestroyContext, "aclrtDestroyContext"},
36 : {AclProfType::AclrtSetCurrentContext, "aclrtSetCurrentContext"},
37 : {AclProfType::AclrtGetCurrentContext, "aclrtGetCurrentContext"},
38 : {AclProfType::AclrtSetDevice, "aclrtSetDevice"},
39 : {AclProfType::AclrtSetDeviceWithoutTsdVXX, "aclrtSetDeviceWithoutTsdVXX"},
40 : {AclProfType::AclrtResetDevice, "aclrtResetDevice"},
41 : {AclProfType::AclrtResetDeviceForce, "aclrtResetDeviceForce"},
42 : {AclProfType::AclrtResetDeviceWithoutTsdVXX, "aclrtResetDeviceWithoutTsdVXX"},
43 : {AclProfType::AclrtSynchronizeDevice, "aclrtSynchronizeDevice"},
44 : {AclProfType::AclrtSynchronizeDeviceWithTimeout, "aclrtSynchronizeDeviceWithTimeout"},
45 : {AclProfType::AclrtSetTsDevice, "aclrtSetTsDevice"},
46 : {AclProfType::AclrtCreateEvent, "aclrtCreateEvent"},
47 : {AclProfType::AclrtCreateEventWithFlag, "aclrtCreateEventWithFlag"},
48 : {AclProfType::AclrtCreateEventExWithFlag, "aclrtCreateEventExWithFlag"},
49 : {AclProfType::AclrtDestroyEvent, "aclrtDestroyEvent"},
50 : {AclProfType::AclrtRecordEvent, "aclrtRecordEvent"},
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::AclrtStreamWaitEventWithTimeout, "aclrtStreamWaitEventWithTimeout"},
92 : {AclProfType::AclrtAllocatorCreateDesc, "aclrtAllocatorCreateDesc"},
93 : {AclProfType::AclrtAllocatorDestroyDesc, "aclrtAllocatorDestroyDesc"},
94 : {AclProfType::AclrtCtxGetSysParamOpt, "aclrtCtxGetSysParamOpt"},
95 : {AclProfType::AclrtCtxSetSysParamOpt, "aclrtCtxSetSysParamOpt"},
96 : {AclProfType::AclrtGetOverflowStatus, "aclrtGetOverflowStatus"},
97 : {AclProfType::AclrtResetOverflowStatus, "aclrtResetOverflowStatus"},
98 : {AclProfType::AclrtGetDeviceCount, "aclrtGetDeviceCount"},
99 : {AclProfType::AclrtGetDevice, "aclrtGetDevice"},
100 : {AclProfType::AclrtMalloc, "aclrtMalloc"},
101 : {AclProfType::AclrtSetStreamFailureMode, "aclrtSetStreamFailureMode"},
102 : {AclProfType::AclrtQueryDeviceStatus, "aclrtQueryDeviceStatus"},
103 : {AclProfType::AclrtReserveMemAddress, "aclrtReserveMemAddress"},
104 : {AclProfType::AclrtReleaseMemAddress, "aclrtReleaseMemAddress"},
105 : {AclProfType::AclrtMallocPhysical, "aclrtMallocPhysical"},
106 : {AclProfType::AclrtFreePhysical, "aclrtFreePhysical"},
107 : {AclProfType::AclrtMapMem, "aclrtMapMem"},
108 : {AclProfType::AclrtUnmapMem, "aclrtUnmapMem"},
109 : {AclProfType::AclrtLaunchKernel, "aclrtLaunchKernel"},
110 : {AclProfType::AclrtMemGetAccess, "aclrtMemGetAccess"},
111 : {AclProfType::AclrtMemExportToShareableHandle, "aclrtMemExportToShareableHandle"},
112 : {AclProfType::AclrtMemExportToShareableHandleV2, "aclrtMemExportToShareableHandleV2"},
113 : {AclProfType::AclrtMemImportFromShareableHandle, "aclrtMemImportFromShareableHandle"},
114 : {AclProfType::AclrtMemImportFromShareableHandleV2, "aclrtMemImportFromShareableHandleV2"},
115 : {AclProfType::AclrtMemGetAllocationGranularity, "aclrtMemGetAllocationGranularity"},
116 : {AclProfType::AclrtMemSetPidToShareableHandle, "aclrtMemSetPidToShareableHandle"},
117 : {AclProfType::AclrtMemSetPidToShareableHandleV2, "aclrtMemSetPidToShareableHandleV2"},
118 : {AclProfType::AclrtDeviceGetBareTgid, "aclrtDeviceGetBareTgid"},
119 : {AclProfType::AclrtGetMemUceInfo, "aclrtGetMemUceInfo"},
120 : {AclProfType::AclrtDeviceTaskAbort, "aclrtDeviceTaskAbort"},
121 : {AclProfType::AclrtMemUceRepair, "aclrtMemUceRepair"},
122 : {AclProfType::AclrtCmoAsync, "aclrtCmoAsync"},
123 : {AclProfType::AclrtStreamAbort, "aclrtStreamAbort"},
124 : {AclProfType::AclrtMemcpyAsyncWithDesc, "aclrtMemcpyAsyncWithDesc"},
125 : {AclProfType::AclrtBinaryLoadFromFile, "aclrtBinaryLoadFromFile"},
126 : {AclProfType::AclrtBinaryGetDevAddress, "aclrtBinaryGetDevAddress"},
127 : {AclProfType::AclrtLaunchKernelWithConfig, "aclrtLaunchKernelWithConfig"},
128 : {AclProfType::AclrtKernelArgsAppend, "aclrtKernelArgsAppend"},
129 : {AclProfType::AclrtKernelArgsAppendPlaceHolder, "aclrtKernelArgsAppendPlaceHolder"},
130 : {AclProfType::AclrtKernelArgsParaUpdate, "aclrtKernelArgsParaUpdate"},
131 : {AclProfType::AclrtKernelArgsGetMemSize, "aclrtKernelArgsGetMemSize"},
132 : {AclProfType::AclrtKernelArgsGetHandleMemSize, "aclrtKernelArgsGetHandleMemSize"},
133 : {AclProfType::AclrtKernelArgsGetPlaceHolderBuffer, "aclrtKernelArgsGetPlaceHolderBuffer"},
134 : {AclProfType::AclrtMallocWithCfg, "aclrtMallocWithCfg"},
135 : {AclProfType::AclrtMallocForTaskScheduler, "aclrtMallocForTaskScheduler"},
136 : {AclProfType::AclrtMallocHostWithCfg, "aclrtMallocHostWithCfg"},
137 : {AclProfType::AclrtGetThreadLastTaskId, "aclrtGetThreadLastTaskId"},
138 : {AclProfType::AclrtStreamGetId, "aclrtStreamGetId"},
139 : {AclProfType::AclrtPointerGetAttributes, "aclrtPointerGetAttributes"},
140 : {AclProfType::AclrtHostRegister, "aclrtHostRegister"},
141 : {AclProfType::AclrtHostRegisterV2, "aclrtHostRegisterV2"},
142 : {AclProfType::AclrtHostGetDevicePointer, "aclrtHostGetDevicePointer"},
143 : {AclProfType::AclrtHostUnregister, "aclrtHostUnregister"},
144 : {AclProfType::AclrtValueWrite, "aclrtValueWrite"},
145 : {AclProfType::AclrtValueWait, "aclrtValueWait"},
146 : {AclProfType::AclrtGetStreamAvailableNum, "aclrtGetStreamAvailableNum"},
147 : {AclProfType::AclrtSetStreamAttribute, "aclrtSetStreamAttribute"},
148 : {AclProfType::AclrtGetStreamAttribute, "aclrtGetStreamAttribute"},
149 : {AclProfType::AclrtCreateNotify, "aclrtCreateNotify"},
150 : {AclProfType::AclrtDestroyNotify, "aclrtDestroyNotify"},
151 : {AclProfType::AclrtRecordNotify, "aclrtRecordNotify"},
152 : {AclProfType::AclrtWaitAndResetNotify, "aclrtWaitAndResetNotify"},
153 : {AclProfType::AclrtGetNotifyId, "aclrtGetNotifyId"},
154 : {AclProfType::AclrtGetEventId, "aclrtGetEventId"},
155 : {AclProfType::AclrtGetEventAvailNum, "aclrtGetEventAvailNum"},
156 : {AclProfType::AclrtGetDeviceInfo, "aclrtGetDeviceInfo"},
157 : {AclProfType::AclrtDeviceGetUuid, "aclrtDeviceGetUuid"},
158 : {AclProfType::AclrtDeviceGetStreamPriorityRange, "aclrtDeviceGetStreamPriorityRange"},
159 : {AclProfType::AclrtGetDeviceCapability, "aclrtGetDeviceCapability"},
160 : {AclProfType::AclrtCtxGetCurrentDefaultStream, "aclrtCtxGetCurrentDefaultStream"},
161 : {AclProfType::AclmdlRIBuildBegin, "aclmdlRIBuildBegin"},
162 : {AclProfType::AclmdlRIBindStream, "aclmdlRIBindStream"},
163 : {AclProfType::AclmdlRIEndTask, "aclmdlRIEndTask"},
164 : {AclProfType::AclmdlRIBuildEnd, "aclmdlRIBuildEnd"},
165 : {AclProfType::AclmdlRIUnbindStream, "aclmdlRIUnbindStream"},
166 : {AclProfType::AclmdlRIExecute, "aclmdlRIExecute"},
167 : {AclProfType::AclrtReduceAsync, "aclrtReduceAsync"},
168 : {AclProfType::AclrtGetDeviceResLimit, "aclrtGetDeviceResLimit"},
169 : {AclProfType::AclrtSetDeviceResLimit, "aclrtSetDeviceResLimit"},
170 : {AclProfType::AclrtResetDeviceResLimit, "aclrtResetDeviceResLimit"},
171 : {AclProfType::AclrtCreateLabel, "aclrtCreateLabel"},
172 : {AclProfType::AclrtSetLabel, "aclrtSetLabel"},
173 : {AclProfType::AclrtDestroyLabel, "aclrtDestroyLabel"},
174 : {AclProfType::AclrtCreateLabelList, "aclrtCreateLabelList"},
175 : {AclProfType::AclrtDestroyLabelList, "aclrtDestroyLabelList"},
176 : {AclProfType::AclrtSwitchLabelByIndex, "aclrtSwitchLabelByIndex"},
177 : {AclProfType::AclrtActiveStream, "aclrtActiveStream"},
178 : {AclProfType::AclrtSwitchStream, "aclrtSwitchStream"},
179 : {AclProfType::AclrtGetFunctionName, "aclrtGetFunctionName"},
180 : {AclProfType::AclmdlRISetName, "aclmdlRISetName"},
181 : {AclProfType::AclmdlRIGetName, "aclmdlRIGetName"},
182 : {AclProfType::AclrtGetBufFromChain, "aclrtGetBufFromChain"},
183 : {AclProfType::AclrtGetBufChainNum, "aclrtGetBufChainNum"},
184 : {AclProfType::AclrtAppendBufChain, "aclrtAppendBufChain"},
185 : {AclProfType::AclrtCopyBufRef, "aclrtCopyBufRef"},
186 : {AclProfType::AclrtGetBufUserData, "aclrtGetBufUserData"},
187 : {AclProfType::AclrtSetBufUserData, "aclrtSetBufUserData"},
188 : {AclProfType::AclrtGetBufData, "aclrtGetBufData"},
189 : {AclProfType::AclrtGetBufDataLen, "aclrtGetBufDataLen"},
190 : {AclProfType::AclrtSetBufDataLen, "aclrtSetBufDataLen"},
191 : {AclProfType::AclrtFreeBuf, "aclrtFreeBuf"},
192 : {AclProfType::AclrtAllocBuf, "aclrtAllocBuf"},
193 : {AclProfType::AclrtBinaryLoadFromData, "aclrtBinaryLoadFromData"},
194 : {AclProfType::AclrtRegisterCpuFunc, "aclrtRegisterCpuFunc"},
195 : {AclProfType::AclrtCmoAsyncWithBarrier, "aclrtCmoAsyncWithBarrier"},
196 : {AclProfType::AclrtCmoWaitBarrier, "aclrtCmoWaitBarrier"},
197 : {AclProfType::AclrtGetDevicesTopo, "aclrtGetDevicesTopo"},
198 : {AclProfType::AclrtMemcpyBatch, "aclrtMemcpyBatch"},
199 : {AclProfType::AclrtMemcpyBatchV2, "aclrtMemcpyBatchV2"},
200 : {AclProfType::AclrtMemcpyBatchAsync, "aclrtMemcpyBatchAsync"},
201 : {AclProfType::AclrtMemcpyBatchAsyncV2, "aclrtMemcpyBatchAsyncV2"},
202 : {AclProfType::AclrtIpcMemGetExportKey, "aclrtIpcMemGetExportKey"},
203 : {AclProfType::AclrtIpcMemClose, "aclrtIpcMemClose"},
204 : {AclProfType::AclrtIpcMemImportByKey, "aclrtIpcMemImportByKey"},
205 : {AclProfType::AclrtIpcMemSetImportPid, "aclrtIpcMemSetImportPid"},
206 : {AclProfType::AclrtNotifyBatchReset, "aclrtNotifyBatchReset"},
207 : {AclProfType::AclrtNotifyGetExportKey, "aclrtNotifyGetExportKey"},
208 : {AclProfType::AclrtNotifyImportByKey, "aclrtNotifyImportByKey"},
209 : {AclProfType::AclrtNotifySetImportPid, "aclrtNotifySetImportPid"},
210 : {AclProfType::AclrtGetStreamResLimit, "aclrtGetStreamResLimit"},
211 : {AclProfType::AclrtSetStreamResLimit, "aclrtSetStreamResLimit"},
212 : {AclProfType::AclrtResetStreamResLimit, "aclrtResetStreamResLimit"},
213 : {AclProfType::AclrtUseStreamResInCurrentThread, "aclrtUseStreamResInCurrentThread"},
214 : {AclProfType::AclrtUnuseStreamResInCurrentThread, "aclrtUnuseStreamResInCurrentThread"},
215 : {AclProfType::AclrtGetResInCurrentThread, "aclrtGetResInCurrentThread"},
216 : {AclProfType::AclrtCheckMemType, "aclrtCheckMemType"},
217 : {AclProfType::AclrtGetLogicDevIdByUserDevId, "aclrtGetLogicDevIdByUserDevId"},
218 : {AclProfType::AclrtGetUserDevIdByLogicDevId, "aclrtGetUserDevIdByLogicDevId"},
219 : {AclProfType::AclrtGetLogicDevIdByPhyDevId, "aclrtGetLogicDevIdByPhyDevId"},
220 : {AclProfType::AclrtGetPhyDevIdByLogicDevId, "aclrtGetPhyDevIdByLogicDevId"},
221 : {AclProfType::AclrtGetUserDevIdByPhyDevId, "aclrtGetUserDevIdByPhyDevId"},
222 : {AclProfType::AclrtGetPhyDevIdByUserDevId, "aclrtGetPhyDevIdByUserDevId"},
223 : {AclProfType::AclrtProfTrace, "aclrtProfTrace"},
224 : {AclProfType::AclrtLaunchKernelV2, "aclrtLaunchKernelV2"},
225 : {AclProfType::AclrtLaunchKernelWithHostArgs, "aclrtLaunchKernelWithHostArgs"},
226 : {AclProfType::AclrtLaunchKernelWithArgsArray, "aclrtLaunchKernelWithArgsArray"},
227 : {AclProfType::AclrtCtxGetFloatOverflowAddr, "aclrtCtxGetFloatOverflowAddr"},
228 : {AclProfType::AclrtGetFloatOverflowStatus, "aclrtGetFloatOverflowStatus"},
229 : {AclProfType::AclrtResetFloatOverflowStatus, "aclrtResetFloatOverflowStatus"},
230 : {AclProfType::AclrtNpuGetFloatOverFlowStatus, "aclrtNpuGetFloatOverFlowStatus"},
231 : {AclProfType::AclrtNpuClearFloatOverFlowStatus, "aclrtNpuClearFloatOverFlowStatus"},
232 : {AclProfType::AclrtLaunchHostFunc, "aclrtLaunchHostFunc"},
233 : {AclProfType::AclrtGetHardwareSyncAddr, "aclrtGetHardwareSyncAddr"},
234 : {AclProfType::AclrtRandomNumAsync, "aclrtRandomNumAsync"},
235 : {AclProfType::AclrtRegStreamStateCallback, "aclrtRegStreamStateCallback"},
236 : {AclProfType::AclrtRegDeviceStateCallback, "aclrtRegDeviceStateCallback"},
237 : {AclProfType::AclrtSetDeviceTaskAbortCallback, "aclrtSetDeviceTaskAbortCallback"},
238 : {AclProfType::AclrtGetOpExecuteTimeout, "aclrtGetOpExecuteTimeout"},
239 : {AclProfType::AclrtDevicePeerAccessStatus, "aclrtDevicePeerAccessStatus"},
240 : {AclProfType::AclrtStreamStop, "aclrtStreamStop"},
241 : {AclProfType::AclrtTaskUpdateAsync, "aclrtTaskUpdateAsync"},
242 : {AclProfType::AclrtCntNotifyCreate, "aclrtCntNotifyCreate"},
243 : {AclProfType::AclrtCntNotifyDestroy, "aclrtCntNotifyDestroy"},
244 : {AclProfType::AclrtIpcMemSetAttr, "aclrtIpcMemSetAttr"},
245 : {AclProfType::AclrtIpcMemImportPidInterServer, "aclrtIpcMemIpmportPidInterServer"},
246 : {AclProfType::AclrtNotifySetImportPidInterServer, "aclrtNotifySetImportPidInterServer"},
247 : {AclProfType::AclrtMemcpyAsyncWithOffset, "aclrtMemcpyAsyncWithOffset"},
248 : {AclProfType::AclrtCheckArchCompatibility, "aclrtCheckArchCompatibility"},
249 : {AclProfType::AclrtCmoGetDescSize, "aclrtCmoGetDescSize"},
250 : {AclProfType::AclrtCmoSetDesc, "aclrtCmoSetDesc"},
251 : {AclProfType::AclrtCmoAsyncWithDesc, "aclrtCmoAsyncWithDesc"},
252 : {AclProfType::AclmdlRIAbort, "aclmdlRIAbort"},
253 : {AclProfType::AclrtCntNotifyRecord, "aclrtCntNotifyRecord"},
254 : {AclProfType::AclrtCntNotifyWaitWithTimeout, "aclrtCntNotifyWaitWithTimeout"},
255 : {AclProfType::AclrtCntNotifyReset, "aclrtCntNotifyReset"},
256 : {AclProfType::AclrtCntNotifyGetId, "aclrtCntNotifyGetId"},
257 : {AclProfType::AclrtPersistentTaskClean, "aclrtPersistentTaskClean"},
258 : {AclProfType::AclrtGetErrorVerbose, "aclrtGetErrorVerbose"},
259 : {AclProfType::AclrtRepairError, "aclrtRepairError"},
260 : {AclProfType::AclrtMemSetAccess, "aclrtMemSetAccess"},
261 : {AclProfType::AclrtSetOpExecuteTimeOutV2, "aclrtSetOpExecuteTimeOutV2"},
262 : {AclProfType::AclrtGetOpTimeOutInterval, "aclrtGetOpTimeOutInterval"},
263 : {AclProfType::AclrtSnapShotProcessLock, "aclrtSnapShotProcessLock"},
264 : {AclProfType::AclrtSnapShotProcessUnlock, "aclrtSnapShotProcessUnlock"},
265 : {AclProfType::AclrtSnapShotProcessBackup, "aclrtSnapShotProcessBackup"},
266 : {AclProfType::AclrtSnapShotProcessRestore, "aclrtSnapShotProcessRestore"},
267 : {AclProfType::AclrtFreeWithDevSync, "aclrtFreeWithDevSync"},
268 : {AclProfType::AclrtFreeHostWithDevSync, "aclrtFreeHostWithDevSync"},
269 : {AclProfType::AclrtCacheLastTaskOpInfo, "aclrtCacheLastTaskOpInfo"},
270 : {AclProfType::AclrtCacheLastTaskExtendInfo, "aclrtCacheLastTaskExtendInfo"},
271 : {AclProfType::AclrtGetFunctionAttribute, "aclrtGetFunctionAttribute"},
272 : {AclProfType::AclrtFunctionGetParamCount, "aclrtFunctionGetParamCount"},
273 : {AclProfType::AclrtFunctionGetParamInfo, "aclrtFunctionGetParamInfo"},
274 : {AclProfType::AclrtIpcGetEventHandle, "aclrtIpcGetEventHandle"},
275 : {AclProfType::AclrtIpcOpenEventHandle, "aclrtIpcOpenEventHandle"},
276 : {AclProfType::AclrtMemRetainAllocationHandle, "aclrtMemRetainAllocationHandle"},
277 : {AclProfType::AclrtMemGetAllocationPropertiesFromHandle,"aclrtMemGetAllocationPropertiesFromHandle"},
278 : {AclProfType::AclrtHostMemMapCapabilities, "aclrtHostMemMapCapabilities"},
279 : {AclProfType::AclrtGetMemUsageInfo, "aclrtGetMemUsageInfo"},
280 : {AclProfType::AclrtReserveMemAddressNoUCMemory, "aclrtReserveMemAddressNoUCMemory"},
281 : {AclProfType::AclrtMemGetAddressRange, "aclrtMemGetAddressRange"},
282 : {AclProfType::aclrtMemP2PMap, "aclrtMemP2PMap"},
283 : {AclProfType::AclrtMemAllocManaged, "aclrtMemAllocManaged"},
284 : {AclProfType::AclrtMemPoolCreate, "aclrtMemPoolCreate"},
285 : {AclProfType::AclrtMemPoolDestroy, "aclrtMemPoolDestroy"},
286 : {AclProfType::AclrtMemPoolSetAttr, "aclrtMemPoolSetAttr"},
287 : {AclProfType::AclrtMemPoolGetAttr, "aclrtMemPoolGetAttr"},
288 : {AclProfType::AclrtMemPoolMallocAsync, "aclrtMemPoolMallocAsync"},
289 : {AclProfType::AclrtMemPoolFreeAsync, "aclrtMemPoolFreeAsync"},
290 : {AclProfType::AclrtMemPoolTrimTo, "aclrtMemPoolTrimTo"},
291 : {AclProfType::AclmdlRITaskGetSeqId, "aclmdlRITaskGetSeqId"},
292 : {AclProfType::AclmdlRIGetStreams, "aclmdlRIGetStreams"},
293 : {AclProfType::AclmdlRIGetTasksByStream, "aclmdlRIGetTasksByStream"},
294 : {AclProfType::AclmdlRITaskGetType, "aclmdlRITaskGetType"},
295 : {AclProfType::AclmdlRIDestroyRegisterCallback, "aclmdlRIDestroyRegisterCallback"},
296 : {AclProfType::AclmdlRIDestroyUnregisterCallback, "aclmdlRIDestroyUnregisterCallback"},
297 : {AclProfType::AclmdlRITaskGetParams, "aclmdlRITaskGetParams"},
298 : {AclProfType::AclmdlRITaskSetParams, "aclmdlRITaskSetParams"},
299 : {AclProfType::aclmdlRIKernelTaskGetAttribute, "aclmdlRIKernelTaskGetAttribute"},
300 : {AclProfType::AclmdlRIUpdate, "aclmdlRIUpdate"},
301 : {AclProfType::AclmdlRITaskDisable, "aclmdlRITaskDisable"},
302 : {AclProfType::AclrtMemManagedAdvise, "aclrtMemManagedAdvise"},
303 : {AclProfType::AclrtMemManagedGetAttr, "aclrtMemManagedGetAttr"},
304 : {AclProfType::AclrtMemManagedGetAttrs, "aclrtMemManagedGetAttrs"},
305 : {AclProfType::AclrtMemManagedPrefetchAsync, "aclrtMemManagedPrefetchAsync"},
306 : {AclProfType::AclrtMemManagedPrefetchBatchAsync, "aclrtMemManagedPrefetchBatchAsync"},
307 : {AclProfType::AclrtDeviceGetHostAtomicCapabilities, "aclrtDeviceGetHostAtomicCapabilities"},
308 : {AclProfType::AclrtDeviceGetP2PAtomicCapabilities, "aclrtDeviceGetP2PAtomicCapabilities"},
309 : {AclProfType::AclrtMemMapSelectedLink, "aclrtMemMapSelectedLink"},
310 : {AclProfType::AclmdlRIGetId, "aclmdlRIGetId"},
311 : {AclProfType::AclrtMemsetD32, "aclrtMemsetD32"},
312 : {AclProfType::AclrtMemsetD32Async, "aclrtMemsetD32Async"},
313 : {AclProfType::AclrtGetFuncBySymbol, "aclrtGetFuncBySymbol"},
314 : {AclProfType::AclrtGetSymbolAddress, "aclrtGetSymbolAddress"},
315 : {AclProfType::AclrtGetSymbolSize, "aclrtGetSymbolSize"},
316 : {AclProfType::AclrtMemcpyFromSymbol, "aclrtMemcpyFromSymbol"},
317 : {AclProfType::AclrtMemcpyFromSymbolAsync, "aclrtMemcpyFromSymbolAsync"},
318 : {AclProfType::AclrtMemcpyToSymbol, "aclrtMemcpyToSymbol"},
319 : {AclProfType::AclrtMemcpyToSymbolAsync, "aclrtMemcpyToSymbolAsync"},
320 : {AclProfType::AclmdlRICondHandleCreate, "aclmdlRICondHandleCreate"},
321 : {AclProfType::AclmdlRICondHandleGetCondPtr, "aclmdlRICondHandleGetCondPtr"},
322 : {AclProfType::AclmdlRIAddCondTask, "aclmdlRIAddCondTask"},
323 : {AclProfType::AclmdlRICaptureToModelRIBegin, "aclmdlRICaptureToModelRIBegin"},
324 : };
325 :
326 615 : aclError RegisterType(const uint32_t index) {
327 615 : const AclProfType type = static_cast<AclProfType>(index);
328 615 : const auto iter = PROF_TYPE_TO_NAMES.find(type);
329 615 : if (iter != PROF_TYPE_TO_NAMES.cend()) {
330 615 : const auto ret = MsprofRegTypeInfo(MSPROF_REPORT_ACL_LEVEL, index, iter->second.c_str());
331 615 : if (ret != MSPROF_ERROR_NONE) {
332 5 : ACL_LOG_CALL_ERROR("Registered api type [%u] failed = %d", index, ret);
333 5 : return ACL_ERROR_PROFILING_FAILURE;
334 : }
335 : }
336 610 : return ACL_SUCCESS;
337 : }
338 26 : AclProfilingManager &AclProfilingManager::GetInstance()
339 : {
340 26 : static AclProfilingManager profilingManager;
341 26 : return profilingManager;
342 : }
343 :
344 6 : aclError AclProfilingManager::Init()
345 : {
346 6 : const std::lock_guard<std::mutex> lk(mutex_);
347 6 : const aclError reg_ret = RegisterProfilingType();
348 6 : if (reg_ret != 0) {
349 5 : ACL_LOG_INNER_ERROR("[Init][ProfEngine]init acl profiling reg failed, errorCode = %d", reg_ret);
350 5 : return reg_ret;
351 : }
352 1 : isProfiling_ = true;
353 1 : AclProfilingReporter::profRun = true;
354 1 : return ACL_SUCCESS;
355 6 : }
356 :
357 1 : aclError AclProfilingManager::UnInit()
358 : {
359 1 : const std::lock_guard<std::mutex> lk(mutex_);
360 1 : isProfiling_ = false;
361 1 : AclProfilingReporter::profRun = false;
362 1 : return ACL_SUCCESS;
363 1 : }
364 :
365 0 : bool AclProfilingManager::IsDeviceListEmpty() const
366 : {
367 0 : return deviceList_.empty();
368 : }
369 :
370 2 : aclError AclProfilingManager::AddDeviceList(const uint32_t *const deviceIdList, const uint32_t deviceNums)
371 : {
372 2 : if (deviceNums == 0U) {
373 1 : return ACL_SUCCESS;
374 : }
375 1 : ACL_REQUIRES_NOT_NULL(deviceIdList);
376 4 : for (size_t devId = 0U; devId < deviceNums; devId++) {
377 3 : if (deviceList_.count(*(deviceIdList + devId)) == 0U) {
378 3 : (void)deviceList_.insert(*(deviceIdList + devId));
379 3 : ACL_LOG_INFO("device id %u is successfully added in acl profiling", *(deviceIdList + devId));
380 : }
381 : }
382 1 : return ACL_SUCCESS;
383 : }
384 :
385 2 : aclError AclProfilingManager::RemoveDeviceList(const uint32_t *const deviceIdList, const uint32_t deviceNums)
386 : {
387 2 : if (deviceNums == 0U) {
388 1 : return ACL_SUCCESS;
389 : }
390 1 : ACL_REQUIRES_NOT_NULL(deviceIdList);
391 4 : for (size_t devId = 0U; devId < deviceNums; devId++) {
392 3 : const auto iter = deviceList_.find(*(deviceIdList + devId));
393 3 : if (iter != deviceList_.end()) {
394 3 : (void)deviceList_.erase(iter);
395 : }
396 : }
397 1 : return ACL_SUCCESS;
398 : }
399 :
400 7 : aclError AclProfilingManager::RegisterProfilingType() const
401 : {
402 617 : for (uint32_t i = static_cast<uint32_t>(AclProfType::AclRtProfTypeStart) + 1U;
403 617 : i < static_cast<uint32_t>(AclProfType::AclRtProfTypeEnd); ++i) {
404 615 : const auto ret = RegisterType(i);
405 615 : if (ret != ACL_SUCCESS) {
406 5 : return ret;
407 : }
408 : }
409 2 : return ACL_SUCCESS;
410 : }
411 : } // namespace acl
|