From 5a4cf021e9e19803d2aed591347611a47ca087bd Mon Sep 17 00:00:00 2001 From: qq_49735440 Date: Sat, 27 Dec 2025 15:39:45 +0800 Subject: [PATCH 1/3] aclrtLaunchKernelWithHostArgs --- inc/external/acl/acl_rt.h | 58 ++++++++++++++++++++++++++------------- runtime/acl_rt.cpp | 24 ++++++++++------ runtime/acl_rt_impl.h | 6 +++- runtime/kernel.cpp | 29 ++++++++++++++++++++ 4 files changed, 89 insertions(+), 28 deletions(-) diff --git a/inc/external/acl/acl_rt.h b/inc/external/acl/acl_rt.h index 9ca51f8b..f7910b65 100755 --- a/inc/external/acl/acl_rt.h +++ b/inc/external/acl/acl_rt.h @@ -291,38 +291,38 @@ typedef struct aclrtMemUceInfo { size_t reserved[UCE_INFO_RESERVED_SIZE]; } aclrtMemUceInfo; -typedef enum { +typedef enum { ACL_RT_NO_ERROR = 0, - ACL_RT_ERROR_MEMORY = 1, - ACL_RT_ERROR_L2 = 2, - ACL_RT_ERROR_AICORE = 3, - ACL_RT_ERROR_LINK = 4, + ACL_RT_ERROR_MEMORY = 1, + ACL_RT_ERROR_L2 = 2, + ACL_RT_ERROR_AICORE = 3, + ACL_RT_ERROR_LINK = 4, ACL_RT_ERROR_OTHERS = 0xFFFF, } aclrtErrorType; -typedef enum aclrtAicoreErrorType { - ACL_RT_AICORE_ERROR_UNKNOWN, - ACL_RT_AICORE_ERROR_SW, - ACL_RT_AICORE_ERROR_HW_LOCAL, +typedef enum aclrtAicoreErrorType { + ACL_RT_AICORE_ERROR_UNKNOWN, + ACL_RT_AICORE_ERROR_SW, + ACL_RT_AICORE_ERROR_HW_LOCAL, } aclrtAicoreErrorType; -#define ACL_RT_MEM_UCE_INFO_MAX_NUM 20 +#define ACL_RT_MEM_UCE_INFO_MAX_NUM 20 typedef struct { size_t arraySize; - aclrtMemUceInfo memUceInfoArray[ACL_RT_MEM_UCE_INFO_MAX_NUM]; + aclrtMemUceInfo memUceInfoArray[ACL_RT_MEM_UCE_INFO_MAX_NUM]; } aclrtMemUceInfoArray; -typedef union aclrtErrorInfoDetail { - aclrtMemUceInfoArray uceInfo; - aclrtAicoreErrorType aicoreErrType; -} aclrtErrorInfoDetail; +typedef union aclrtErrorInfoDetail { + aclrtMemUceInfoArray uceInfo; + aclrtAicoreErrorType aicoreErrType; +} aclrtErrorInfoDetail; -typedef struct aclrtErrorInfo { - uint8_t tryRepair; +typedef struct aclrtErrorInfo { + uint8_t tryRepair; uint8_t hasDetail; uint8_t reserved[2]; aclrtErrorType errorType; - aclrtErrorInfoDetail detail; + aclrtErrorInfoDetail detail; } aclrtErrorInfo; typedef enum aclrtCmoType { @@ -845,7 +845,7 @@ ACL_FUNC_VISIBILITY aclError aclrtResetDevice(int32_t deviceId); * * @retval ACL_SUCCESS The function is successfully executed. * @retval OtherValues Failure - * + * * @see aclrtResetDevice */ ACL_FUNC_VISIBILITY aclError aclrtResetDeviceForce(int32_t deviceId); @@ -3622,6 +3622,26 @@ ACL_FUNC_VISIBILITY aclError aclrtSnapShotProcessRestore(); */ ACL_FUNC_VISIBILITY aclError aclrtLaunchHostFunc(aclrtStream stream, aclrtHostFunc fn, void *args); +/** + * @ingroup AscendCL + * @brief Launch kernel with host args + * @param [in] funcHandle function handle + * @param [in] blockDim block dimentions + * @param [in] stream stream handle + * @param [in] cfg configuration information + * @param [in] hostArgs host args data + * @param [in] argsSize args size + * @param [in] placeHolderArray placeHolder array + * @param [in] placeHolderNum placeHolder num + * @retval ACL_SUCCESS The function is successfully executed. + * @retval OtherValues Failure + */ +ACL_FUNC_VISIBILITY aclError aclrtLaunchKernelWithHostArgs(aclrtFuncHandle funcHandle, uint32_t blockDim, + aclrtStream stream, aclrtLaunchKernelCfg *cfg, + void *hostArgs, size_t argsSize, + aclrtPlaceHolderInfo *placeHolderArray, + size_t placeHolderNum); + #ifdef __cplusplus } #endif diff --git a/runtime/acl_rt.cpp b/runtime/acl_rt.cpp index d2babe0f..93e7cdda 100755 --- a/runtime/acl_rt.cpp +++ b/runtime/acl_rt.cpp @@ -1543,16 +1543,16 @@ aclError aclrtAllocatorUnregister(aclrtStream stream) return aclrtAllocatorUnregisterImpl(stream); } -aclError aclrtGetErrorVerbose(int32_t deviceId, aclrtErrorInfo *errorInfo) -{ - ACL_PROFILING_REG(acl::AclProfType::AclrtGetErrorVerbose); - return aclrtGetErrorVerboseImpl(deviceId, errorInfo); +aclError aclrtGetErrorVerbose(int32_t deviceId, aclrtErrorInfo *errorInfo) +{ + ACL_PROFILING_REG(acl::AclProfType::AclrtGetErrorVerbose); + return aclrtGetErrorVerboseImpl(deviceId, errorInfo); } -aclError aclrtRepairError(int32_t deviceId, const aclrtErrorInfo *errorInfo) -{ - ACL_PROFILING_REG(acl::AclProfType::AclrtRepairError); - return aclrtRepairErrorImpl(deviceId, errorInfo); +aclError aclrtRepairError(int32_t deviceId, const aclrtErrorInfo *errorInfo) +{ + ACL_PROFILING_REG(acl::AclProfType::AclrtRepairError); + return aclrtRepairErrorImpl(deviceId, errorInfo); } aclError aclrtSnapShotProcessLock() { @@ -1583,3 +1583,11 @@ aclError aclrtLaunchHostFunc(aclrtStream stream, aclrtHostFunc fn, void *args) ACL_PROFILING_REG(acl::AclProfType::AclrtLaunchHostFunc); return aclrtLaunchHostFuncImpl(stream, fn, args); } + +aclError aclrtLaunchKernelWithHostArgs(aclrtFuncHandle funcHandle, uint32_t blockDim, aclrtStream stream, + aclrtLaunchKernelCfg *cfg, void *hostArgs, size_t argsSize, + aclrtPlaceHolderInfo *placeHolderArray, size_t placeHolderNum) +{ + return aclrtLaunchKernelWithHostArgsImpl(funcHandle, blockDim, stream, cfg, hostArgs, argsSize, + placeHolderArray, placeHolderNum); +} \ No newline at end of file diff --git a/runtime/acl_rt_impl.h b/runtime/acl_rt_impl.h index 97f4a710..dd2cdc92 100755 --- a/runtime/acl_rt_impl.h +++ b/runtime/acl_rt_impl.h @@ -313,7 +313,7 @@ ACL_FUNC_VISIBILITY aclError aclrtKernelArgsAppendPlaceHolderImpl(aclrtArgsHandl aclrtParamHandle *paramHandle); ACL_FUNC_VISIBILITY aclError aclrtKernelArgsGetPlaceHolderBufferImpl(aclrtArgsHandle argsHandle, - aclrtParamHandle paramHandle, size_t dataSize, void **bufferAddr); + aclrtParamHandle paramHandle, size_t dataSize, void **bufferAddr); ACL_FUNC_VISIBILITY aclError aclrtKernelArgsParaUpdateImpl(aclrtArgsHandle argsHandle, aclrtParamHandle paramHandle, void *param, size_t paramSize); @@ -573,6 +573,10 @@ ACL_FUNC_VISIBILITY aclError aclrtSnapShotProcessRestoreImpl(); ACL_FUNC_VISIBILITY aclError aclrtLaunchHostFuncImpl(aclrtStream stream, aclrtHostFunc fn, void *args); +ACL_FUNC_VISIBILITY aclError aclrtLaunchKernelWithHostArgsImpl(aclrtFuncHandle funcHandle, uint32_t blockDim, + aclrtStream stream, aclrtLaunchKernelCfg *cfg, void *hostArgs, size_t argsSize, + aclrtPlaceHolderInfo *placeHolderArray, size_t placeHolderNum); + #ifdef __cplusplus } #endif diff --git a/runtime/kernel.cpp b/runtime/kernel.cpp index fbe08907..9a598739 100755 --- a/runtime/kernel.cpp +++ b/runtime/kernel.cpp @@ -402,3 +402,32 @@ aclError aclrtCmoWaitBarrierImpl(aclrtBarrierTaskInfo *taskInfo, aclrtStream str } return ACL_SUCCESS; } + +aclError aclrtLaunchKernelWithHostArgsImpl(aclrtFuncHandle funcHandle, uint32_t blockDim, aclrtStream stream, + aclrtLaunchKernelCfg *cfg, void *hostArgs, size_t argsSize, + aclrtPlaceHolderInfo *placeHolderArray, size_t placeHolderNum) +{ + ACL_PROFILING_REG(acl::AclProfType::AclrtLaunchKernelWithHostArgs); + ACL_LOG_INFO("Start to execute aclrtLaunchKernelWithHostArgs"); + ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(funcHandle); + ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(hostArgs); + + rtKernelLaunchCfg_t *rt_cfg = nullptr; + rtPlaceHolderInfo_t *rt_placeHolderArray = nullptr; + if (cfg != nullptr ) { + rt_cfg = reinterpret_cast(cfg); + } + + if (placeHolderArray != nullptr ) { + rt_placeHolderArray = reinterpret_cast(placeHolderArray); + } + + const rtError_t rtErr = rtsLaunchKernelWithHostArgs(funcHandle, blockDim, stream, rt_cfg, + hostArgs, static_cast(argsSize), rt_placeHolderArray, placeHolderNum); + if (rtErr != RT_ERROR_NONE) { + ACL_LOG_CALL_ERROR("rtsLaunchKernelWithHostArgs failed, runtime result = %d.", rtErr); + return ACL_GET_ERRCODE_RTS(rtErr); + } + + return ACL_SUCCESS; +} \ No newline at end of file -- Gitee From dbc7f8322aa07fb7cb1d870e08a82bfc55a2f6bf Mon Sep 17 00:00:00 2001 From: qq_49735440 Date: Sat, 27 Dec 2025 20:04:34 +0800 Subject: [PATCH 2/3] aclrtLaunchKernelWithHostArgs --- inc/external/acl/acl_rt.h | 7 +- runtime/kernel.cpp | 1 + .../ut/acl/testcase/acl_runtime_unittest.cpp | 67 +++++++++++++++++-- toolchain/profiling_manager.cpp | 3 +- toolchain/profiling_manager.h | 5 +- 5 files changed, 74 insertions(+), 9 deletions(-) diff --git a/inc/external/acl/acl_rt.h b/inc/external/acl/acl_rt.h index f7910b65..8707a704 100755 --- a/inc/external/acl/acl_rt.h +++ b/inc/external/acl/acl_rt.h @@ -461,6 +461,11 @@ typedef struct { aclrtBarrierCmoInfo cmoInfo[ACL_RT_CMO_MAX_BARRIER_NUM]; } aclrtBarrierTaskInfo; +typedef struct { + uint32_t addrOffset; + uint32_t dataOffset; +} aclrtPlaceHolderInfo; + #define ACL_RT_DEVS_TOPOLOGY_HCCS 0x01ULL #define ACL_RT_DEVS_TOPOLOGY_PIX 0x02ULL #define ACL_RT_DEVS_TOPOLOGY_PIB 0x04ULL @@ -3641,7 +3646,7 @@ ACL_FUNC_VISIBILITY aclError aclrtLaunchKernelWithHostArgs(aclrtFuncHandle funcH void *hostArgs, size_t argsSize, aclrtPlaceHolderInfo *placeHolderArray, size_t placeHolderNum); - + #ifdef __cplusplus } #endif diff --git a/runtime/kernel.cpp b/runtime/kernel.cpp index 9a598739..83fe0db3 100755 --- a/runtime/kernel.cpp +++ b/runtime/kernel.cpp @@ -16,6 +16,7 @@ #include "log_inner.h" #include "error_codes_inner.h" #include "toolchain/resource_statistics.h" +#include "profiling_manager.h" aclrtBinary aclrtCreateBinaryImpl(const void *data, size_t dataLen) { diff --git a/tests/ut/acl/testcase/acl_runtime_unittest.cpp b/tests/ut/acl/testcase/acl_runtime_unittest.cpp index de94d879..ed3ca867 100755 --- a/tests/ut/acl/testcase/acl_runtime_unittest.cpp +++ b/tests/ut/acl/testcase/acl_runtime_unittest.cpp @@ -362,6 +362,63 @@ TEST_F(UTEST_ACL_Runtime, aclrtSetTsDeviceTest) EXPECT_EQ(ret, ACL_ERROR_RT_PARAM_INVALID); } +TEST_F(UTEST_ACL_Runtime, launch_kernel_with_host_args_failed_with_nullptr_input) +{ + aclrtFuncHandle funcHandle = nullptr; + void *hostArgs = nullptr; + aclrtStream stream = nullptr; + aclError ret = aclrtLaunchKernelWithHostArgs(funcHandle, 0, stream, nullptr, hostArgs, 0, nullptr, 0); + EXPECT_EQ(ret, ACL_ERROR_INVALID_PARAM); + + funcHandle = (aclrtFuncHandle)0x01U; + ret = aclrtLaunchKernelWithHostArgs(funcHandle, 0, stream, nullptr, hostArgs, 0, nullptr, 0); + EXPECT_EQ(ret, ACL_ERROR_INVALID_PARAM); +} + +TEST_F(UTEST_ACL_Runtime, launch_kernel_with_host_args_successful) +{ + aclrtFuncHandle funcHandle = (aclrtFuncHandle)0x01U; + void *hostArgs = reinterpret_cast(0x01U); + aclrtStream stream = (aclrtStream)0x01U; + uint32_t blockDim = 24; + size_t argsSize = 100; + + aclrtLaunchKernelCfg cfg; + cfg.numAttrs = 1U; + + aclrtLaunchKernelAttr attrs[cfg.numAttrs]; + attrs[0U].id = ACL_RT_LAUNCH_KERNEL_ATTR_SCHEM_MODE; + + aclrtLaunchKernelAttrValue value; + value.schemMode = 1U; + attrs[0U].value = value; + cfg.attrs = attrs; + + aclrtPlaceHolderInfo placeHolderArray; + placeHolderArray.addrOffset = 0; + placeHolderArray.dataOffset = 0; + + aclError ret = aclrtLaunchKernelWithHostArgs(funcHandle, blockDim, stream, &cfg, hostArgs, argsSize, &placeHolderArray, 1); + EXPECT_EQ(ret, ACL_SUCCESS); + + ret = aclrtLaunchKernelWithHostArgs(funcHandle, blockDim, stream, nullptr, hostArgs, argsSize, nullptr, 0); + EXPECT_EQ(ret, ACL_SUCCESS); +} + +TEST_F(UTEST_ACL_Runtime, launch_kernel_with_host_args_failed_with_rt_launch_kernel_func_failed) +{ + aclrtFuncHandle funcHandle = (aclrtFuncHandle)0x01U; + void *hostArgs = reinterpret_cast(0x01U); + aclrtStream stream = (aclrtStream)0x01U; + uint32_t blockDim = 24; + size_t argsSize = 100; + + EXPECT_CALL(MockFunctionTest::aclStubInstance(), rtsLaunchKernelWithHostArgs(_, _, _, _, _, _, _, _)) + .WillOnce(Return(ACL_ERROR_INVALID_PARAM)); + aclError ret = aclrtLaunchKernelWithHostArgs(funcHandle, blockDim, stream, nullptr, hostArgs, argsSize, nullptr, 0); + EXPECT_EQ(ret, ACL_ERROR_INVALID_PARAM); +} + TEST_F(UTEST_ACL_Runtime, aclrtGetDeviceCountTest) { uint32_t count = 0; @@ -598,7 +655,7 @@ TEST_F(UTEST_ACL_Runtime, aclrtStreamQueryTest) ret = aclrtStreamQuery(stream, &status); EXPECT_EQ(ret, ACL_SUCCESS); EXPECT_EQ(status, ACL_STREAM_STATUS_COMPLETE); - + EXPECT_CALL(MockFunctionTest::aclStubInstance(), rtStreamQuery(_)) .WillOnce(Return((ACL_ERROR_RT_STREAM_NOT_COMPLETE))); ret = aclrtStreamQuery(stream, &status); @@ -1089,7 +1146,7 @@ TEST_F(UTEST_ACL_Runtime, aclrtMalloc_DeviceTest) size = static_cast(-1); ret = aclrtMalloc(&devPtr, size, ACL_MEM_MALLOC_NORMAL_ONLY); EXPECT_NE(ret, ACL_SUCCESS); - + size = static_cast(0); ret = aclrtMalloc(&devPtr, size, ACL_MEM_MALLOC_NORMAL_ONLY); EXPECT_NE(ret, ACL_SUCCESS); @@ -1341,7 +1398,7 @@ TEST_F(UTEST_ACL_Runtime, memory_memcpy) EXPECT_EQ(ret, ACL_SUCCESS); ret = aclrtMemcpy(dst, 1, src, 1, (aclrtMemcpyKind)0x7FFFFFFF); - + EXPECT_NE(ret, ACL_SUCCESS); EXPECT_CALL(MockFunctionTest::aclStubInstance(), rtMemcpy(_, _, _, _, _)) @@ -1944,7 +2001,7 @@ TEST_F(UTEST_ACL_Runtime, virtual_memory_address_reserve_release) ret = aclrtReserveMemAddress(&virPtr, size, 0, nullptr, 2); EXPECT_EQ(ret, ACL_ERROR_INVALID_PARAM); - + void *expectPtr = (void*)0x01U; ret = aclrtReserveMemAddress(&virPtr, size, 0, expectPtr, 0); EXPECT_EQ(ret, ACL_ERROR_INVALID_PARAM); @@ -2028,7 +2085,7 @@ TEST_F(UTEST_ACL_Runtime, virtual_physical_memory_map_unmap) aclError ret = aclrtReserveMemAddress(&virPtr, size, 0, nullptr, 0); EXPECT_EQ(ret, ACL_SUCCESS); - EXPECT_NE(virPtr, nullptr); + EXPECT_NE(virPtr, nullptr); aclrtDrvMemHandle handle = nullptr; aclrtPhysicalMemProp prop = {}; diff --git a/toolchain/profiling_manager.cpp b/toolchain/profiling_manager.cpp index 80f749cb..80167be2 100755 --- a/toolchain/profiling_manager.cpp +++ b/toolchain/profiling_manager.cpp @@ -217,6 +217,7 @@ namespace acl { {AclProfType::AcldvppVpcCalcHistAsync, "acldvppVpcCalcHistAsync"}, {AclProfType::AcldvppVpcCropResizeAsync, "acldvppVpcCropResizeAsync"}, {AclProfType::AcldvppVpcBatchCropResizeAsync, "acldvppVpcBatchCropResizeAsync"}, + {AclProfType::AclrtLaunchKernelWithHostArgs, "aclrtLaunchKernelWithHostArgs"}, {AclProfType::AcldvppVpcCropResizePasteAsync, "acldvppVpcCropResizePasteAsync"}, {AclProfType::AcldvppVpcBatchCropResizePasteAsync, "acldvppVpcBatchCropResizePasteAsync"}, {AclProfType::AcldvppVpcBatchCropResizeMakeBorderAsync, "acldvppVpcBatchCropResizeMakeBorderAsync"}, @@ -325,7 +326,7 @@ namespace acl { {AclProfType::AclrtUseStreamResInCurrentThread, "aclrtUseStreamResInCurrentThread"}, {AclProfType::AclrtUnuseStreamResInCurrentThread, "aclrtUnuseStreamResInCurrentThread"}, {AclProfType::AclrtGetResInCurrentThread, "aclrtGetResInCurrentThread"}, - {AclProfType::AclrtGetErrorVerbose, "aclrtGetErrorVerbose"}, + {AclProfType::AclrtGetErrorVerbose, "aclrtGetErrorVerbose"}, {AclProfType::AclrtRepairError, "aclrtRepairError"}, {AclProfType::AclrtSnapShotProcessLock, "aclrtSnapShotProcessLock"}, {AclProfType::AclrtSnapShotProcessUnlock, "aclrtSnapShotProcessUnlock"}, diff --git a/toolchain/profiling_manager.h b/toolchain/profiling_manager.h index a5ddf29d..4922ace3 100755 --- a/toolchain/profiling_manager.h +++ b/toolchain/profiling_manager.h @@ -89,7 +89,7 @@ enum AclProfType { AclDestroyTensorDesc, AclCreateDataBuffer, AclopCreateAttr, - AclrtLaunchHostFunc, + AclrtLaunchHostFunc, OpTypeEnd, RtTypeStart = MSPROF_REPORT_ACL_RUNTIME_BASE_TYPE, AclrtLaunchCallback, @@ -212,6 +212,7 @@ enum AclProfType { AcldvppVpcCropAsync, AcldvppVpcCropAndPasteAsync, AcldvppVpcConvertColorAsync, + AclrtLaunchKernelWithHostArgs, AcldvppVpcPyrDownAsync, AcldvppVpcBatchCropAsync, AcldvppVpcBatchCropAndPasteAsync, @@ -328,7 +329,7 @@ enum AclProfType { AclrtNotifyGetExportKey, AclrtNotifyImportByKey, AclrtNotifySetImportPid, - AclrtGetErrorVerbose, + AclrtGetErrorVerbose, AclrtRepairError, AclrtSnapShotProcessLock, AclrtSnapShotProcessUnlock, -- Gitee From 9c8fd1316a644986678943b327b95bfdc4078abe Mon Sep 17 00:00:00 2001 From: qq_49735440 Date: Mon, 29 Dec 2025 09:28:40 +0800 Subject: [PATCH 3/3] aclrtLaunchKernelWithHostArgs --- tests/depends/acl_stub.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/depends/acl_stub.h b/tests/depends/acl_stub.h index 7b803de4..175cb206 100755 --- a/tests/depends/acl_stub.h +++ b/tests/depends/acl_stub.h @@ -217,7 +217,7 @@ public: virtual rtError_t rtRegTaskFailCallbackByModule(const char *moduleName, rtTaskFailCallback callback); virtual rtError_t rtCallbackLaunch(rtCallback_t callBackFunc, void *fnData, rtStream_t stream, bool isBlock); virtual rtError_t rtProcessReport(int32_t timeout); - virtual rtError_t rtsLaunchHostFunc(rtStream_t stm, const rtCallback_t callBackFunc, void * const fnData); + virtual rtError_t rtsLaunchHostFunc(rtStream_t stm, const rtCallback_t callBackFunc, void * const fnData); virtual rtError_t rtUnSubscribeReport(uint64_t threadId, rtStream_t stream); virtual rtError_t rtCtxCreateEx(rtContext_t *ctx, uint32_t flags, int32_t device); virtual rtError_t rtSetDevice(int32_t device); @@ -318,6 +318,9 @@ public: virtual rtError_t rtGetSysParamOpt(const rtSysParamOpt configOpt, int64_t *const configVal); virtual rtError_t rtGetDeviceSatStatus(void *const outputAddrPtr, const uint64_t outputSize, rtStream_t stm); virtual rtError_t rtCleanDeviceSatStatus(rtStream_t stm); + virtual rtError_t rtsLaunchKernelWithHostArgs(rtFuncHandle funcHandle, uint32_t blockDim, rtStream_t stm, + rtKernelLaunchCfg_t *cfg, void *hostArgs, uint32_t argsSize, + rtPlaceHolderInfo_t *placeHolderArray, uint32_t placeHolderNum); virtual rtError_t rtMemQueueInitQS(int32_t devId, const char *groupName); virtual rtError_t rtMemQueueCreate(int32_t devId, const rtMemQueueAttr_t *queAttr, uint32_t *qid); @@ -938,7 +941,9 @@ public: MOCK_METHOD2(rtsStreamEndTaskGrp, rtError_t(rtStream_t stm, rtTaskGrp_t *handle)); MOCK_METHOD2(rtsStreamBeginTaskUpdate, rtError_t(rtStream_t stm, rtTaskGrp_t handle)); MOCK_METHOD1(rtsStreamEndTaskUpdate, rtError_t(rtStream_t stm)); - + MOCK_METHOD8(rtsLaunchKernelWithHostArgs, rtError_t(rtFuncHandle funcHandle, uint32_t blockDim, rtStream_t stm, + rtKernelLaunchCfg_t *cfg, void *hostArgs, uint32_t argsSize, + rtPlaceHolderInfo_t *placeHolderArray, uint32_t placeHolderNum)); MOCK_METHOD4(rtsMemcpyAsyncWithDesc, rtError_t(rtMemcpyDesc_t desc, rtMemcpyKind kind, rtMemcpyConfig_t *config, rtStream_t stream)); MOCK_METHOD2(rtsGetMemcpyDescSize, rtError_t(rtMemcpyKind kind, size_t *size)); -- Gitee