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::AclrtDeviceSetLimit, "aclrtDeviceSetLimit"},
161 : {AclProfType::AclrtDeviceGetLimit, "aclrtDeviceGetLimit"},
162 : {AclProfType::AclrtDeviceGetStreamPriorityRange, "aclrtDeviceGetStreamPriorityRange"},
163 : {AclProfType::AclrtGetDeviceCapability, "aclrtGetDeviceCapability"},
164 : {AclProfType::AclrtCtxGetCurrentDefaultStream, "aclrtCtxGetCurrentDefaultStream"},
165 : {AclProfType::AclmdlRIBuildBegin, "aclmdlRIBuildBegin"},
166 : {AclProfType::AclmdlRIBindStream, "aclmdlRIBindStream"},
167 : {AclProfType::AclmdlRIEndTask, "aclmdlRIEndTask"},
168 : {AclProfType::AclmdlRIBuildEnd, "aclmdlRIBuildEnd"},
169 : {AclProfType::AclmdlRIUnbindStream, "aclmdlRIUnbindStream"},
170 : {AclProfType::AclmdlRIExecute, "aclmdlRIExecute"},
171 : {AclProfType::AclrtReduceAsync, "aclrtReduceAsync"},
172 : {AclProfType::AclrtGetDeviceResLimit, "aclrtGetDeviceResLimit"},
173 : {AclProfType::AclrtSetDeviceResLimit, "aclrtSetDeviceResLimit"},
174 : {AclProfType::AclrtResetDeviceResLimit, "aclrtResetDeviceResLimit"},
175 : {AclProfType::AclrtCreateLabel, "aclrtCreateLabel"},
176 : {AclProfType::AclrtSetLabel, "aclrtSetLabel"},
177 : {AclProfType::AclrtDestroyLabel, "aclrtDestroyLabel"},
178 : {AclProfType::AclrtCreateLabelList, "aclrtCreateLabelList"},
179 : {AclProfType::AclrtDestroyLabelList, "aclrtDestroyLabelList"},
180 : {AclProfType::AclrtSwitchLabelByIndex, "aclrtSwitchLabelByIndex"},
181 : {AclProfType::AclrtActiveStream, "aclrtActiveStream"},
182 : {AclProfType::AclrtSwitchStream, "aclrtSwitchStream"},
183 : {AclProfType::AclrtGetFunctionName, "aclrtGetFunctionName"},
184 : {AclProfType::AclmdlRISetName, "aclmdlRISetName"},
185 : {AclProfType::AclmdlRIGetName, "aclmdlRIGetName"},
186 : {AclProfType::AclrtGetBufFromChain, "aclrtGetBufFromChain"},
187 : {AclProfType::AclrtGetBufChainNum, "aclrtGetBufChainNum"},
188 : {AclProfType::AclrtAppendBufChain, "aclrtAppendBufChain"},
189 : {AclProfType::AclrtCopyBufRef, "aclrtCopyBufRef"},
190 : {AclProfType::AclrtGetBufUserData, "aclrtGetBufUserData"},
191 : {AclProfType::AclrtSetBufUserData, "aclrtSetBufUserData"},
192 : {AclProfType::AclrtGetBufData, "aclrtGetBufData"},
193 : {AclProfType::AclrtGetBufDataLen, "aclrtGetBufDataLen"},
194 : {AclProfType::AclrtSetBufDataLen, "aclrtSetBufDataLen"},
195 : {AclProfType::AclrtFreeBuf, "aclrtFreeBuf"},
196 : {AclProfType::AclrtAllocBuf, "aclrtAllocBuf"},
197 : {AclProfType::AclrtBinaryLoadFromData, "aclrtBinaryLoadFromData"},
198 : {AclProfType::AclrtRegisterCpuFunc, "aclrtRegisterCpuFunc"},
199 : {AclProfType::AclrtCmoAsyncWithBarrier, "aclrtCmoAsyncWithBarrier"},
200 : {AclProfType::AclrtCmoWaitBarrier, "aclrtCmoWaitBarrier"},
201 : {AclProfType::AclrtGetDevicesTopo, "aclrtGetDevicesTopo"},
202 : {AclProfType::AclrtMemcpyBatch, "aclrtMemcpyBatch"},
203 : {AclProfType::AclrtMemcpyBatchV2, "aclrtMemcpyBatchV2"},
204 : {AclProfType::AclrtMemcpyBatchAsync, "aclrtMemcpyBatchAsync"},
205 : {AclProfType::AclrtMemcpyBatchAsyncV2, "aclrtMemcpyBatchAsyncV2"},
206 : {AclProfType::AclrtIpcMemGetExportKey, "aclrtIpcMemGetExportKey"},
207 : {AclProfType::AclrtIpcMemClose, "aclrtIpcMemClose"},
208 : {AclProfType::AclrtIpcMemImportByKey, "aclrtIpcMemImportByKey"},
209 : {AclProfType::AclrtIpcMemSetImportPid, "aclrtIpcMemSetImportPid"},
210 : {AclProfType::AclrtNotifyBatchReset, "aclrtNotifyBatchReset"},
211 : {AclProfType::AclrtNotifyGetExportKey, "aclrtNotifyGetExportKey"},
212 : {AclProfType::AclrtNotifyImportByKey, "aclrtNotifyImportByKey"},
213 : {AclProfType::AclrtNotifySetImportPid, "aclrtNotifySetImportPid"},
214 : {AclProfType::AclrtGetStreamResLimit, "aclrtGetStreamResLimit"},
215 : {AclProfType::AclrtSetStreamResLimit, "aclrtSetStreamResLimit"},
216 : {AclProfType::AclrtResetStreamResLimit, "aclrtResetStreamResLimit"},
217 : {AclProfType::AclrtUseStreamResInCurrentThread, "aclrtUseStreamResInCurrentThread"},
218 : {AclProfType::AclrtUnuseStreamResInCurrentThread, "aclrtUnuseStreamResInCurrentThread"},
219 : {AclProfType::AclrtGetResInCurrentThread, "aclrtGetResInCurrentThread"},
220 : {AclProfType::AclrtCheckMemType, "aclrtCheckMemType"},
221 : {AclProfType::AclrtGetLogicDevIdByUserDevId, "aclrtGetLogicDevIdByUserDevId"},
222 : {AclProfType::AclrtGetUserDevIdByLogicDevId, "aclrtGetUserDevIdByLogicDevId"},
223 : {AclProfType::AclrtGetLogicDevIdByPhyDevId, "aclrtGetLogicDevIdByPhyDevId"},
224 : {AclProfType::AclrtGetPhyDevIdByLogicDevId, "aclrtGetPhyDevIdByLogicDevId"},
225 : {AclProfType::AclrtGetUserDevIdByPhyDevId, "aclrtGetUserDevIdByPhyDevId"},
226 : {AclProfType::AclrtGetPhyDevIdByUserDevId, "aclrtGetPhyDevIdByUserDevId"},
227 : {AclProfType::AclrtProfTrace, "aclrtProfTrace"},
228 : {AclProfType::AclrtLaunchKernelV2, "aclrtLaunchKernelV2"},
229 : {AclProfType::AclrtLaunchKernelWithHostArgs, "aclrtLaunchKernelWithHostArgs"},
230 : {AclProfType::AclrtLaunchKernelWithArgsArray, "aclrtLaunchKernelWithArgsArray"},
231 : {AclProfType::AclrtLaunchSIMTKernelWithArgsArray, "aclrtLaunchSIMTKernelWithArgsArray"},
232 : {AclProfType::AclrtCtxGetFloatOverflowAddr, "aclrtCtxGetFloatOverflowAddr"},
233 : {AclProfType::AclrtLaunchSIMTKernelWithHostArgs, "aclrtLaunchSIMTKernelWithHostArgs"},
234 : {AclProfType::AclrtGetFloatOverflowStatus, "aclrtGetFloatOverflowStatus"},
235 : {AclProfType::AclrtResetFloatOverflowStatus, "aclrtResetFloatOverflowStatus"},
236 : {AclProfType::AclrtNpuGetFloatOverFlowStatus, "aclrtNpuGetFloatOverFlowStatus"},
237 : {AclProfType::AclrtNpuClearFloatOverFlowStatus, "aclrtNpuClearFloatOverFlowStatus"},
238 : {AclProfType::AclrtLaunchHostFunc, "aclrtLaunchHostFunc"},
239 : {AclProfType::AclrtGetHardwareSyncAddr, "aclrtGetHardwareSyncAddr"},
240 : {AclProfType::AclrtRandomNumAsync, "aclrtRandomNumAsync"},
241 : {AclProfType::AclrtRegStreamStateCallback, "aclrtRegStreamStateCallback"},
242 : {AclProfType::AclrtRegDeviceStateCallback, "aclrtRegDeviceStateCallback"},
243 : {AclProfType::AclrtSetDeviceTaskAbortCallback, "aclrtSetDeviceTaskAbortCallback"},
244 : {AclProfType::AclrtGetOpExecuteTimeout, "aclrtGetOpExecuteTimeout"},
245 : {AclProfType::AclrtDevicePeerAccessStatus, "aclrtDevicePeerAccessStatus"},
246 : {AclProfType::AclrtStreamStop, "aclrtStreamStop"},
247 : {AclProfType::AclrtTaskUpdateAsync, "aclrtTaskUpdateAsync"},
248 : {AclProfType::AclrtCntNotifyCreate, "aclrtCntNotifyCreate"},
249 : {AclProfType::AclrtCntNotifyDestroy, "aclrtCntNotifyDestroy"},
250 : {AclProfType::AclrtIpcMemSetAttr, "aclrtIpcMemSetAttr"},
251 : {AclProfType::AclrtIpcMemImportPidInterServer, "aclrtIpcMemIpmportPidInterServer"},
252 : {AclProfType::AclrtNotifySetImportPidInterServer, "aclrtNotifySetImportPidInterServer"},
253 : {AclProfType::AclrtMemcpyAsyncWithOffset, "aclrtMemcpyAsyncWithOffset"},
254 : {AclProfType::AclrtCheckArchCompatibility, "aclrtCheckArchCompatibility"},
255 : {AclProfType::AclrtCmoGetDescSize, "aclrtCmoGetDescSize"},
256 : {AclProfType::AclrtCmoSetDesc, "aclrtCmoSetDesc"},
257 : {AclProfType::AclrtCmoAsyncWithDesc, "aclrtCmoAsyncWithDesc"},
258 : {AclProfType::AclmdlRIAbort, "aclmdlRIAbort"},
259 : {AclProfType::AclrtCntNotifyRecord, "aclrtCntNotifyRecord"},
260 : {AclProfType::AclrtCntNotifyWaitWithTimeout, "aclrtCntNotifyWaitWithTimeout"},
261 : {AclProfType::AclrtCntNotifyReset, "aclrtCntNotifyReset"},
262 : {AclProfType::AclrtCntNotifyGetId, "aclrtCntNotifyGetId"},
263 : {AclProfType::AclrtPersistentTaskClean, "aclrtPersistentTaskClean"},
264 : {AclProfType::AclrtGetErrorVerbose, "aclrtGetErrorVerbose"},
265 : {AclProfType::AclrtRepairError, "aclrtRepairError"},
266 : {AclProfType::AclrtMemSetAccess, "aclrtMemSetAccess"},
267 : {AclProfType::AclrtSetOpExecuteTimeOutV2, "aclrtSetOpExecuteTimeOutV2"},
268 : {AclProfType::AclrtGetOpTimeOutInterval, "aclrtGetOpTimeOutInterval"},
269 : {AclProfType::AclrtSnapShotProcessLock, "aclrtSnapShotProcessLock"},
270 : {AclProfType::AclrtSnapShotProcessUnlock, "aclrtSnapShotProcessUnlock"},
271 : {AclProfType::AclrtSnapShotProcessBackup, "aclrtSnapShotProcessBackup"},
272 : {AclProfType::AclrtSnapShotProcessRestore, "aclrtSnapShotProcessRestore"},
273 : {AclProfType::AclrtFreeWithDevSync, "aclrtFreeWithDevSync"},
274 : {AclProfType::AclrtFreeHostWithDevSync, "aclrtFreeHostWithDevSync"},
275 : {AclProfType::AclrtCacheLastTaskOpInfo, "aclrtCacheLastTaskOpInfo"},
276 : {AclProfType::AclrtCacheLastTaskExtendInfo, "aclrtCacheLastTaskExtendInfo"},
277 : {AclProfType::AclrtGetFunctionAttribute, "aclrtGetFunctionAttribute"},
278 : {AclProfType::AclrtFunctionGetParamCount, "aclrtFunctionGetParamCount"},
279 : {AclProfType::AclrtFunctionGetParamInfo, "aclrtFunctionGetParamInfo"},
280 : {AclProfType::AclrtIpcGetEventHandle, "aclrtIpcGetEventHandle"},
281 : {AclProfType::AclrtIpcOpenEventHandle, "aclrtIpcOpenEventHandle"},
282 : {AclProfType::AclrtMemRetainAllocationHandle, "aclrtMemRetainAllocationHandle"},
283 : {AclProfType::AclrtMemGetAllocationPropertiesFromHandle, "aclrtMemGetAllocationPropertiesFromHandle"},
284 : {AclProfType::AclrtHostMemMapCapabilities, "aclrtHostMemMapCapabilities"},
285 : {AclProfType::AclrtGetMemUsageInfo, "aclrtGetMemUsageInfo"},
286 : {AclProfType::AclrtReserveMemAddressNoUCMemory, "aclrtReserveMemAddressNoUCMemory"},
287 : {AclProfType::AclrtMemGetAddressRange, "aclrtMemGetAddressRange"},
288 : {AclProfType::aclrtMemP2PMap, "aclrtMemP2PMap"},
289 : {AclProfType::AclrtMemAllocManaged, "aclrtMemAllocManaged"},
290 : {AclProfType::AclrtMemPoolCreate, "aclrtMemPoolCreate"},
291 : {AclProfType::AclrtMemPoolDestroy, "aclrtMemPoolDestroy"},
292 : {AclProfType::AclrtMemPoolSetAttr, "aclrtMemPoolSetAttr"},
293 : {AclProfType::AclrtMemPoolGetAttr, "aclrtMemPoolGetAttr"},
294 : {AclProfType::AclrtMemPoolMallocAsync, "aclrtMemPoolMallocAsync"},
295 : {AclProfType::AclrtMemPoolFreeAsync, "aclrtMemPoolFreeAsync"},
296 : {AclProfType::AclrtMemPoolTrimTo, "aclrtMemPoolTrimTo"},
297 : {AclProfType::AclmdlRITaskGetSeqId, "aclmdlRITaskGetSeqId"},
298 : {AclProfType::AclmdlRIGetStreams, "aclmdlRIGetStreams"},
299 : {AclProfType::AclmdlRIGetTasksByStream, "aclmdlRIGetTasksByStream"},
300 : {AclProfType::AclmdlRITaskGetType, "aclmdlRITaskGetType"},
301 : {AclProfType::AclmdlRIDestroyRegisterCallback, "aclmdlRIDestroyRegisterCallback"},
302 : {AclProfType::AclmdlRIDestroyUnregisterCallback, "aclmdlRIDestroyUnregisterCallback"},
303 : {AclProfType::AclmdlRITaskGetParams, "aclmdlRITaskGetParams"},
304 : {AclProfType::AclmdlRITaskSetParams, "aclmdlRITaskSetParams"},
305 : {AclProfType::aclmdlRIKernelTaskGetAttribute, "aclmdlRIKernelTaskGetAttribute"},
306 : {AclProfType::AclmdlRIUpdate, "aclmdlRIUpdate"},
307 : {AclProfType::AclmdlRITaskDisable, "aclmdlRITaskDisable"},
308 : {AclProfType::AclrtMemManagedAdvise, "aclrtMemManagedAdvise"},
309 : {AclProfType::AclrtMemManagedGetAttr, "aclrtMemManagedGetAttr"},
310 : {AclProfType::AclrtMemManagedGetAttrs, "aclrtMemManagedGetAttrs"},
311 : {AclProfType::AclrtMemManagedPrefetchAsync, "aclrtMemManagedPrefetchAsync"},
312 : {AclProfType::AclrtMemManagedPrefetchBatchAsync, "aclrtMemManagedPrefetchBatchAsync"},
313 : {AclProfType::AclrtDeviceGetHostAtomicCapabilities, "aclrtDeviceGetHostAtomicCapabilities"},
314 : {AclProfType::AclrtDeviceGetP2PAtomicCapabilities, "aclrtDeviceGetP2PAtomicCapabilities"},
315 : {AclProfType::AclrtMemMapSelectedLink, "aclrtMemMapSelectedLink"},
316 : {AclProfType::AclmdlRIGetId, "aclmdlRIGetId"},
317 : {AclProfType::AclrtMemsetD32, "aclrtMemsetD32"},
318 : {AclProfType::AclrtMemsetD32Async, "aclrtMemsetD32Async"},
319 : {AclProfType::AclrtGetFuncBySymbol, "aclrtGetFuncBySymbol"},
320 : {AclProfType::AclrtGetSymbolAddress, "aclrtGetSymbolAddress"},
321 : {AclProfType::AclrtGetSymbolSize, "aclrtGetSymbolSize"},
322 : {AclProfType::AclrtMemcpyFromSymbol, "aclrtMemcpyFromSymbol"},
323 : {AclProfType::AclrtMemcpyFromSymbolAsync, "aclrtMemcpyFromSymbolAsync"},
324 : {AclProfType::AclrtMemcpyToSymbol, "aclrtMemcpyToSymbol"},
325 : {AclProfType::AclrtMemcpyToSymbolAsync, "aclrtMemcpyToSymbolAsync"},
326 : {AclProfType::AclmdlRICondHandleCreate, "aclmdlRICondHandleCreate"},
327 : {AclProfType::AclmdlRICondHandleGetCondPtr, "aclmdlRICondHandleGetCondPtr"},
328 : {AclProfType::AclmdlRIAddCondTask, "aclmdlRIAddCondTask"},
329 : {AclProfType::AclmdlRICaptureToModelRIBegin, "aclmdlRICaptureToModelRIBegin"},
330 : };
331 :
332 629 : aclError RegisterType(const uint32_t index)
333 : {
334 629 : const AclProfType type = static_cast<AclProfType>(index);
335 629 : const auto iter = PROF_TYPE_TO_NAMES.find(type);
336 629 : if (iter != PROF_TYPE_TO_NAMES.cend()) {
337 629 : const auto ret = MsprofRegTypeInfo(MSPROF_REPORT_ACL_LEVEL, index, iter->second.c_str());
338 629 : if (ret != MSPROF_ERROR_NONE) {
339 5 : ACL_LOG_CALL_ERROR("Registered api type [%u] failed = %d", index, ret);
340 5 : return ACL_ERROR_PROFILING_FAILURE;
341 : }
342 : }
343 624 : return ACL_SUCCESS;
344 : }
345 26 : AclProfilingManager& AclProfilingManager::GetInstance()
346 : {
347 26 : static AclProfilingManager profilingManager;
348 26 : return profilingManager;
349 : }
350 :
351 6 : aclError AclProfilingManager::Init()
352 : {
353 6 : const std::lock_guard<std::mutex> lk(mutex_);
354 6 : const aclError reg_ret = RegisterProfilingType();
355 6 : if (reg_ret != 0) {
356 5 : ACL_LOG_INNER_ERROR("[Init][ProfEngine]init acl profiling reg failed, errorCode = %d", reg_ret);
357 5 : return reg_ret;
358 : }
359 1 : isProfiling_ = true;
360 1 : AclProfilingReporter::profRun = true;
361 1 : return ACL_SUCCESS;
362 6 : }
363 :
364 1 : aclError AclProfilingManager::UnInit()
365 : {
366 1 : const std::lock_guard<std::mutex> lk(mutex_);
367 1 : isProfiling_ = false;
368 1 : AclProfilingReporter::profRun = false;
369 1 : return ACL_SUCCESS;
370 1 : }
371 :
372 0 : bool AclProfilingManager::IsDeviceListEmpty() const { return deviceList_.empty(); }
373 :
374 2 : aclError AclProfilingManager::AddDeviceList(const uint32_t* const deviceIdList, const uint32_t deviceNums)
375 : {
376 2 : if (deviceNums == 0U) {
377 1 : return ACL_SUCCESS;
378 : }
379 1 : ACL_REQUIRES_NOT_NULL(deviceIdList);
380 4 : for (size_t devId = 0U; devId < deviceNums; devId++) {
381 3 : if (deviceList_.count(*(deviceIdList + devId)) == 0U) {
382 3 : (void)deviceList_.insert(*(deviceIdList + devId));
383 3 : ACL_LOG_INFO("device id %u is successfully added in acl profiling", *(deviceIdList + devId));
384 : }
385 : }
386 1 : return ACL_SUCCESS;
387 : }
388 :
389 2 : aclError AclProfilingManager::RemoveDeviceList(const uint32_t* const deviceIdList, const uint32_t deviceNums)
390 : {
391 2 : if (deviceNums == 0U) {
392 1 : return ACL_SUCCESS;
393 : }
394 1 : ACL_REQUIRES_NOT_NULL(deviceIdList);
395 4 : for (size_t devId = 0U; devId < deviceNums; devId++) {
396 3 : const auto iter = deviceList_.find(*(deviceIdList + devId));
397 3 : if (iter != deviceList_.end()) {
398 3 : (void)deviceList_.erase(iter);
399 : }
400 : }
401 1 : return ACL_SUCCESS;
402 : }
403 :
404 7 : aclError AclProfilingManager::RegisterProfilingType() const
405 : {
406 631 : for (uint32_t i = static_cast<uint32_t>(AclProfType::AclRtProfTypeStart) + 1U;
407 631 : i < static_cast<uint32_t>(AclProfType::AclRtProfTypeEnd); ++i) {
408 629 : const auto ret = RegisterType(i);
409 629 : if (ret != ACL_SUCCESS) {
410 5 : return ret;
411 : }
412 : }
413 2 : return ACL_SUCCESS;
414 : }
415 : } // namespace acl
|