LCOV - code coverage report
Current view: top level - acl/aclrt_impl - stream.cpp (source / functions) Coverage Total Hit
Test: coverage.info Lines: 97.9 % 239 234
Test Date: 2026-08-06 15:29:52 Functions: 100.0 % 23 23

            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 <unordered_map>
      12              : #include "acl_rt_impl.h"
      13              : 
      14              : #include "runtime/stream.h"
      15              : #include "runtime/rts/rts_stream.h"
      16              : #include "runtime/rt_inner_stream.h"
      17              : 
      18              : #include "common/log_inner.h"
      19              : #include "common/error_codes_inner.h"
      20              : #include "common/prof_reporter.h"
      21              : #include "common/resource_statistics.h"
      22              : 
      23              : namespace {
      24              : std::unordered_map<rtError_t, const char *> succStmSyncErrCodes = {
      25              :     {ACL_ERROR_RT_END_OF_SEQUENCE, "end of sequence"},
      26              :     {ACL_ERROR_RT_MODEL_ABORT_NORMAL, "model abort normal"},
      27              :     {ACL_ERROR_RT_AICORE_OVER_FLOW, "aicore overflow"},
      28              :     {ACL_ERROR_RT_AIVEC_OVER_FLOW, "aivec overflow"},
      29              :     {ACL_ERROR_RT_OVER_FLOW, "overflow"},
      30              :     {ACL_ERROR_RT_SOCKET_CLOSE, "socket close"}};
      31              : }
      32              : 
      33              : #ifdef __cplusplus
      34              : extern "C" {
      35              : #endif
      36              : 
      37           11 : aclError aclrtCreateStreamImpl(aclrtStream *stream)
      38              : {
      39           11 :     ACL_PROFILING_REG(acl::AclProfType::AclrtCreateStream);
      40           11 :     ACL_ADD_APPLY_TOTAL_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_STREAM);
      41           11 :     ACL_LOG_INFO("start to execute aclrtCreateStream");
      42           11 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(stream);
      43              : 
      44            8 :     rtStream_t rtStream = nullptr;
      45            8 :     ACL_REQUIRES_RTS_OK(rtStreamCreate(&rtStream, static_cast<int32_t>(RT_STREAM_PRIORITY_DEFAULT)));
      46              : 
      47            5 :     *stream = static_cast<aclrtStream>(rtStream);
      48            5 :     ACL_ADD_APPLY_SUCCESS_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_STREAM);
      49            5 :     return ACL_SUCCESS;
      50           11 : }
      51              : 
      52            9 : aclError aclrtCreateStreamWithConfigImpl(aclrtStream *stream, uint32_t priority, uint32_t flag)
      53              : {
      54            9 :     ACL_PROFILING_REG(acl::AclProfType::AclrtCreateStreamWithConfig);
      55            9 :     ACL_ADD_APPLY_TOTAL_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_STREAM);
      56            9 :     ACL_LOG_INFO("start to execute aclrtCreateStreamWithConfig with priority:%u, flag:%u", priority, flag);
      57            9 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(stream);
      58              : 
      59            8 :     uint32_t streamFlag = 0U;
      60            8 :     if ((flag & ACL_STREAM_FAST_LAUNCH) != 0U) {
      61            2 :         streamFlag |= RT_STREAM_FAST_LAUNCH;
      62              :     }
      63            8 :     if ((flag & ACL_STREAM_FAST_SYNC) != 0U) {
      64            1 :         streamFlag |= RT_STREAM_FAST_SYNC;
      65              :     }
      66            8 :     if ((flag & ACL_STREAM_PERSISTENT) != 0U) {
      67            1 :         streamFlag |= RT_STREAM_PERSISTENT;
      68              :     }
      69            8 :     if ((flag & ACL_STREAM_HUGE) != 0U) {
      70            1 :         streamFlag |= RT_STREAM_HUGE;
      71              :     }
      72            8 :     if ((flag & ACL_STREAM_CPU_SCHEDULE) != 0U) {
      73            1 :         streamFlag |= RT_STREAM_CPU_SCHEDULE;
      74              :     }
      75            8 :     if ((flag & ACL_STREAM_DEVICE_USE_ONLY) != 0U) {
      76            3 :         streamFlag |= RT_STREAM_CP_PROCESS_USE;
      77              :     }
      78              : 
      79            8 :     rtStream_t rtStream = nullptr;
      80            8 :     constexpr size_t numAttrs = 2;
      81              :     rtStreamCreateAttr_t attrs[numAttrs];
      82            8 :     attrs[0].id = RT_STREAM_CREATE_ATTR_PRIORITY;
      83            8 :     attrs[0].value.priority = priority;
      84            8 :     attrs[1].id = RT_STREAM_CREATE_ATTR_FLAGS;
      85            8 :     attrs[1].value.flags = streamFlag;
      86            8 :     rtStreamCreateConfig_t config = {attrs, numAttrs};
      87            8 :     ACL_REQUIRES_RTS_OK(rtsStreamCreate(&rtStream, &config));
      88              : 
      89            8 :     *stream = static_cast<aclrtStream>(rtStream);
      90            8 :     ACL_ADD_APPLY_SUCCESS_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_STREAM);
      91            8 :     return ACL_SUCCESS;
      92            9 : }
      93              : 
      94            6 : aclError aclrtDestroyStreamImpl(aclrtStream stream)
      95              : {
      96            6 :     ACL_PROFILING_REG(acl::AclProfType::AclrtDestroyStream);
      97            6 :     ACL_ADD_RELEASE_TOTAL_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_STREAM);
      98            6 :     ACL_LOG_INFO("start to execute aclrtDestroyStream");
      99            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(stream);
     100              : 
     101            4 :     ACL_REQUIRES_RTS_OK(rtStreamDestroy(static_cast<rtStream_t>(stream)));
     102            2 :     ACL_LOG_INFO("aclrtDestroyStream success");
     103            2 :     ACL_ADD_RELEASE_SUCCESS_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_STREAM);
     104            2 :     return ACL_SUCCESS;
     105            6 : }
     106              : 
     107            6 : aclError aclrtDestroyStreamForceImpl(aclrtStream stream)
     108              : {
     109            6 :     ACL_PROFILING_REG(acl::AclProfType::AclrtDestroyStreamForce);
     110            6 :     ACL_ADD_RELEASE_TOTAL_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_STREAM);
     111            6 :     ACL_LOG_INFO("start to execute aclrtDestroyStreamForce");
     112            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(stream);
     113              : 
     114            4 :     ACL_REQUIRES_RTS_OK(rtStreamDestroyForce(static_cast<rtStream_t>(stream)));
     115            2 :     ACL_LOG_INFO("aclrtDestroyStreamForce success");
     116            2 :     ACL_ADD_RELEASE_SUCCESS_COUNT(acl::ACL_STATISTICS_CREATE_DESTROY_STREAM);
     117            2 :     return ACL_SUCCESS;
     118            6 : }
     119              : 
     120            7 : aclError aclrtSynchronizeStreamImpl(aclrtStream stream)
     121              : {
     122            7 :     ACL_PROFILING_REG(acl::AclProfType::AclrtSynchronizeStream);
     123              : 
     124            7 :     const rtError_t rtErr = rtStreamSynchronize(static_cast<rtStream_t>(stream));
     125            7 :     if (rtErr != RT_ERROR_NONE) {
     126            3 :         const auto it = succStmSyncErrCodes.find(rtErr);
     127            3 :         if (it != succStmSyncErrCodes.cend()) {
     128            1 :             ACL_LOG_INFO("Synchronize stream success, err = %d, desc = %s",
     129              :                          static_cast<int32_t>(rtErr), it->second);
     130              :         }
     131            3 :         return ACL_GET_ERRCODE_RTS(rtErr);
     132              :     }
     133              : 
     134            4 :     return ACL_SUCCESS;
     135            7 : }
     136              : 
     137            7 : aclError aclrtSynchronizeStreamWithTimeoutImpl(aclrtStream stream, int32_t timeout)
     138              : {
     139            7 :     ACL_PROFILING_REG(acl::AclProfType::AclrtSynchronizeStreamWithTimeout);
     140            7 :     constexpr int32_t defaultTimeout = -1;
     141            7 :     if (timeout < defaultTimeout) {
     142            1 :         ACL_LOG_CALL_ERROR("the timeout of synchronize stream is invalid");
     143            1 :         const std::string timeoutVal = std::to_string(timeout);
     144            1 :         std::string funcName = acl::AclErrorLogManager::GetFuncNameWithoutImplSuffix(__func__);
     145            1 :         acl::AclErrorLogManager::ReportInputError(acl::INVALID_VALUE_MSG,
     146            2 :             std::vector<const char *>({"func", "value", "param", "expect"}),
     147            2 :             std::vector<const char *>({funcName.c_str(), timeoutVal.c_str(), "timeout", "[-1, INT_MAX]"}));
     148            1 :         return ACL_ERROR_RT_PARAM_INVALID;
     149            1 :     }
     150            6 :     const rtError_t rtErr = rtStreamSynchronizeWithTimeout(static_cast<rtStream_t>(stream), timeout);
     151            6 :     if (rtErr == ACL_ERROR_RT_STREAM_SYNC_TIMEOUT) {
     152            1 :         return ACL_ERROR_RT_STREAM_SYNC_TIMEOUT;
     153              :     }
     154            5 :     if (rtErr != RT_ERROR_NONE) {
     155            2 :         const auto it = succStmSyncErrCodes.find(rtErr);
     156            2 :         if (it != succStmSyncErrCodes.cend()) {
     157            1 :             ACL_LOG_INFO("synchronize stream with timeout success, err = %d, desc = %s",
     158              :                          static_cast<int32_t>(rtErr), it->second);
     159              :         }
     160            2 :         return ACL_GET_ERRCODE_RTS(rtErr);
     161              :     }
     162              : 
     163            3 :     return ACL_SUCCESS;
     164            7 : }
     165              : 
     166            4 : aclError aclrtStreamQueryImpl(aclrtStream stream, aclrtStreamStatus *status)
     167              : {
     168            4 :     ACL_PROFILING_REG(acl::AclProfType::AclrtStreamQuery);
     169            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(status);
     170              : 
     171            3 :     const rtError_t rtErr = rtStreamQuery(static_cast<rtStream_t>(stream));
     172            3 :     if (rtErr == RT_ERROR_NONE) {
     173            1 :         *status = ACL_STREAM_STATUS_COMPLETE;
     174            2 :     } else if (rtErr == ACL_ERROR_RT_STREAM_NOT_COMPLETE) {
     175            1 :         *status = ACL_STREAM_STATUS_NOT_READY;
     176              :     } else {
     177            1 :         return ACL_GET_ERRCODE_RTS(rtErr);
     178              :     }
     179              : 
     180            2 :     return ACL_SUCCESS;
     181            4 : }
     182              : 
     183            4 : aclError aclrtStreamGetPriorityImpl(aclrtStream stream, uint32_t *priority)
     184              : {
     185            4 :     ACL_PROFILING_REG(acl::AclProfType::AclrtStreamGetPriority);
     186            4 :     ACL_LOG_INFO("start to execute aclrtStreamGetPriority");
     187            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(priority);
     188            3 :     rtStream_t rtStream = static_cast<rtStream_t>(stream);
     189            3 :     uint32_t prio = 0U;
     190            3 :     ACL_REQUIRES_RTS_OK(rtStreamGetPriority(rtStream, &prio));
     191            2 :     *priority = prio;
     192            2 :     ACL_LOG_INFO("successfully execute aclrtStreamGetPriority, priority is %u", *priority);
     193            2 :     return ACL_SUCCESS;
     194            4 : }
     195              : 
     196            4 : aclError aclrtStreamGetFlagsImpl(aclrtStream stream, uint32_t *flags)
     197              : {
     198            4 :     ACL_PROFILING_REG(acl::AclProfType::AclrtStreamGetFlags);
     199            4 :     ACL_LOG_INFO("start to execute aclrtStreamGetFlags");
     200            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(flags);
     201            3 :     rtStream_t rtStream = static_cast<rtStream_t>(stream);
     202            3 :     uint32_t rtFlags = 0U;
     203            3 :     ACL_REQUIRES_RTS_OK(rtStreamGetFlags(rtStream, &rtFlags));
     204            2 :     uint32_t aclFlags = 0U;
     205            2 :     if ((rtFlags & RT_STREAM_FAST_LAUNCH) != 0U) {
     206            1 :         aclFlags |= ACL_STREAM_FAST_LAUNCH;
     207              :     }
     208            2 :     if ((rtFlags & RT_STREAM_FAST_SYNC) != 0U) {
     209            0 :         aclFlags |= ACL_STREAM_FAST_SYNC;
     210              :     }
     211            2 :     if ((rtFlags & RT_STREAM_PERSISTENT) != 0U) {
     212            0 :         aclFlags |= ACL_STREAM_PERSISTENT;
     213              :     }
     214            2 :     if ((rtFlags & RT_STREAM_HUGE) != 0U) {
     215            0 :         aclFlags |= ACL_STREAM_HUGE;
     216              :     }
     217            2 :     if ((rtFlags & RT_STREAM_CPU_SCHEDULE) != 0U) {
     218            0 :         aclFlags |= ACL_STREAM_CPU_SCHEDULE;
     219              :     }
     220            2 :     if ((rtFlags & RT_STREAM_CP_PROCESS_USE) != 0U) {
     221            0 :         aclFlags |= ACL_STREAM_DEVICE_USE_ONLY;
     222              :     }
     223            2 :     *flags = aclFlags;
     224            2 :     ACL_LOG_INFO("successfully execute aclrtStreamGetFlags, rtFlags is %#x, aclFlags is %#x", rtFlags, *flags);
     225            2 :     return ACL_SUCCESS;
     226            4 : }
     227              : 
     228            6 : aclError aclrtStreamWaitEventImpl(aclrtStream stream, aclrtEvent event)
     229              : {
     230            6 :     ACL_PROFILING_REG(acl::AclProfType::AclrtStreamWaitEvent);
     231            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(event);
     232              : 
     233            6 :     ACL_REQUIRES_RTS_OK(rtStreamWaitEvent(static_cast<rtStream_t>(stream), static_cast<rtEvent_t>(event)));
     234              : 
     235            4 :     return ACL_SUCCESS;
     236            6 : }
     237              : 
     238            8 : aclError aclrtSetStreamFailureModeImpl(aclrtStream stream, uint64_t mode)
     239              : {
     240            8 :     ACL_PROFILING_REG(acl::AclProfType::AclrtSetStreamFailureMode);
     241            8 :     ACL_LOG_INFO("start to execute aclrtSetStreamFailureMode, mode is %lu", mode);
     242            8 :     ACL_REQUIRES_RTS_OK(rtStreamSetMode(static_cast<rtStream_t>(stream), mode));
     243            4 :     ACL_LOG_INFO("successfully execute aclrtSetStreamFailureMode, mode is %lu", mode);
     244            4 :     return ACL_SUCCESS;
     245            8 : }
     246              : 
     247            2 : aclError aclrtGetStreamOverflowSwitchImpl(aclrtStream stream, uint32_t *flag)
     248              : {
     249            2 :     ACL_LOG_INFO("start to execute aclrtGetStreamOverflowSwitch");
     250            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(flag);
     251            2 :     ACL_REQUIRES_RTS_OK(rtGetStreamOverflowSwitch(static_cast<rtStream_t>(stream), flag));
     252            1 :     ACL_LOG_INFO("successfully execute aclrtGetStreamOverflowSwitch, flag is %d.", *flag);
     253            1 :     return ACL_SUCCESS;
     254              : }
     255              : 
     256            2 : aclError aclrtSetStreamOverflowSwitchImpl(aclrtStream stream, uint32_t flag)
     257              : {
     258            2 :     ACL_LOG_INFO("start to execute aclrtSetStreamOverflowSwitch, flag is %u.", flag);
     259            2 :     ACL_CHECK_INVALID_VALUE_WITH_EXPECT((flag == 0U) || (flag == 1U), flag, "0 or 1");
     260            2 :     ACL_REQUIRES_RTS_OK(rtSetStreamOverflowSwitch(static_cast<rtStream_t>(stream), flag));
     261            1 :     ACL_LOG_INFO("successfully execute rtSetStreamOverflowSwitch, flag is %u.", flag);
     262            1 :     return ACL_SUCCESS;
     263              : }
     264              : 
     265            3 : aclError aclrtStreamAbortImpl(aclrtStream stream)
     266              : {
     267            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtStreamAbort);
     268            3 :     ACL_LOG_INFO("start to execute aclrtStreamAbort");
     269            3 :     ACL_REQUIRES_RTS_OK(rtStreamAbort(stream));
     270              : 
     271            2 :     ACL_LOG_INFO("successfully execute aclrtStreamAbort");
     272            2 :     return ACL_SUCCESS;
     273            3 : }
     274              : 
     275            2 : aclError aclrtStreamGetIdImpl(aclrtStream stream, int32_t *streamId)
     276              : {
     277            2 :     ACL_PROFILING_REG(acl::AclProfType::AclrtStreamGetId);
     278            2 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(streamId);
     279            2 :     ACL_REQUIRES_RTS_OK(rtsStreamGetId(static_cast<rtStream_t>(stream), streamId));
     280            1 :     return ACL_SUCCESS;
     281            2 : }
     282              : 
     283            3 : aclError aclrtGetStreamAvailableNumImpl(uint32_t *streamCount)
     284              : {
     285            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtGetStreamAvailableNum);
     286            3 :     ACL_LOG_INFO("start to execute aclrtGetStreamAvailableNum");
     287            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(streamCount);
     288              : 
     289            2 :     ACL_REQUIRES_RTS_OK(rtsStreamGetAvailableNum(streamCount));
     290              : 
     291            1 :     ACL_LOG_INFO("successfully execute aclrtGetStreamAvailableNum");
     292            1 :     return ACL_SUCCESS;
     293            3 : }
     294              : 
     295            4 : aclError aclrtSetStreamAttributeImpl(aclrtStream stream, aclrtStreamAttr stmAttrType, aclrtStreamAttrValue *value)
     296              : {
     297            4 :     ACL_PROFILING_REG(acl::AclProfType::AclrtSetStreamAttribute);
     298            4 :     ACL_LOG_INFO("start to execute aclrtSetStreamAttribute, stmAttrType = [%u]", static_cast<uint32_t>(stmAttrType));
     299            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(value);
     300              : 
     301            2 :     ACL_REQUIRES_RTS_OK(rtsStreamSetAttribute(static_cast<rtStream_t>(stream),
     302              :         static_cast<rtStreamAttr>(stmAttrType),
     303              :         reinterpret_cast<rtStreamAttrValue_t*>(value)));
     304              : 
     305            1 :     ACL_LOG_INFO("successfully execute aclrtSetStreamAttribute");
     306            1 :     return ACL_SUCCESS;
     307            4 : }
     308              : 
     309            4 : aclError aclrtGetStreamAttributeImpl(aclrtStream stream, aclrtStreamAttr stmAttrType, aclrtStreamAttrValue *value)
     310              : {
     311            4 :     ACL_PROFILING_REG(acl::AclProfType::AclrtGetStreamAttribute);
     312            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(value);
     313              : 
     314            2 :     ACL_REQUIRES_RTS_OK(rtsStreamGetAttribute(static_cast<rtStream_t>(stream),
     315              :         static_cast<rtStreamAttr>(stmAttrType),
     316              :         reinterpret_cast<rtStreamAttrValue_t*>(value)));
     317              : 
     318            1 :     return ACL_SUCCESS;
     319            4 : }
     320              : 
     321            4 : aclError aclrtActiveStreamImpl(aclrtStream activeStream, aclrtStream stream)
     322              : {
     323            4 :     ACL_PROFILING_REG(acl::AclProfType::AclrtActiveStream);
     324            4 :     ACL_LOG_INFO("start to execute aclrtActiveStream");
     325            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(activeStream);
     326            3 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(stream);
     327              : 
     328            2 :     ACL_REQUIRES_RTS_OK(rtsActiveStream(static_cast<rtStream_t>(activeStream), static_cast<rtStream_t>(stream)));
     329              : 
     330            1 :     ACL_LOG_INFO("successfully execute aclrtActiveStream");
     331            1 :     return ACL_SUCCESS;
     332            4 : }
     333              : 
     334            7 : aclError aclrtSwitchStreamImpl(void *leftValue, aclrtCondition cond, void *rightValue, aclrtCompareDataType dataType,
     335              :     aclrtStream trueStream, aclrtStream falseStream, aclrtStream stream)
     336              : {
     337            7 :     ACL_PROFILING_REG(acl::AclProfType::AclrtSwitchStream);
     338            7 :     ACL_LOG_INFO("start to execute aclrtSwitchStream, cond is [%u], dataType is [%u]",
     339              :         static_cast<uint32_t>(cond), static_cast<uint32_t>(dataType));
     340            7 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(leftValue);
     341            6 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(rightValue);
     342            5 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(trueStream);
     343            4 :     ACL_REQUIRES_NOT_NULL_WITH_INPUT_REPORT(stream);
     344            3 :     ACL_CHECK_INVALID_PARAM_NO_VALUE(falseStream == nullptr, "falseStream",
     345              :         "falseStream is a reserved parameter and must be nullptr");
     346              : 
     347            2 :     ACL_REQUIRES_RTS_OK(rtsSwitchStream(leftValue, static_cast<rtCondition_t>(cond), rightValue,
     348              :         static_cast<rtSwitchDataType_t>(dataType), static_cast<rtStream_t>(trueStream),
     349              :         static_cast<rtStream_t>(falseStream), static_cast<rtStream_t>(stream)));
     350              : 
     351            1 :     ACL_LOG_INFO("successfully execute aclrtSwitchStream");
     352            1 :     return ACL_SUCCESS;
     353            7 : }
     354              : 
     355            3 : aclError aclrtStreamStopImpl(aclrtStream stream)
     356              : {
     357            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtStreamStop);
     358            3 :     ACL_LOG_INFO("start to execute aclrtStreamStop");
     359              : 
     360            3 :     ACL_REQUIRES_RTS_OK(rtsStreamStop(static_cast<rtStream_t>(stream)));
     361            2 :     ACL_LOG_INFO("successfully execute aclrtStreamStop");
     362            2 :     return ACL_SUCCESS;
     363            3 : }
     364              : 
     365            3 : aclError aclrtPersistentTaskCleanImpl(aclrtStream stream)
     366              : {
     367            3 :     ACL_PROFILING_REG(acl::AclProfType::AclrtPersistentTaskClean);
     368            3 :     ACL_LOG_INFO("start to execute aclrtPersistentTaskClean");
     369              : 
     370            3 :     ACL_REQUIRES_RTS_OK(rtsPersistentTaskClean(static_cast<rtStream_t>(stream)));
     371            2 :     ACL_LOG_INFO("successfully execute aclrtPersistentTaskClean");
     372            2 :     return ACL_SUCCESS;
     373            3 : }
     374              : 
     375            3 : aclError aclmdlRIGetTasksByStreamImpl(aclrtStream stream, aclmdlRITask *tasks, uint32_t *numTasks)
     376              : {
     377            3 :     ACL_PROFILING_REG(acl::AclProfType::AclmdlRIGetTasksByStream);
     378              : 
     379            3 :     ACL_REQUIRES_RTS_OK(rtStreamGetTasks(static_cast<rtStream_t>(stream), static_cast<rtTask_t *>(tasks),
     380              :         numTasks));
     381              : 
     382            1 :     return ACL_SUCCESS;
     383            3 : }
     384              : #ifdef __cplusplus
     385              : }
     386              : #endif
        

Generated by: LCOV version 2.0-1