* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This program is free software, you can redistribute it and/or modify it under the terms and conditions of
* CANN Open Software License Agreement Version 2.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
*/
#ifndef ACL_PROFI_REPORTER_H_
#define ACL_PROFI_REPORTER_H_
#include "acl/acl_base.h"
#include "aprof_pub.h"
#define ACL_RT_PROF_TYPE_START_OFFSET 0x000000U
namespace acl {
enum AclProfType {
AclRtProfTypeStart = MSPROF_REPORT_ACL_RUNTIME_BASE_TYPE + ACL_RT_PROF_TYPE_START_OFFSET,
AclmdlRIExecuteAsync,
AclmdlRIDestroy,
AclmdlRICaptureBegin,
AclmdlRICaptureGetInfo,
AclmdlRICaptureEnd,
AclmdlRIDebugPrint,
AclmdlRIDebugJsonPrint,
AclmdlRICaptureThreadExchangeMode,
AclmdlRICaptureTaskGrpBegin,
AclmdlRICaptureTaskGrpEnd,
AclmdlRICaptureTaskUpdateBegin,
AclmdlRICaptureTaskUpdateEnd,
AclCreateDataBuffer,
AclrtLaunchCallback,
AclrtProcessReport,
AclrtCreateContext,
AclrtDestroyContext,
AclrtSetCurrentContext,
AclrtGetCurrentContext,
AclrtSetDevice,
AclrtSetDeviceWithoutTsdVXX,
AclrtResetDevice,
AclrtResetDeviceForce,
AclrtResetDeviceWithoutTsdVXX,
AclrtSynchronizeDevice,
AclrtSynchronizeDeviceWithTimeout,
AclrtSetTsDevice,
AclrtCreateEvent,
AclrtCreateEventWithFlag,
AclrtCreateEventExWithFlag,
AclrtDestroyEvent,
AclrtRecordEvent,
AclrtResetEvent,
AclrtQueryEvent,
AclrtQueryEventStatus,
AclrtQueryEventWaitStatus,
AclrtSynchronizeEvent,
AclrtSetOpWaitTimeout,
AclrtSetOpExecuteTimeOut,
AclrtSetOpExecuteTimeOutWithMs,
AclrtSetGroup,
AclrtGetGroupCount,
AclrtGetAllGroupInfo,
AclrtGetGroupInfoDetail,
AclMallocMemInner,
AclrtMallocCached,
AclrtMemFlush,
AclrtMemInvalidate,
AclrtFree,
AclrtMallocHost,
AclrtFreeHost,
AclrtMemcpy,
AclrtMemset,
AclrtMemcpyAsync,
AclrtMemcpyAsyncWithCondition,
AclrtMemsetAsync,
AclrtDeviceCanAccessPeer,
AclrtDeviceEnablePeerAccess,
AclrtDeviceDisablePeerAccess,
AclrtGetMemInfo,
AclrtMemcpy2d,
AclrtMemcpy2dAsync,
AclrtCreateStream,
AclrtCreateStreamWithConfig,
AclrtDestroyStream,
AclrtDestroyStreamForce,
AclrtSynchronizeStream,
AclrtSynchronizeStreamWithTimeout,
AclrtStreamQuery,
AclrtStreamWaitEvent,
AclrtAllocatorCreateDesc,
AclrtAllocatorDestroyDesc,
AclrtCtxGetSysParamOpt,
AclrtCtxSetSysParamOpt,
AclrtGetOverflowStatus,
AclrtResetOverflowStatus,
AclrtGetDeviceCount,
AclrtGetDevice,
AclrtMalloc,
AclrtSetStreamFailureMode,
AclrtQueryDeviceStatus,
AclrtReserveMemAddress,
AclrtReleaseMemAddress,
AclrtMallocPhysical,
AclrtFreePhysical,
AclrtMapMem,
AclrtUnmapMem,
AclrtLaunchKernel,
AclrtMemExportToShareableHandle,
AclrtMemImportFromShareableHandle,
AclrtMemSetPidToShareableHandle,
AclrtMemGetAllocationGranularity,
AclrtDeviceGetBareTgid,
AclrtGetMemUceInfo,
AclrtDeviceTaskAbort,
AclrtMemUceRepair,
AclrtCmoAsync,
AclrtStreamAbort,
AclrtMemcpyAsyncWithDesc,
AclrtBinaryLoadFromFile,
AclrtLaunchKernelWithConfig,
AclrtKernelArgsAppend,
AclrtKernelArgsAppendPlaceHolder,
AclrtKernelArgsParaUpdate,
AclrtKernelArgsGetMemSize,
AclrtKernelArgsGetHandleMemSize,
AclrtKernelArgsGetPlaceHolderBuffer,
AclrtMallocWithCfg,
AclrtMallocForTaskScheduler,
AclrtMallocHostWithCfg,
AclrtGetThreadLastTaskId,
AclrtStreamGetId,
AclrtPointerGetAttributes,
AclrtHostRegister,
AclrtHostUnregister,
AclrtValueWrite,
AclrtValueWait,
AclrtGetStreamAvailableNum,
AclrtSetStreamAttribute,
AclrtGetStreamAttribute,
AclrtCreateNotify,
AclrtDestroyNotify,
AclrtRecordNotify,
AclrtWaitAndResetNotify,
AclrtGetNotifyId,
AclrtGetEventId,
AclrtGetEventAvailNum,
AclrtGetDeviceInfo,
AclrtDeviceGetStreamPriorityRange,
AclrtGetDeviceCapability,
AclrtCtxGetCurrentDefaultStream,
AclmdlRIBuildBegin,
AclmdlRIBindStream,
AclmdlRIEndTask,
AclmdlRIBuildEnd,
AclmdlRIUnbindStream,
AclmdlRIExecute,
AclrtReduceAsync,
AclrtGetDeviceResLimit,
AclrtSetDeviceResLimit,
AclrtResetDeviceResLimit,
AclrtGetStreamResLimit,
AclrtSetStreamResLimit,
AclrtResetStreamResLimit,
AclrtUseStreamResInCurrentThread,
AclrtUnuseStreamResInCurrentThread,
AclrtGetResInCurrentThread,
AclrtCreateLabel,
AclrtSetLabel,
AclrtDestroyLabel,
AclrtCreateLabelList,
AclrtDestroyLabelList,
AclrtSwitchLabelByIndex,
AclrtActiveStream,
AclrtSwitchStream,
AclrtGetFunctionName,
AclmdlRISetName,
AclmdlRIGetName,
AclrtGetBufFromChain,
AclrtGetBufChainNum,
AclrtAppendBufChain,
AclrtCopyBufRef,
AclrtGetBufUserData,
AclrtSetBufUserData,
AclrtGetBufData,
AclrtGetBufDataLen,
AclrtSetBufDataLen,
AclrtFreeBuf,
AclrtAllocBuf,
AclrtBinaryLoadFromData,
AclrtRegisterCpuFunc,
AclrtCmoAsyncWithBarrier,
AclrtCmoWaitBarrier,
AclrtGetDevicesTopo,
AclrtMemcpyBatch,
AclrtMemcpyBatchAsync,
AclrtIpcMemGetExportKey,
AclrtIpcMemClose,
AclrtIpcMemImportByKey,
AclrtIpcMemSetImportPid,
AclrtNotifyBatchReset,
AclrtNotifyGetExportKey,
AclrtNotifyImportByKey,
AclrtNotifySetImportPid,
AclrtCheckMemType,
AclrtGetLogicDevIdByUserDevId,
AclrtGetUserDevIdByLogicDevId,
AclrtGetLogicDevIdByPhyDevId,
AclrtGetPhyDevIdByLogicDevId,
AclrtProfTrace,
AclrtLaunchKernelV2,
AclrtLaunchKernelWithHostArgs,
AclrtCtxGetFloatOverflowAddr,
AclrtGetFloatOverflowStatus,
AclrtResetFloatOverflowStatus,
AclrtNpuGetFloatOverFlowStatus,
AclrtNpuClearFloatOverFlowStatus,
AclrtLaunchHostFunc,
AclrtGetHardwareSyncAddr,
AclrtRandomNumAsync,
AclrtRegStreamStateCallback,
AclrtRegDeviceStateCallback,
AclrtSetDeviceTaskAbortCallback,
AclrtGetOpExecuteTimeout,
AclrtDevicePeerAccessStatus,
AclrtStreamStop,
AclrtTaskUpdateAsync,
AclrtCntNotifyCreate,
AclrtCntNotifyDestroy,
AclrtIpcMemSetAttr,
AclrtIpcMemImportPidInterServer,
AclrtNotifySetImportPidInterServer,
AclrtMemcpyAsyncWithOffset,
AclrtGetOpExecuteTimeOut,
AclrtCheckArchCompatibility,
AclrtCmoGetDescSize,
AclrtCmoSetDesc,
AclrtCmoAsyncWithDesc,
AclmdlRIAbort,
AclrtMemExportToShareableHandleV2,
AclrtMemImportFromShareableHandleV2,
AclrtMemSetPidToShareableHandleV2,
AclrtCntNotifyRecord,
AclrtCntNotifyWaitWithTimeout,
AclrtCntNotifyReset,
AclrtCntNotifyGetId,
AclrtPersistentTaskClean,
AclrtGetErrorVerbose,
AclrtRepairError,
AclrtSnapShotProcessLock,
AclrtSnapShotProcessUnlock,
AclrtSnapShotProcessBackup,
AclrtSnapShotProcessRestore,
AclrtBinaryGetDevAddress,
AclrtStreamWaitEventWithTimeout,
AclrtMemSetAccess,
AclrtSetOpExecuteTimeOutV2,
AclrtGetOpTimeOutInterval,
AclrtDeviceGetUuid,
AclrtMemGetAccess,
AclrtFreeWithDevSync,
AclrtFreeHostWithDevSync,
AclrtCacheLastTaskOpInfo,
AclrtGetFunctionAttribute,
AclrtIpcGetEventHandle,
AclrtIpcOpenEventHandle,
AclrtMemRetainAllocationHandle,
AclrtMemGetAllocationPropertiesFromHandle,
AclrtStreamGetPriority,
AclrtStreamGetFlags,
AclrtGetMemUsageInfo,
AclrtHostRegisterV2,
AclrtHostGetDevicePointer,
AclRtProfTypeEnd
};
class ACL_FUNC_VISIBILITY AclProfilingReporter {
public:
explicit AclProfilingReporter(const AclProfType apiId);
virtual ~AclProfilingReporter() noexcept;
static bool profRun;
private:
uint64_t startTime_ = 0UL;
const AclProfType aclApi_;
};
}
#define ACL_PROFILING_REG(apiId) \
const acl::AclProfilingReporter profilingReporter(apiId)
#endif