LCOV - code coverage report
Current view: top level - acl/aclrt_impl - kernel.cpp (source / functions) Coverage Total Hit
Test: coverage.info Lines: 99.6 % 459 457
Test Date: 2026-08-06 15:29:52 Functions: 100.0 % 51 51

            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 "acl_rt_impl.h"
      12              : #include <map>
      13              : #include "runtime/kernel.h"
      14              : #include "runtime/rts/rts_kernel.h"
      15              : #include "runtime/inner_kernel.h"
      16              : #include "runtime/rt_stars_define.h"
      17              : #include "runtime/rts/rts_stars.h"
      18              : #include "runtime/rts/rts_model.h"
      19              : #include "runtime/rt_inner_task.h"
      20              : #include "common/log_inner.h"
      21              : #include "common/error_codes_inner.h"
      22              : #include "common/prof_reporter.h"
      23              : #include "common/resource_statistics.h"
      24              : #include "utils/data_type_utils.h"
      25              : namespace {
      26              : static const std::map<aclDataType, rtRandomNumDataType> kMapDataType = {
      27              :     { ACL_INT32, RT_RANDOM_NUM_DATATYPE_INT32 },
      28              :     { ACL_INT64, RT_RANDOM_NUM_DATATYPE_INT64 },
      29              :     { ACL_UINT32, RT_RANDOM_NUM_DATATYPE_UINT32 },
      30              :     { ACL_UINT64, RT_RANDOM_NUM_DATATYPE_UINT64 },
      31              :     { ACL_BF16, RT_RANDOM_NUM_DATATYPE_BF16 },
      32              :     { ACL_FLOAT16, RT_RANDOM_NUM_DATATYPE_FP16 },
      33              :     { ACL_FLOAT, RT_RANDOM_NUM_DATATYPE_FP32 },
      34              : };
      35              : 
      36              : }
      37              : 
      38              : #ifdef __cplusplus
      39              : extern "C" {
      40              : #endif
      41              : 
      42            6 : aclrtBinary aclrtCreateBinaryImpl(const void *data, size_t dataLen)
      43              : {
      44            6 :   ACL_ADD_APPLY_TOTAL_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_ALLOCATOR_BINARY_DESC);
      45            6 :   ACL_LOG_INFO("start to execute aclrtCreateBinary");
      46           10 :   ACL_REQUIRES_NOT_NULL_RET_NULL_INPUT_REPORT(data);
      47              : 
      48            5 :   rtDevBinary_t *binaryDesc = new(std::nothrow) rtDevBinary_t();
      49            5 :   ACL_CHECK_MALLOC_RESULT_REPORT_RET(binaryDesc, sizeof(rtDevBinary_t), "new", nullptr);
      50              : 
      51            5 :   binaryDesc->magic = 0U;
      52            5 :   binaryDesc->version = 0U;
      53            5 :   binaryDesc->data = data;
      54            5 :   binaryDesc->length = static_cast<uint64_t>(dataLen);
      55              : 
      56            5 :   ACL_ADD_APPLY_SUCCESS_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_ALLOCATOR_BINARY_DESC);
      57            5 :   return binaryDesc;
      58              : }
      59              : 
      60            6 : aclError aclrtDestroyBinaryImpl(aclrtBinary binary)
      61              : {
      62            6 :   ACL_ADD_RELEASE_TOTAL_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_ALLOCATOR_BINARY_DESC);
      63            6 :   ACL_LOG_INFO("start to execute aclrtDestroyBinary");
      64            6 :   ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binary);
      65              : 
      66            5 :   delete reinterpret_cast<rtDevBinary_t *>(binary);
      67              : 
      68            5 :   ACL_ADD_RELEASE_SUCCESS_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_ALLOCATOR_BINARY_DESC);
      69            5 :   return ACL_SUCCESS;
      70              : }
      71              : 
      72            4 : aclError aclrtBinaryLoadImpl(const aclrtBinary binary, aclrtBinHandle *binHandle)
      73              : {
      74            4 :   ACL_ADD_APPLY_TOTAL_COUNT(acl::ACL_STATISTICS_LOAD_UNLOAD_BINARY);
      75            4 :   ACL_LOG_INFO("start to execute aclrtBinaryLoad");
      76            4 :   ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binary);
      77            3 :   ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binHandle);
      78            2 :   rtDevBinary_t *bin = reinterpret_cast<rtDevBinary_t *>(binary);
      79            2 :   ACL_REQUIRES_RTS_OK(rtBinaryLoadWithoutTilingKey(bin->data, bin->length, binHandle));
      80              : 
      81            1 :   ACL_ADD_APPLY_SUCCESS_COUNT(acl::ACL_STATISTICS_LOAD_UNLOAD_BINARY);
      82            1 :   return ACL_SUCCESS;
      83              : }
      84              : 
      85            3 : aclError aclrtBinaryUnLoadImpl(aclrtBinHandle binHandle)
      86              : {
      87            3 :   ACL_ADD_RELEASE_TOTAL_COUNT(acl::ACL_STATISTICS_LOAD_UNLOAD_BINARY);
      88            3 :   ACL_LOG_INFO("start to execute aclrtBinaryUnLoad");
      89            3 :   ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binHandle);
      90              : 
      91            2 :   ACL_REQUIRES_RTS_OK(rtBinaryUnLoad(binHandle));
      92              : 
      93            1 :   ACL_ADD_RELEASE_SUCCESS_COUNT(acl::ACL_STATISTICS_LOAD_UNLOAD_BINARY);
      94            1 :   return ACL_SUCCESS;
      95              : }
      96              : 
      97            5 : aclError aclrtBinaryGetFunctionImpl(const aclrtBinHandle binHandle, const char *kernelName, aclrtFuncHandle *funcHandle)
      98              : {
      99            5 :   ACL_LOG_INFO("start to execute aclrtBinaryGetFunction");
     100            5 :   ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binHandle);
     101            4 :   ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(kernelName);
     102            3 :   ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     103              : 
     104              :   // currently not support multi kernel, so tilingKey always use 0
     105            2 :   ACL_REQUIRES_RTS_OK(rtsFuncGetByName(binHandle, kernelName, funcHandle));
     106              : 
     107            1 :   return ACL_SUCCESS;
     108              : }
     109              : 
     110            3 : aclError aclmdlRITaskDisableImpl(aclmdlRITask task)
     111              : {
     112            3 :     ACL_PROFILING_REG(acl::AclProfType::AclmdlRITaskDisable);
     113            3 :     ACL_REQUIRES_RTS_OK_WARN_NOT_SUPPORT(rtModelTaskDisable(static_cast<rtTask_t>(task)), rtModelTaskDisable);
     114            1 :     return ACL_SUCCESS;
     115            3 : }
     116              : 
     117            6 : aclError aclrtLaunchKernelImpl(aclrtFuncHandle funcHandle, uint32_t numBlocks, const void *argsData,
     118              :                                size_t argsSize, aclrtStream stream)
     119              : {
     120            6 :     ACL_PROFILING_REG(acl::AclProfType::AclrtLaunchKernel);
     121            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     122            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(argsData);
     123              : 
     124            4 :     rtArgsEx_t argsInfo = {};
     125            4 :     argsInfo.args = const_cast<void *>(argsData);
     126            4 :     argsInfo.argsSize = static_cast<uint32_t>(argsSize);
     127            4 :     argsInfo.isNoNeedH2DCopy = 1U;
     128              : 
     129            4 :     const rtError_t rtErr = rtLaunchKernelByFuncHandleV3(funcHandle, numBlocks, &argsInfo, stream, nullptr);
     130            4 :     if (rtErr != RT_ERROR_NONE) {
     131            2 :         if (rtErr == ACL_ERROR_RT_INVALID_HANDLE) {
     132            1 :             ACL_LOG_WARN("rtLaunchKernelByFuncHandleV3 funHandle is invalid, runtime result = %d.", rtErr);
     133            1 :             return ACL_ERROR_RT_INVALID_HANDLE;
     134              :         } else {
     135            1 :             return ACL_GET_ERRCODE_RTS(rtErr);
     136              :         }
     137              :     }
     138            2 :   return ACL_SUCCESS;
     139            6 : }
     140              : 
     141            3 : aclError aclrtBinaryLoadFromFileImpl(const char* binPath, aclrtBinaryLoadOptions *options, aclrtBinHandle *binHandle)
     142              : {
     143            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtBinaryLoadFromFile);
     144            3 :     ACL_LOG_INFO("start to execute aclrtBinaryLoadFromFile, binPath[%s]", binPath);
     145            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binPath);
     146            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binHandle);
     147            2 :     const rtLoadBinaryConfig_t *rt_options = nullptr;
     148            2 :     if (options != nullptr) {
     149            1 :        rt_options = reinterpret_cast<rtLoadBinaryConfig_t *>(options);
     150              :     }
     151            2 :     ACL_REQUIRES_RTS_OK(rtsBinaryLoadFromFile(binPath, rt_options, binHandle));
     152            1 :     return ACL_SUCCESS;
     153            3 : }
     154              : 
     155            3 : aclError aclrtBinaryGetDevAddressImpl(const aclrtBinHandle binHandle, void **binAddr, size_t *binSize)
     156              : {
     157            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtBinaryGetDevAddress);
     158            3 :     ACL_LOG_INFO("start to execute aclrtBinaryGetDevAddress");
     159            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binHandle);
     160            2 :     uint32_t tempBinSize = 0U;
     161              : 
     162            2 :     const auto rtErr = rtsBinaryGetDevAddress(binHandle, binAddr, &tempBinSize);
     163            2 :     if (rtErr != RT_ERROR_NONE) {
     164            1 :         ACL_LOG_INFO("get bin address failed, runtime result = %d", rtErr);
     165            1 :         return ACL_GET_ERRCODE_RTS(rtErr);
     166              :     }
     167            1 :     *binSize = static_cast<size_t>(tempBinSize);
     168            1 :     ACL_LOG_INFO("successfully execute aclrtBinaryGetDevAddress");
     169            1 :     return ACL_SUCCESS;
     170            3 : }
     171              : 
     172            3 : aclError aclrtBinaryGetFunctionByEntryImpl(aclrtBinHandle binHandle, uint64_t funcEntry, aclrtFuncHandle *funcHandle)
     173              : {
     174            3 :     ACL_LOG_INFO("start to execute aclrtBinaryGetFunctionByEntry");
     175            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binHandle);
     176            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     177              : 
     178            2 :     ACL_REQUIRES_RTS_OK(rtsFuncGetByEntry(binHandle, funcEntry, funcHandle));
     179            1 :     return ACL_SUCCESS;
     180              : }
     181              : 
     182            7 : aclError aclrtBinaryGetGlobalImpl(aclrtBinHandle binHandle, const char *name, void **dptr, size_t *size)
     183              : {
     184            7 :     ACL_LOG_INFO("start to execute aclrtBinaryGetGlobal");
     185            7 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binHandle);
     186            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(name);
     187            5 :     if ((dptr == nullptr) && (size == nullptr)) {
     188            1 :         ACL_LOG_ERROR("[Check][dptr,size]dptr and size cannot both be null.");
     189            4 :         acl::AclErrorLogManager::ReportInputError(acl::INVALID_NULL_POINTER_AT_SAME_TIME_MSG,
     190              :             {"func", "param"}, {"aclrtBinaryGetGlobal", "dptr and size"});
     191            1 :         return ACL_ERROR_INVALID_PARAM;
     192              :     }
     193              : 
     194            4 :     ACL_REQUIRES_RTS_OK_WARN_NOT_SUPPORT(rtBinaryGetGlobal(binHandle, name, dptr, size), rtBinaryGetGlobal);
     195            1 :     ACL_LOG_INFO("execute aclrtBinaryGetGlobal success, name=%s", name);
     196            1 :     return ACL_SUCCESS;
     197              : }
     198              : 
     199            4 : aclError aclrtGetFuncBySymbolImpl(const void *symbol, aclrtFuncHandle *funcHandle)
     200              : {
     201            4 :     ACL_PROFILING_REG(acl::AclProfType::AclrtGetFuncBySymbol);
     202            4 :     ACL_LOG_INFO("start to execute aclrtGetFuncBySymbol");
     203            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(symbol);
     204            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     205              : 
     206            2 :     ACL_REQUIRES_RTS_OK(rtGetFuncBySymbol(symbol, funcHandle));
     207            1 :     return ACL_SUCCESS;
     208            4 : }
     209              : 
     210            3 : aclError aclrtGetFunctionAddrImpl(aclrtFuncHandle funcHandle, void **aicAddr, void **aivAddr)
     211              : {
     212            3 :     ACL_LOG_INFO("start to execute aclrtGetFunctionAddr");
     213            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     214            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(aicAddr);
     215            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(aivAddr);
     216              : 
     217            2 :     ACL_REQUIRES_RTS_OK(rtsFuncGetAddr(funcHandle, aicAddr, aivAddr));
     218            1 :     return ACL_SUCCESS;
     219              : }
     220              : 
     221            2 : aclError aclrtGetFunctionSizeImpl(aclrtFuncHandle funcHandle, size_t *aicSize, size_t *aivSize)
     222              : {
     223            2 :     ACL_REQUIRES_RTS_OK(rtFuncGetSize(funcHandle, aicSize, aivSize));
     224            1 :     return ACL_SUCCESS;
     225              : }
     226              : 
     227            6 : aclError aclrtLaunchKernelWithConfigImpl(aclrtFuncHandle funcHandle, uint32_t numBlocks, aclrtStream stream,
     228              :                                          aclrtLaunchKernelCfg *cfg, aclrtArgsHandle argsHandle, void *reserve)
     229              : {
     230            6 :     ACL_PROFILING_REG(acl::AclProfType::AclrtLaunchKernelWithConfig);
     231            6 :     ACL_LOG_INFO("Start to execute aclrtLaunchKernelWithConfig");
     232            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     233            8 :     ACL_REQUIRES_POSITIVE_REPORT(numBlocks);
     234            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(argsHandle);
     235            3 :     ACL_CHECK_INVALID_PARAM_NO_VALUE(reserve == nullptr, "reserve",
     236              :         "reserve is a reserved parameter and must be nullptr");
     237              : 
     238            3 :     rtKernelLaunchCfg_t *rt_cfg = nullptr;
     239            3 :     if (cfg != nullptr ) {
     240            1 :         rt_cfg = reinterpret_cast<rtKernelLaunchCfg_t *>(cfg);
     241              :     }
     242            3 :     const auto rtErr = rtsLaunchKernelWithConfig(funcHandle, numBlocks, stream, rt_cfg, argsHandle, reserve);
     243            3 :     if (rtErr != RT_ERROR_NONE) {
     244            2 :         if (rtErr == ACL_ERROR_RT_INVALID_HANDLE) {
     245            1 :             ACL_LOG_WARN("Launch kernel with config funHandle is invalid, runtime result = %d.", rtErr);
     246            1 :             return ACL_ERROR_RT_INVALID_HANDLE;
     247              :         } else {
     248            1 :             return ACL_GET_ERRCODE_RTS(rtErr);
     249              :         }
     250              :     }
     251            1 :     return ACL_SUCCESS;
     252            6 : }
     253              : 
     254            3 : aclError aclmdlRITaskGetParamsImpl(aclmdlRITask task, aclmdlRITaskParams* params)
     255              : {
     256            3 :     ACL_PROFILING_REG(acl::AclProfType::AclmdlRITaskGetParams);
     257            3 :     ACL_REQUIRES_RTS_OK_WARN_NOT_SUPPORT(rtModelTaskGetParams(static_cast<rtTask_t>(task), reinterpret_cast<rtTaskParams*>(params)), rtModelTaskGetParams);
     258            1 :     return ACL_SUCCESS;
     259            3 : }
     260              : 
     261            3 : aclError aclmdlRITaskSetParamsImpl(aclmdlRITask task, aclmdlRITaskParams* params)
     262              : {
     263            3 :     ACL_PROFILING_REG(acl::AclProfType::AclmdlRITaskSetParams);
     264            3 :     ACL_REQUIRES_RTS_OK_WARN_NOT_SUPPORT(rtModelTaskSetParams(static_cast<rtTask_t>(task), reinterpret_cast<rtTaskParams*>(params)), rtModelTaskSetParams);
     265            1 :     return ACL_SUCCESS;
     266            3 : }
     267              : 
     268            2 : aclError aclmdlRIKernelTaskGetAttributeImpl(aclmdlRITask task, aclrtLaunchKernelAttrId attrId, aclrtLaunchKernelAttrValue *attrValue)
     269              : {
     270            2 :     ACL_PROFILING_REG(acl::AclProfType::aclmdlRIKernelTaskGetAttribute);
     271            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(task);
     272            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(attrValue);
     273            2 :     ACL_REQUIRES_RTS_OK(rtModelKernelTaskGetAttribute(static_cast<rtTask_t>(task),
     274              :         static_cast<rtLaunchKernelAttrId>(attrId),
     275              :         reinterpret_cast<rtLaunchKernelAttrVal_t*>(attrValue)));
     276            1 :     return ACL_SUCCESS;
     277            2 : }
     278              : 
     279            3 : aclError aclrtKernelArgsInitImpl(aclrtFuncHandle funcHandle, aclrtArgsHandle *argsHandle)
     280              : {
     281            3 :     ACL_LOG_INFO("Start to execute aclrtKernelArgsInit");
     282            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     283            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(argsHandle);
     284              : 
     285            2 :     ACL_REQUIRES_RTS_OK(rtsKernelArgsInit(funcHandle, argsHandle));
     286            1 :     return ACL_SUCCESS;
     287              : }
     288              : 
     289            6 : aclError aclrtKernelArgsInitByUserMemImpl(aclrtFuncHandle funcHandle, aclrtArgsHandle argsHandle, void *userHostMem,
     290              :                                           size_t actualArgsSize)
     291              : {
     292            6 :     ACL_LOG_INFO("Start to execute aclrtKernelArgsInitByUserMem");
     293            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     294            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(argsHandle);
     295            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(userHostMem);
     296            6 :     ACL_REQUIRES_POSITIVE_REPORT(actualArgsSize);
     297              : 
     298            2 :     ACL_REQUIRES_RTS_OK(rtsKernelArgsInitByUserMem(funcHandle, argsHandle, userHostMem, actualArgsSize));
     299            1 :     return ACL_SUCCESS;
     300              : }
     301              : 
     302            3 : aclError aclrtKernelArgsGetMemSizeImpl(aclrtFuncHandle funcHandle, size_t userArgsSize, size_t *actualArgsSize)
     303              : {
     304            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtKernelArgsGetMemSize);
     305            3 :     ACL_LOG_INFO("Start to execute aclrtKernelArgsGetMemSize");
     306            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     307            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(actualArgsSize);
     308              : 
     309            2 :     ACL_REQUIRES_RTS_OK(rtsKernelArgsGetMemSize(funcHandle, userArgsSize, actualArgsSize));
     310            1 :     return ACL_SUCCESS;
     311            3 : }
     312              : 
     313            3 : aclError aclrtKernelArgsGetHandleMemSizeImpl(aclrtFuncHandle funcHandle, size_t *memSize)
     314              : {
     315            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtKernelArgsGetHandleMemSize);
     316            3 :     ACL_LOG_INFO("Start to execute aclrtKernelArgsGetHandleMemSize");
     317            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     318            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(memSize);
     319              : 
     320            2 :     ACL_REQUIRES_RTS_OK(rtsKernelArgsGetHandleMemSize(funcHandle, memSize));
     321            1 :     return ACL_SUCCESS;
     322            3 : }
     323              : 
     324            5 : aclError aclrtKernelArgsAppendImpl(aclrtArgsHandle argsHandle, void *param, size_t paramSize,
     325              :                                    aclrtParamHandle *paramHandle)
     326              : {
     327            5 :     ACL_PROFILING_REG(acl::AclProfType::AclrtKernelArgsAppend);
     328            5 :     ACL_LOG_INFO("Start to execute aclrtKernelArgsAppend");
     329            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(argsHandle);
     330            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(param);
     331            6 :     ACL_REQUIRES_POSITIVE_REPORT(paramSize);
     332            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(paramHandle);
     333              : 
     334            2 :     ACL_REQUIRES_RTS_OK(rtsKernelArgsAppend(argsHandle, param, paramSize, paramHandle));
     335            1 :     return ACL_SUCCESS;
     336            5 : }
     337              : 
     338            3 : aclError aclrtKernelArgsAppendPlaceHolderImpl(aclrtArgsHandle argsHandle, aclrtParamHandle *paramHandle)
     339              : {
     340            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtKernelArgsAppendPlaceHolder);
     341            3 :     ACL_LOG_INFO("Start to execute aclrtKernelArgsAppendPlaceHolder");
     342            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(argsHandle);
     343            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(paramHandle);
     344              : 
     345            2 :     ACL_REQUIRES_RTS_OK(rtsKernelArgsAppendPlaceHolder(argsHandle, paramHandle));
     346            1 :     return ACL_SUCCESS;
     347            3 : }
     348              : 
     349            5 : aclError aclrtKernelArgsGetPlaceHolderBufferImpl(aclrtArgsHandle argsHandle, aclrtParamHandle paramHandle,
     350              :                                                  size_t dataSize, void **bufferAddr)
     351              : {
     352            5 :     ACL_PROFILING_REG(acl::AclProfType::AclrtKernelArgsGetPlaceHolderBuffer);
     353            5 :     ACL_LOG_INFO("Start to execute aclrtKernelArgsGetPlaceHolderBuffer");
     354            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(argsHandle);
     355            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(paramHandle);
     356            6 :     ACL_REQUIRES_POSITIVE_REPORT(dataSize);
     357            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(bufferAddr);
     358              : 
     359            2 :     ACL_REQUIRES_RTS_OK(rtsKernelArgsGetPlaceHolderBuffer(argsHandle, paramHandle, dataSize, bufferAddr));
     360            1 :     return ACL_SUCCESS;
     361            5 : }
     362              : 
     363            6 : aclError aclrtKernelArgsParaUpdateImpl(aclrtArgsHandle argsHandle, aclrtParamHandle paramHandle, void *param,
     364              :                                        size_t paramSize)
     365              : {
     366            6 :     ACL_PROFILING_REG(acl::AclProfType::AclrtKernelArgsParaUpdate);
     367            6 :     ACL_LOG_INFO("Start to execute aclrtKernelArgsParaUpdate");
     368            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(argsHandle);
     369            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(paramHandle);
     370            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(param);
     371            6 :     ACL_REQUIRES_POSITIVE_REPORT(paramSize);
     372              : 
     373            2 :     ACL_REQUIRES_RTS_OK(rtsKernelArgsParaUpdate(argsHandle, paramHandle, param, paramSize));
     374            1 :     return ACL_SUCCESS;
     375            6 : }
     376              : 
     377            2 : aclError aclrtKernelArgsFinalizeImpl(aclrtArgsHandle argsHandle)
     378              : {
     379            2 :     ACL_LOG_INFO("Start to execute aclrtKernelArgsFinalize");
     380            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(argsHandle);
     381              : 
     382            2 :     ACL_REQUIRES_RTS_OK(rtsKernelArgsFinalize(argsHandle));
     383            1 :     return ACL_SUCCESS;
     384              : }
     385              : 
     386            2 : aclError aclrtGetThreadLastTaskIdImpl(uint32_t *taskId)
     387              : {
     388            2 :     ACL_PROFILING_REG(acl::AclProfType::AclrtGetThreadLastTaskId);
     389            2 :     ACL_LOG_DEBUG("start to execute aclrtGetThreadLastTaskId");
     390            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(taskId);
     391            2 :     ACL_REQUIRES_RTS_OK(rtsGetThreadLastTaskId(taskId));
     392            1 :     return ACL_SUCCESS;
     393            2 : }
     394              : 
     395            4 : aclError aclrtGetFunctionNameImpl(aclrtFuncHandle funcHandle, uint32_t maxLen, char *name)
     396              : {
     397            4 :     ACL_PROFILING_REG(acl::AclProfType::AclrtGetFunctionName);
     398            4 :     ACL_LOG_DEBUG("start to execute aclrtGetFunctionName, maxLen is [%u]", maxLen);
     399            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(name);
     400            2 :     ACL_REQUIRES_RTS_OK(rtsFuncGetName(static_cast<rtFuncHandle>(funcHandle), maxLen, name));
     401            1 :     return ACL_SUCCESS;
     402            4 : }
     403              : 
     404            4 : aclError aclrtBinaryLoadFromDataImpl(const void *data, size_t length,
     405              :     const aclrtBinaryLoadOptions *options, aclrtBinHandle *binHandle)
     406              : {
     407            4 :     ACL_PROFILING_REG(acl::AclProfType::AclrtBinaryLoadFromData);
     408            4 :     ACL_LOG_DEBUG("start to execute aclrtBinaryLoadFromData, length is [%zu]", length);
     409            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(data);
     410            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(binHandle);
     411            2 :     ACL_REQUIRES_RTS_OK(rtsBinaryLoadFromData(data, length,
     412              :         reinterpret_cast<const rtLoadBinaryConfig_t*>(options), static_cast<rtBinHandle*>(binHandle)));
     413            1 :     return ACL_SUCCESS;
     414            4 : }
     415              : 
     416            6 : aclError aclrtRegisterCpuFuncImpl(const aclrtBinHandle handle, const char *funcName,
     417              :     const char *kernelName, aclrtFuncHandle *funcHandle)
     418              : {
     419            6 :     ACL_PROFILING_REG(acl::AclProfType::AclrtRegisterCpuFunc);
     420            6 :     ACL_LOG_DEBUG("start to execute aclrtRegisterCpuFunc");
     421            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(handle);
     422            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcName);
     423            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(kernelName);
     424            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     425            2 :     ACL_REQUIRES_RTS_OK(rtsRegisterCpuFunc(static_cast<rtBinHandle>(handle), funcName, kernelName,
     426              :         static_cast<rtFuncHandle*>(funcHandle)));
     427            1 :     return ACL_SUCCESS;
     428            6 : }
     429              : 
     430            5 : aclError aclrtCmoWaitBarrierImpl(aclrtBarrierTaskInfo *taskInfo, aclrtStream stream, uint32_t flag)
     431              : {
     432            5 :     ACL_PROFILING_REG(acl::AclProfType::AclrtCmoWaitBarrier);
     433            5 :     ACL_LOG_DEBUG("start to execute aclrtCmoWaitBarrier, flag is [%u]", flag);
     434            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(taskInfo);
     435            4 :     if ((taskInfo->barrierNum == 0U) || (taskInfo->barrierNum > ACL_RT_CMO_MAX_BARRIER_NUM)) {
     436            2 :         ACL_LOG_ERROR("[Check][taskInfo]param taskInfo is invalid, taskInfo->barrierNum must be in range (0, %d]",
     437              :             ACL_RT_CMO_MAX_BARRIER_NUM);
     438            2 :         const std::string barrierNumVal = std::to_string(taskInfo->barrierNum);
     439            2 :         const std::string expect = acl::AclErrorLogManager::FormatStr("(0, %d]", ACL_RT_CMO_MAX_BARRIER_NUM);
     440            2 :         std::string funcName = acl::AclErrorLogManager::GetFuncNameWithoutImplSuffix(__func__);
     441            2 :         acl::AclErrorLogManager::ReportInputError(acl::INVALID_VALUE_MSG,
     442            4 :             std::vector<const char *>({"func", "value", "param", "expect"}),
     443            4 :             std::vector<const char *>({funcName.c_str(), barrierNumVal.c_str(), "taskInfo->barrierNum", expect.c_str()}));
     444            2 :         return ACL_ERROR_INVALID_PARAM;
     445            2 :     }
     446              :     rtBarrierTaskInfo_t rtTaskInfo;
     447            2 :     rtTaskInfo.logicIdNum = taskInfo->barrierNum;
     448            4 :     for (size_t i = 0U; i < taskInfo->barrierNum; i++) {
     449            2 :         rtTaskInfo.cmoInfo[i].cmoType = static_cast<uint16_t>(taskInfo->cmoInfo[i].cmoType) +
     450              :             (static_cast<uint16_t>(RT_CMO_PREFETCH) - static_cast<uint16_t>(ACL_RT_CMO_TYPE_PREFETCH));
     451            2 :         rtTaskInfo.cmoInfo[i].logicId = taskInfo->cmoInfo[i].barrierId;
     452              :     }
     453            2 :     ACL_REQUIRES_RTS_OK(rtsLaunchBarrierTask(&rtTaskInfo, static_cast<rtStream_t>(stream), flag));
     454            1 :     return ACL_SUCCESS;
     455            5 : }
     456              : 
     457            6 : aclError aclrtLaunchKernelV2Impl(aclrtFuncHandle funcHandle, uint32_t numBlocks, const void *argsData,
     458              :                                  size_t argsSize, aclrtLaunchKernelCfg *cfg, aclrtStream stream)
     459              : {
     460            6 :     ACL_PROFILING_REG(acl::AclProfType::AclrtLaunchKernelV2);
     461            6 :     ACL_LOG_INFO("Start to execute aclrtLaunchKernelV2");
     462            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     463            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(argsData);
     464              : 
     465            4 :     rtKernelLaunchCfg_t *rt_cfg = nullptr;
     466            4 :     if (cfg != nullptr ) {
     467            1 :         rt_cfg = reinterpret_cast<rtKernelLaunchCfg_t *>(cfg);
     468              :     }
     469              : 
     470            4 :     const rtError_t rtErr = rtsLaunchKernelWithDevArgs(funcHandle, numBlocks, stream, rt_cfg,
     471              :         argsData, static_cast<uint32_t>(argsSize), nullptr);
     472            4 :     if (rtErr != RT_ERROR_NONE) {
     473            2 :         if (rtErr == ACL_ERROR_RT_INVALID_HANDLE) {
     474            1 :             ACL_LOG_WARN("rtsLaunchKernelWithDevArgs funHandle is invalid, runtime result = %d.", rtErr);
     475            1 :             return ACL_ERROR_RT_INVALID_HANDLE;
     476              :         } else {
     477            1 :             return ACL_GET_ERRCODE_RTS(rtErr);
     478              :         }
     479              :     }
     480              : 
     481            2 :     return ACL_SUCCESS;
     482            6 : }
     483              : 
     484            6 : aclError aclrtLaunchKernelWithHostArgsImpl(aclrtFuncHandle funcHandle, uint32_t numBlocks, aclrtStream stream,
     485              :                                            aclrtLaunchKernelCfg *cfg, void *hostArgs, size_t argsSize,
     486              :                                            aclrtPlaceHolderInfo *placeHolderArray, size_t placeHolderNum)
     487              : {
     488            6 :     ACL_PROFILING_REG(acl::AclProfType::AclrtLaunchKernelWithHostArgs);
     489            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     490            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(hostArgs);
     491              : 
     492            4 :     rtKernelLaunchCfg_t *rt_cfg = nullptr;
     493            4 :     rtPlaceHolderInfo_t *rt_placeHolderArray = nullptr;
     494            4 :     if (cfg != nullptr ) {
     495            1 :         rt_cfg = reinterpret_cast<rtKernelLaunchCfg_t *>(cfg);
     496              :     }
     497              : 
     498            4 :     if (placeHolderArray != nullptr ) {
     499            1 :         rt_placeHolderArray = reinterpret_cast<rtPlaceHolderInfo_t *>(placeHolderArray);
     500              :     }
     501              : 
     502            4 :     const rtError_t rtErr = rtsLaunchKernelWithHostArgs(funcHandle, numBlocks, stream, rt_cfg,
     503              :         hostArgs, static_cast<uint32_t>(argsSize), rt_placeHolderArray, placeHolderNum);
     504            4 :     if (rtErr != RT_ERROR_NONE) {
     505            2 :         if (rtErr == ACL_ERROR_RT_INVALID_HANDLE) {
     506            1 :             ACL_LOG_WARN("rtsLaunchKernelWithHostArgs funHandle is invalid, runtime result = %d.", rtErr);
     507            1 :             return ACL_ERROR_RT_INVALID_HANDLE;
     508              :         } else {
     509            1 :             return ACL_GET_ERRCODE_RTS(rtErr);
     510              :         }
     511              :     }
     512              : 
     513            2 :     return ACL_SUCCESS;
     514            6 : }
     515              : 
     516            7 : aclError aclrtLaunchKernelWithArgsArrayImpl(void *func, uint32_t numBlocks,
     517              :                                             aclrtStream stream, aclrtLaunchKernelCfg *cfg, void **args)
     518              : {
     519            7 :     ACL_PROFILING_REG(acl::AclProfType::AclrtLaunchKernelWithArgsArray);
     520            7 :     ACL_LOG_INFO("Start to execute aclrtLaunchKernelWithArgsArray");
     521            7 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(func);
     522            9 :     ACL_REQUIRES_POSITIVE_REPORT(numBlocks);
     523              : 
     524            5 :     rtKernelLaunchCfg_t *rt_cfg = nullptr;
     525            5 :     if (cfg != nullptr) {
     526            4 :         rt_cfg = reinterpret_cast<rtKernelLaunchCfg_t *>(cfg);
     527              :     }
     528              : 
     529            5 :     const rtError_t rtErr = rtLaunchKernelWithArgsArray(func, numBlocks, stream, rt_cfg, args);
     530            5 :     if (rtErr != ACL_RT_SUCCESS) {
     531            3 :         if (rtErr == ACL_ERROR_RT_INVALID_HANDLE) {
     532            1 :             ACL_LOG_WARN("rtLaunchKernelWithArgsArray func is invalid, runtime result = %d.", rtErr);
     533            1 :             return ACL_ERROR_RT_INVALID_HANDLE;
     534            2 :         } else if (rtErr == ACL_ERROR_RT_FEATURE_NOT_SUPPORT) {
     535            1 :             ACL_LOG_WARN("rtLaunchKernelWithArgsArray does not support, runtime result = %d.", rtErr);
     536            1 :             return ACL_ERROR_RT_FEATURE_NOT_SUPPORT;
     537              :         } else {
     538            1 :             return ACL_GET_ERRCODE_RTS(rtErr);
     539              :         }
     540              :     }
     541            2 :     return ACL_SUCCESS;
     542            7 : }
     543              : 
     544            2 : aclError aclrtGetFloatOverflowStatusImpl(void *outputAddr, uint64_t outputSize, aclrtStream stream)
     545              : {
     546            2 :     ACL_PROFILING_REG(acl::AclProfType::AclrtGetFloatOverflowStatus);
     547            2 :     ACL_LOG_INFO("start to execute aclrtGetFloatOverflowStatus, outputSize = %lu", outputSize);
     548            2 :     ACL_REQUIRES_RTS_OK(rtsGetFloatOverflowStatus(outputAddr, outputSize, static_cast<rtStream_t>(stream)));
     549            1 :     ACL_LOG_INFO("successfully execute aclrtGetFloatOverflowStatus");
     550            1 :     return ACL_SUCCESS;
     551            2 : }
     552              : 
     553            2 : aclError aclrtResetFloatOverflowStatusImpl(aclrtStream stream)
     554              : {
     555            2 :     ACL_PROFILING_REG(acl::AclProfType::AclrtResetFloatOverflowStatus);
     556            2 :     ACL_LOG_INFO("start to execute aclrtResetFloatOverflowStatus");
     557            2 :     ACL_REQUIRES_RTS_OK(rtsResetFloatOverflowStatus(static_cast<rtStream_t>(stream)));
     558            1 :     ACL_LOG_INFO("successfully execute aclrtResetFloatOverflowStatus");
     559            1 :     return ACL_SUCCESS;
     560            2 : }
     561              : 
     562            2 : aclError aclrtNpuGetFloatOverFlowStatusImpl(void *outputAddr, uint64_t outputSize, uint32_t checkMode, aclrtStream stream)
     563              : {
     564            2 :     ACL_PROFILING_REG(acl::AclProfType::AclrtNpuGetFloatOverFlowStatus);
     565            2 :     ACL_LOG_INFO("start to execute aclrtNpuGetFloatOverFlowStatus, outputSize = %lu", outputSize);
     566            2 :     ACL_REQUIRES_RTS_OK(rtsNpuGetFloatOverFlowStatus(outputAddr, outputSize, checkMode, static_cast<rtStream_t>(stream)));
     567            1 :     ACL_LOG_INFO("successfully execute aclrtNpuGetFloatOverFlowStatus");
     568            1 :     return ACL_SUCCESS;
     569            2 : }
     570              : 
     571            2 : aclError aclrtNpuClearFloatOverFlowStatusImpl(uint32_t checkMode, aclrtStream stream)
     572              : {
     573            2 :     ACL_PROFILING_REG(acl::AclProfType::AclrtNpuClearFloatOverFlowStatus);
     574            2 :     ACL_LOG_INFO("start to execute aclrtNpuClearFloatOverFlowStatus");
     575            2 :     ACL_REQUIRES_RTS_OK(rtsNpuClearFloatOverFlowStatus(checkMode, static_cast<rtStream_t>(stream)));
     576            1 :     ACL_LOG_INFO("successfully execute aclrtNpuClearFloatOverFlowStatus");
     577            1 :     return ACL_SUCCESS;
     578            2 : }
     579              : 
     580            2 : aclError aclrtGetHardwareSyncAddrImpl(void **addr)
     581              : {
     582            2 :     ACL_PROFILING_REG(acl::AclProfType::AclrtGetHardwareSyncAddr);
     583            2 :     ACL_REQUIRES_RTS_OK(rtsGetHardwareSyncAddr(addr));
     584            1 :     return ACL_SUCCESS;
     585            2 : }
     586              : 
     587            4 : aclError aclrtRandomNumAsyncImpl(const aclrtRandomNumTaskInfo *taskInfo, const aclrtStream stream, void *reserve)
     588              : {
     589            4 :     ACL_PROFILING_REG(acl::AclProfType::AclrtRandomNumAsync);
     590            4 :     ACL_LOG_INFO("start to execute aclrtRandomNumAsync");
     591            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(taskInfo);
     592            3 :     aclDataType type = taskInfo->dataType;
     593            3 :     if (kMapDataType.count(type) == 0) {
     594            1 :          ACL_LOG_ERROR("[Check][param]param dataType [%d] is invalid.", static_cast<int32_t>(type));
     595            1 :          std::string funcName = acl::AclErrorLogManager::GetFuncNameWithoutImplSuffix(__func__);
     596            1 :          acl::AclErrorLogManager::ReportInputError(acl::INVALID_PARAM_REASON_MSG,
     597            2 :             std::vector<const char *>({"func", "value", "param", "reason"}),
     598            2 :             std::vector<const char *>({funcName.c_str(), acl::GetDataTypeDesc(type), "taskInfo->dataType", "The data type is currently not supported"}));
     599            1 :         return ACL_ERROR_INVALID_PARAM;
     600            1 :     }
     601            2 :     rtRandomNumTaskInfo_t *rtTaskInfo = const_cast<rtRandomNumTaskInfo_t *>(reinterpret_cast<const rtRandomNumTaskInfo_t *>(taskInfo));
     602            2 :     rtTaskInfo->dataType = kMapDataType.at(type);
     603            2 :     ACL_REQUIRES_RTS_OK(rtsLaunchRandomNumTask(rtTaskInfo,
     604              :         static_cast<rtStream_t>(stream), reserve));
     605            1 :     ACL_LOG_INFO("successfully execute aclrtRandomNumAsync");
     606            1 :     return ACL_SUCCESS;
     607            4 : }
     608              : 
     609            7 : aclError aclrtTaskUpdateAsyncImpl(aclrtStream taskStream, uint32_t taskId, aclrtTaskUpdateInfo *info, aclrtStream execStream)
     610              : {
     611            7 :     ACL_PROFILING_REG(acl::AclProfType::AclrtTaskUpdateAsync);
     612            7 :     ACL_LOG_INFO("start to execute aclrtTaskUpdateAsync");
     613            7 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(info);
     614            6 :     ACL_REQUIRES_RTS_OK(rtsLaunchUpdateTask(static_cast<rtStream_t>(taskStream), taskId,
     615              :         static_cast<rtStream_t>(execStream),
     616              :         reinterpret_cast<rtTaskUpdateCfg_t *>(info)));
     617            5 :     ACL_LOG_INFO("successfully execute aclrtTaskUpdateAsync");
     618            5 :     return ACL_SUCCESS;
     619            7 : }
     620              : 
     621            5 : aclError aclrtCacheLastTaskOpInfoImpl(const void * const infoPtr, const size_t infoSize)
     622              : {
     623            5 :     ACL_PROFILING_REG(acl::AclProfType::AclrtCacheLastTaskOpInfo);
     624            5 :     ACL_LOG_INFO("start to execute aclrtCacheLastTaskOpInfo");
     625            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(infoPtr);
     626            7 :     ACL_REQUIRES_POSITIVE_REPORT(infoSize);
     627              : 
     628            3 :     ACL_REQUIRES_RTS_OK_WARN_NOT_SUPPORT(rtCacheLastTaskOpInfo(infoPtr, infoSize), rtCacheLastTaskOpInfo);
     629            1 :     ACL_LOG_INFO("successfully execute aclrtCacheLastTaskOpInfo");
     630            1 :     return ACL_SUCCESS;
     631            5 : }
     632              : 
     633            3 : aclError aclrtCacheLastTaskExtendInfoImpl(const char* const extendInfoPtr, const size_t infoSize)
     634              : {
     635            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtCacheLastTaskExtendInfo);
     636            3 :     ACL_LOG_INFO("start to execute aclrtCacheLastTaskExtendInfo");
     637              : 
     638            3 :     ACL_REQUIRES_RTS_OK_WARN_NOT_SUPPORT(rtCacheLastTaskExtendInfo(extendInfoPtr, infoSize), rtCacheLastTaskExtendInfo);
     639            1 :     ACL_LOG_INFO("successfully execute aclrtCacheLastTaskExtendInfo");
     640            1 :     return ACL_SUCCESS;
     641            3 : }
     642              : 
     643            3 : aclError aclrtGetFunctionAttributeImpl(aclrtFuncHandle funcHandle, aclrtFuncAttribute attrType, int64_t *attrValue)
     644              : {
     645            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtGetFunctionAttribute);
     646            3 :     ACL_LOG_INFO("start to execute aclrtGetFunctionAttribute");
     647            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle);
     648            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(attrValue);
     649              : 
     650            1 :     ACL_REQUIRES_RTS_OK(rtFunctionGetAttribute(funcHandle, static_cast<rtFuncAttribute>(attrType), attrValue));
     651              : 
     652            0 :     ACL_LOG_INFO("successfully execute aclrtGetFunctionAttribute");
     653            0 :     return ACL_SUCCESS;
     654            3 : }
     655              : 
     656            2 : aclError aclmdlRITaskGetSeqIdImpl(aclmdlRITask task, uint32_t *id)
     657              : {
     658            2 :     ACL_PROFILING_REG(acl::AclProfType::AclmdlRITaskGetSeqId);
     659              : 
     660            2 :     ACL_REQUIRES_RTS_OK(rtTaskGetSeqId(static_cast<rtTask_t>(task), id));
     661            1 :     return ACL_SUCCESS;
     662            2 : }
     663              : 
     664            2 : aclError aclrtFunctionGetBinaryImpl(const aclrtFuncHandle funcHandle, aclrtBinHandle *binHandle)
     665              : {
     666            2 :     ACL_REQUIRES_RTS_OK(rtFunctionGetBinary(funcHandle, binHandle));
     667            1 :     return ACL_SUCCESS;
     668              : }
     669              : 
     670            5 : aclError aclrtFunctionGetParamCountImpl(const void *func, size_t *paramCount)
     671              : {
     672            5 :     ACL_LOG_INFO("start to execute aclrtFunctionGetParamCount");
     673            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(func);
     674            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(paramCount);
     675            3 :     ACL_REQUIRES_RTS_OK_WARN_NOT_SUPPORT(rtFunctionGetParamCount(func, paramCount), rtFunctionGetParamCount);
     676            1 :     ACL_LOG_INFO("successfully execute aclrtFunctionGetParamCount, paramCount=%zu.", *paramCount);
     677            1 :     return ACL_SUCCESS;
     678              : }
     679              : 
     680            5 : aclError aclrtFunctionGetParamInfoImpl(const void *func, size_t paramIndex,
     681              :                                        size_t *paramOffset, size_t *paramSize)
     682              : {
     683            5 :     ACL_LOG_INFO("start to execute aclrtFunctionGetParamInfo, paramIndex=%zu.", paramIndex);
     684            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(func);
     685            4 :     if ((paramOffset == nullptr) && (paramSize == nullptr)) {
     686            1 :         ACL_LOG_ERROR("[Check][paramOffset,paramSize]paramOffset and paramSize cannot both be null.");
     687            4 :         acl::AclErrorLogManager::ReportInputError(acl::INVALID_NULL_POINTER_AT_SAME_TIME_MSG,
     688              :             {"func", "param"}, {"aclrtFunctionGetParamInfo", "paramOffset and paramSize"});
     689            1 :         return ACL_ERROR_INVALID_PARAM;
     690              :     }
     691            3 :     ACL_REQUIRES_RTS_OK_WARN_NOT_SUPPORT(rtFunctionGetParamInfo(func, paramIndex, paramOffset, paramSize), rtFunctionGetParamInfo);
     692            1 :     ACL_LOG_INFO("successfully execute aclrtFunctionGetParamInfo.");
     693            1 :     return ACL_SUCCESS;
     694              : }
     695              : 
     696            8 : aclError aclrtFunctionGetAvailDynUbufPerBlockImpl(void *func, uint32_t flags, size_t *dynamicUbufSize)
     697              : {
     698            8 :     ACL_LOG_INFO("start to execute aclrtFunctionGetAvailDynUbufPerBlock.");
     699            8 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(func);
     700            7 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(dynamicUbufSize);
     701            9 :     ACL_REQUIRES_PARAM_EQUAL_REPORT(flags, 0U);
     702              : 
     703            5 :     ACL_REQUIRES_RTS_OK_WARN_NOT_SUPPORT(rtFunctionGetAvailDynUbufPerBlock(func, flags, dynamicUbufSize), rtFunctionGetAvailDynUbufPerBlock);
     704            2 :     ACL_LOG_INFO("successfully execute aclrtFunctionGetAvailDynUbufPerBlock, dynamicUbufSize=%zu.",
     705              :         *dynamicUbufSize);
     706            2 :     return ACL_SUCCESS;
     707              : }
     708              : 
     709            2 : aclError aclmdlRITaskGetTypeImpl(aclmdlRITask task, aclmdlRITaskType *type)
     710              : {
     711            2 :     ACL_PROFILING_REG(acl::AclProfType::AclmdlRITaskGetType);
     712              :     
     713            2 :     ACL_REQUIRES_RTS_OK(rtTaskGetType(static_cast<rtTask_t>(task), reinterpret_cast<rtTaskType *>(type)));
     714              : 
     715            1 :     return ACL_SUCCESS;
     716            2 : }
     717              : #ifdef __cplusplus
     718              : }
     719              : #endif
        

Generated by: LCOV version 2.0-1