当前位置: 首页 > news >正文

CANN Runtime Stream管理API参考

6. Stream管理

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

本章节描述 CANN Runtime 的 Stream 管理接口,用于 Stream 的创建、销毁、同步、查询及属性配置。

  • aclError aclrtCreateStream(aclrtStream *stream):创建Stream。
  • aclError aclrtCreateStreamWithConfig(aclrtStream *stream, uint32_t priority, uint32_t flag):在当前进程或线程中创建Stream。
  • aclError aclrtDestroyStream(aclrtStream stream):销毁Stream,销毁通过aclrtCreateStream或aclrtCreateStreamWithConfig接口创建的Stream,若Stream上有未完成的任务,会等待任务完成后再销毁Stream。
  • aclError aclrtDestroyStreamForce(aclrtStream stream):销毁Stream,销毁通过aclrtCreateStream或aclrtCreateStreamWithConfig接口创建的Stream,若Stream上有未完成的任务,不会等待任务完成,直接强制销毁Stream。
  • aclError aclrtSetStreamOverflowSwitch(aclrtStream stream, uint32_t flag):饱和模式下,对接上层训练框架时(例如PyTorch),针对指定Stream,打开或关闭溢出检测开关,关闭后无法通过溢出检测算子获取任务是否溢出。
  • aclError aclrtGetStreamOverflowSwitch(aclrtStream stream, uint32_t *flag):针对指定Stream,获取其当前溢出检测开关是否打开。
  • aclError aclrtSetStreamFailureMode(aclrtStream stream, uint64_t mode):当一个Stream上下发了多个任务时,可通过本接口指定任务调度模式,以便控制某个任务失败后是否继续执行下一个任务。
  • aclError aclrtStreamQuery(aclrtStream stream, aclrtStreamStatus *status):查询指定Stream上的所有任务的执行状态。
  • aclError aclrtSynchronizeStream(aclrtStream stream):阻塞Host侧当前线程直到指定Stream中的所有任务都完成。
  • aclError aclrtSynchronizeStreamWithTimeout(aclrtStream stream, int32_t timeout):阻塞Host侧当前线程直到指定Stream中的所有任务都完成,该接口是在aclrtSynchronizeStream接口基础上进行了增强,支持用户设置超时时间,当应用程序异常时可根据所设置的超时时间自行退出。
  • aclError aclrtStreamAbort(aclrtStream stream):停止指定Stream上正在执行的任务、丢弃指定Stream上已下发但未执行的任务。本接口执行期间,指定Stream上新下发的任务不再生效。
  • aclError aclrtStreamGetId(aclrtStream stream, int32_t *streamId):获取指定Stream的ID。
  • aclError aclrtGetStreamAvailableNum(uint32_t *streamCount):获取当前Device上剩余可用的Stream数量。(废弃接口)
  • aclError aclrtSetStreamAttribute(aclrtStream stream, aclrtStreamAttr stmAttrType, aclrtStreamAttrValue *value):设置Stream属性值。
  • aclError aclrtGetStreamAttribute(aclrtStream stream, aclrtStreamAttr stmAttrType, aclrtStreamAttrValue *value):获取Stream属性值。
  • aclError aclrtActiveStream(aclrtStream activeStream, aclrtStream stream):激活Stream。异步接口。
  • aclError aclrtSwitchStream(void *leftValue, aclrtCondition cond, void *rightValue, aclrtCompareDataType dataType, aclrtStream trueStream, aclrtStream falseStream, aclrtStream stream):根据条件在Stream之间跳转。异步接口。
  • aclError aclrtRegStreamStateCallback(const char *regName, aclrtStreamStateCallback callback, void *args):注册Stream状态回调函数,不支持重复注册。
  • aclError aclrtStreamStop(aclrtStream stream):仅停止指定Stream上的正在执行的任务,不清理任务。
  • aclError aclrtPersistentTaskClean(aclrtStream stream):清理ACL_STREAM_PERSISTENT类型的Stream上的任务,适用于在不删除该类型Stream的情况下重新下发任务的场景。
  • aclError aclrtStreamGetPriority(aclrtStream stream, uint32_t *priority):查询指定Stream的优先级。
  • aclError aclrtStreamGetFlags(aclrtStream stream, uint32_t *flags):查询创建Stream时设置的flag标志。

aclrtCreateStream

aclError aclrtCreateStream(aclrtStream *stream)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

创建Stream。

该接口不支持设置Stream的优先级;若不设置,Stream的优先级默认为最高。如需在创建Stream时设置优先级,请参见aclrtCreateStreamWithConfig接口。

若不显式调用Stream创建接口,那么每个Context对应一个默认Stream,该默认Stream是调用aclrtSetDevice接口或aclrtCreateContext接口隐式创建的,默认Stream的优先级不支持设置,为最高优先级。默认Stream适合简单、无复杂交互逻辑的应用,但缺点在于,在多线程编程中,执行结果取决于线程调度的顺序。显式创建的Stream适合大型、复杂交互逻辑的应用,且便于提高程序的可读性、可维护性,推荐显式

参数说明

参数名输入/输出说明
stream输出Stream的指针。类型定义请参见aclrtStream。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

约束说明

不同型号的硬件支持的Stream最大数不同,如果已存在多个Stream(包含默认Stream),则只能显式创建N个Stream,N = Stream最大数 - 已存在的Stream数。例如,Stream最大数为1024,已存在2个Stream,则只能调用本接口显式创建1022个Stream。

  • 对于Ascend 950PR/Ascend 950DT、Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品,Stream最大数为1984。
  • 对于Atlas 200I/500 A2 推理产品,Stream最大数为512。
  • 对于Atlas 推理系列产品,Stream最大数为1024。
  • Atlas 训练系列产品,Stream最大数为2048。

    多进程场景下,若一次性创建的Stream数量总和接近2048,可能会出现创建Stream失败的情况,此时,建议:

    (1)清理冗余Stream,减少不必要的Stream;

    (2)调整代码逻辑,分批创建Stream,例如第一批创建部分Stream,然后第二批再创建部分Stream,以此类推,直到Stream总数接近2048。




aclrtCreateStreamWithConfig

aclError aclrtCreateStreamWithConfig(aclrtStream *stream, uint32_t priority, uint32_t flag)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

在当前进程或线程中创建Stream。

相比aclrtCreateStream接口,使用本接口可以创建一个快速下发任务的Stream,但会增加内存消耗或CPU的性能消耗。

参数说明

参数名输入/输出说明
stream输出Stream的指针。类型定义请参见aclrtStream。
priority输入优先级。
该参数为预留参数,暂不使用。
flag输入Stream指针的flag。
flag既支持配置单个宏,也支持配置多个宏位或。对于不支持位或的宏,本接口会返回报错。配置其他值创建出来的Stream等同于通过aclrtCreateStream接口创建出来的Stream。
flag参数值请参见“flag取值说明”。

flag取值说明

  • ACL_STREAM_FAST_LAUNCH:使用该flag创建出来的Stream,在使用Stream时,下发任务的速度更快。

    相比aclrtCreateStream接口创建出来的Stream,在使用Stream时才会申请系统内部资源,导致下发任务的时长增加,使用本接口的ACL_STREAM_FAST_LAUNCH模式创建Stream时,会在创建Stream时预申请系统内部资源,因此创建Stream的时长增加,下发任务的时长缩短,总体来说,创建一次Stream,使用多次的场景下,总时长缩短,但创建Stream时预申请内部资源会增加内存消耗。

    宏定义:#define ACL_STREAM_FAST_LAUNCH 0x00000001U

  • ACL_STREAM_FAST_SYNC:使用该flag创建出来的Stream,在调用aclrtSynchronizeStream接口时,会阻塞当前线程,主动查询任务的执行状态,一旦任务完成,立即返回。

    相比aclrtCreateStream接口创建出来的Stream,在调用aclrtSynchronizeStream接口时,会一直被动等待Device上任务执行完成的通知,等待时间长,使用本接口的ACL_STREAM_FAST_SYNC模式创建的Stream,没有被动等待,总时长缩短,但主动查询的操作会增加CPU的性能消耗。

    宏定义:#define ACL_STREAM_FAST_SYNC 0x00000002U

  • ACL_STREAM_PERSISTENT:使用该flag创建出来的Stream,在该Stream上下发的任务不会立即执行、任务执行完成后也不会立即销毁,在销毁Stream时才会销毁任务相关的资源。该方式下创建的Stream用于与模型绑定,适用于模型构建场景,模型构建相关接口的说明请参见aclmdlRIBindStream。

    宏定义:#define ACL_STREAM_PERSISTENT 0x00000004U

  • ACL_STREAM_HUGE:相比其他flag,使用该flag创建出来的Stream所能容纳的Task最大数量更大。

    当前版本设置该flag不生效。

    宏定义:#define ACL_STREAM_HUGE 0x00000008U

  • ACL_STREAM_CPU_SCHEDULE:使用该flag创建出来的Stream用于队列方式模型推理场景下承载AI CPU调度的相关任务。预留功能。

    宏定义:#define ACL_STREAM_CPU_SCHEDULE 0x00000010U

  • ACL_STREAM_DEVICE_USE_ONLY:表示该Stream仅在Device上调用。

    宏定义:#define ACL_STREAM_DEVICE_USE_ONLY 0x00000020U

    仅如下型号支持ACL_STREAM_DEVICE_USE_ONLY:

    Ascend 950PR/Ascend 950DT

    Atlas A3 训练系列产品/Atlas A3 推理系列产品

    Atlas A2 训练系列产品/Atlas A2 推理系列产品

    Atlas 推理系列产品

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtDestroyStream

aclError aclrtDestroyStream(aclrtStream stream)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:支持

功能说明

销毁Stream,若Stream上有未完成的任务,会等待任务完成后再销毁Stream。

参数说明

参数名输入/输出说明
stream输入待销毁的Stream。类型定义请参见aclrtStream。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

约束说明

  • 在调用aclrtDestroyStream接口销毁指定Stream前,需要先调用aclrtSynchronizeStream接口确保Stream中的任务都已完成。
  • 调用aclrtDestroyStream接口销毁指定Stream时,需确保该Stream在当前Context下。
  • 在调用aclrtDestroyStream接口销毁指定Stream时,需确保其它接口没有正在使用该Stream。



aclrtDestroyStreamForce

aclError aclrtDestroyStreamForce(aclrtStream stream)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

销毁Stream,销毁通过aclrtCreateStream或aclrtCreateStreamWithConfig接口创建的Stream,若Stream上有未完成的任务,不会等待任务完成,直接强制销毁Stream。

参数说明

参数名输入/输出说明
stream输入待销毁的Stream。类型定义请参见aclrtStream。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

约束说明

调用本接口销毁指定Stream时,需确保该Stream在当前Context下。




aclrtSetStreamOverflowSwitch

aclError aclrtSetStreamOverflowSwitch(aclrtStream stream, uint32_t flag)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

对接上层训练框架时(例如PyTorch),针对指定Stream,打开或关闭溢出检测开关,关闭后无法通过溢出检测算子获取任务是否溢出。

参数说明

参数名输入/输出说明
stream输入待操作Stream。类型定义请参见aclrtStream。
flag输入溢出检测开关,取值范围如下:

- 0:关闭
- 1:打开

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

约束说明

  • 调用该接口打开或关闭溢出检测开关后,仅对后续新下发的任务生效,已下发的任务仍维持原样。



aclrtGetStreamOverflowSwitch

aclError aclrtGetStreamOverflowSwitch(aclrtStream stream, uint32_t *flag)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

针对指定Stream,获取其当前溢出检测开关是否打开。

参数说明

参数名输入/输出说明
stream输入待操作Stream。类型定义请参见aclrtStream。
flag输出溢出检测开关,取值范围如下:

- 0:关闭
- 1:打开

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtSetStreamFailureMode

aclError aclrtSetStreamFailureMode(aclrtStream stream, uint64_t mode)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

当一个Stream上下发了多个任务时,可通过本接口指定任务调度模式,以便控制某个任务失败后是否继续执行下一个任务。

参数说明

参数名输入/输出说明
stream输入待操作Stream。类型定义请参见aclrtStream。
mode输入当一个Stream上下发了多个任务时,可通过本参数指定任务调度模式,以便控制某个任务失败后是否继续执行下一个任务。
取值范围如下:

- ACL_CONTINUE_ON_FAILURE:默认值,某个任务失败后,继续执行下一个任务;
- ACL_STOP_ON_FAILURE:某个任务失败后,停止执行后续任务,通常称作遇错即停。触发遇错即停之后,不支持再下发新任务。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

约束说明

  • 针对指定Stream只能调用一次本接口设置任务调度模式。
  • 当Stream上设置了遇错即停模式,该Stream所在的Context下的其它Stream也是遇错即停 。
  • 对于Ascend 950PR/Ascend 950DT、Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品,支持指定默认Stream(即stream参数传入NULL)。
  • 对于Atlas 200I/500 A2 推理产品、Atlas 推理系列产品、Atlas 训练系列产品,不支持指定默认Stream(即stream参数传入NULL)。



aclrtStreamQuery

aclError aclrtStreamQuery(aclrtStream stream, aclrtStreamStatus *status)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

查询指定Stream上的所有任务的执行状态。

参数说明

参数名输入/输出说明
stream输入Stream的指针。类型定义请参见aclrtStream。
status输出Stream上的任务状态。类型定义请参见aclrtStreamStatus。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtSynchronizeStream

aclError aclrtSynchronizeStream(aclrtStream stream)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:支持

功能说明

阻塞Host侧当前线程直到指定Stream中的所有任务都完成。

参数说明

参数名输入/输出说明
stream输入指定需要完成所有任务的Stream。类型定义请参见aclrtStream。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtSynchronizeStreamWithTimeout

aclError aclrtSynchronizeStreamWithTimeout(aclrtStream stream, int32_t timeout)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

阻塞Host侧当前线程直到指定Stream中的所有任务都完成,该接口是在aclrtSynchronizeStream接口基础上进行了增强,支持用户设置超时时间,当应用程序异常时可根据所设置的超时时间自行退出。

参数说明

参数名输入/输出说明
stream输入指定需要完成所有任务的Stream。类型定义请参见aclrtStream。
timeout输入接口的超时时间。
取值说明如下:

- -1:表示永久等待,和接口aclrtSynchronizeStream功能一样;
- >0:配置具体的超时时间,单位是毫秒。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtStreamAbort

aclError aclrtStreamAbort(aclrtStream stream)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

停止指定Stream上正在执行的任务、丢弃指定Stream上已下发但未执行的任务。本接口执行期间,指定Stream上新下发的任务不再生效。

参数说明

参数名输入/输出说明
stream输入指定待停止任务的Stream。类型定义请参见aclrtStream。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

约束说明

  • 不支持使用aclmdlRIBindStream接口来绑定模型运行实例的Stream。
  • 如果有其它Stream依赖本接口中指定的Stream(例如通过aclrtRecordEvent、aclrtStreamWaitEvent等接口实现两个Stream间同步等待),则其它Stream执行可能会卡住,此时您需要显式调用本接口清除其它Stream上的任务。
  • 如果调用本接口清除指定Stream上的任务时,再调用同步等待接口(例如aclrtSynchronizeStream、aclrtSynchronizeEvent等),同步等待接口会退出并返回ACL_ERROR_RT_STREAM_ABORT的报错。
  • 对于Ascend 950PR/Ascend 950DT,不支持如下方式创建的Stream:调用aclrtCreateStreamWithConfig,将flag设置为ACL_STREAM_PERSISTENT。



aclrtStreamGetId

aclError aclrtStreamGetId(aclrtStream stream, int32_t *streamId)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

获取指定Stream的ID。

参数说明

参数名输入/输出说明
stream输入指定要查询的Stream。类型定义请参见aclrtStream。
若此处传入NULL,则获取的是默认Stream的ID。
streamId输出Stream ID。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtGetStreamAvailableNum(废弃)

aclError aclrtGetStreamAvailableNum(uint32_t *streamCount)

须知:此接口后续版本会废弃。

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

获取当前Device上剩余可用的Stream数量。

参数说明

参数名输入/输出说明
streamCount输出Stream数量。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtSetStreamAttribute

aclError aclrtSetStreamAttribute(aclrtStream stream, aclrtStreamAttr stmAttrType, aclrtStreamAttrValue *value)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

设置Stream属性值。

参数说明

参数名输入/输出说明
stream输入指定Stream。类型定义请参见aclrtStream。
stmAttrType输入属性类型。类型定义请参见aclrtStreamAttr。
value输入属性值。类型定义请参见aclrtStreamAttrValue。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

约束说明

  • 溢出检测属性:调用该接口打开或关闭溢出检测开关后,仅对后续新下发的任务生效,已下发的任务仍维持原样。
  • Failure Mode:不支持对Context中的默认Stream设置Failure Mode。
  • 当Stream上设置了遇错即停模式,该Stream所在的Context下的其它Stream也是遇错即停。
  • 对于Ascend 950PR/Ascend 950DT、Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品,支持指定默认Stream(即stream参数传入NULL)。
  • 对于Atlas 200I/500 A2 推理产品、Atlas 推理系列产品、Atlas 训练系列产品,不支持指定默认Stream(即stream参数传入NULL)。



aclrtGetStreamAttribute

aclError aclrtGetStreamAttribute(aclrtStream stream, aclrtStreamAttr stmAttrType, aclrtStreamAttrValue *value)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

获取Stream属性值。

参数说明

参数名输入/输出说明
stream输入指定Stream。类型定义请参见aclrtStream。
stmAttrType输入属性类型。类型定义请参见aclrtStreamAttr。
value输出属性值。类型定义请参见aclrtStreamAttrValue。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

约束说明

对于Ascend 950PR/Ascend 950DT、Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品,支持指定默认Stream(即stream参数传入NULL)。

对于Atlas 200I/500 A2 推理产品、Atlas 推理系列产品、Atlas 训练系列产品,不支持指定默认Stream(即stream参数传入NULL)。




aclrtActiveStream

aclError aclrtActiveStream(aclrtStream activeStream, aclrtStream stream)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

激活Stream。异步接口。

被激活的Stream上的任务与当前Stream上的任务并行执行。

参数说明

参数名输入/输出说明
activeStream输入待激活的Stream。类型定义请参见aclrtStream。
此处只支持与模型绑定过的Stream,绑定模型与Stream需调用aclmdlRIBindStream接口。
stream输入执行激活任务的Stream。类型定义请参见aclrtStream。
此处只支持与模型绑定过的Stream,绑定模型与Stream需调用aclmdlRIBindStream接口。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtSwitchStream

aclError aclrtSwitchStream(void *leftValue, aclrtCondition cond, void *rightValue, aclrtCompareDataType dataType, aclrtStream trueStream, aclrtStream falseStream, aclrtStream stream)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

根据条件在Stream之间跳转。异步接口。

跳转成功后,只执行所跳转的Stream上的任务,当前Stream上的任务停止执行。

参数说明

参数名输入/输出说明
leftValue输入左值数据的Device内存地址。
cond输入左值数据与右值数据的比较条件。类型定义请参见aclrtCondition。
rightValue输入右值数据的Device内存地址。
dataType输入左值数据、右值数据的数据类型。类型定义请参见aclrtCompareDataType。
trueStream输入根据cond处指定的条件,条件成立时,则执行trueStream上的任务。类型定义请参见aclrtStream。
falseStream输入预留参数,当前固定传NULL。
取值详见aclrtStream。
stream输入执行跳转任务的Stream。类型定义请参见aclrtStream。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtRegStreamStateCallback

aclError aclrtRegStreamStateCallback(const char *regName, aclrtStreamStateCallback callback, void *args)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

注册Stream状态回调函数,不支持重复注册。

当Stream状态发生变化时(例如调用aclrtCreateStream、aclrtDestroyStream等接口),Runtime模块会触发该回调函数的调用。此处的Stream包含显式创建的Stream以及默认Stream。

参数说明

参数名输入/输出说明
regName输入注册唯一名称,不能为空,输入保证字符串以\0结尾。
callback输入回调函数。若callback不为NULL,则表示注册回调函数;若为NULL,则表示取消注册回调函数。
args输入待传递给回调函数的用户数据的指针。

回调函数的函数原型为:
typedef enum { ACL_RT_STREAM_STATE_CREATE_POST = 1, // 调用create接口(例如aclrtCreateStream)之后 ACL_RT_STREAM_STATE_DESTROY_PRE, // 调用destroy接口(例如aclrtDestroyStream)之前 } aclrtStreamState; typedef void (*aclrtStreamStateCallback)(aclrtStream stm, aclrtStreamState state, void *args);

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。


aclrtStreamStop

aclError aclrtStreamStop(aclrtStream stream)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

仅停止指定Stream上的正在执行的任务,不清理任务。

参数说明

参数名输入/输出说明
stream输入指定待停止任务的Stream。类型定义请参见aclrtStream。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

约束说明

  • 不支持使用aclmdlRIBindStream接口来绑定模型运行实例的Stream。
  • 不支持默认Stream(即stream参数传入NULL)。



aclrtPersistentTaskClean

aclError aclrtPersistentTaskClean(aclrtStream stream)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

清理ACL_STREAM_PERSISTENT类型的Stream上的任务,适用于在不删除该类型Stream的情况下重新下发任务的场景。

ACL_STREAM_PERSISTENT类型的Stream需调用aclrtCreateStreamWithConfig接口创建。

参数说明

参数名输入/输出说明
stream输入指定Stream。类型定义请参见aclrtStream。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtStreamGetPriority

aclError aclrtStreamGetPriority(aclrtStream stream, uint32_t *priority)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

查询指定Stream的优先级。

参数说明

参数名输入/输出说明
stream输入指定Stream。类型定义请参见aclrtStream。
若此处传入NULL,则获取的是默认Stream的优先级。
priority输出优先级,数字越小代表优先级越高。
关于优先级的取值范围请参见aclrtCreateStreamWithConfig接口中的priority参数说明。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。




aclrtStreamGetFlags

aclError aclrtStreamGetFlags(aclrtStream stream, uint32_t *flags)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:支持
  • Atlas 训练系列产品:支持
  • IPV350:不支持

功能说明

查询创建Stream时设置的flag标志。

参数说明

参数名输入/输出说明
stream输入指定Stream。类型定义请参见aclrtStream。
若此处传入NULL,则获取的是默认Stream的flag。
flags输出指向查询到的flag值的指针。
关于flag值的说明请参见aclrtCreateStreamWithConfig接口中的flag参数说明。若创建Stream时配置了多个flag,返回值为各flag按位或运算后的结果,例如配置了0x01U和0x02U,则返回0x03U;若创建Stream时没有配置flag,则返回0。
对于默认Stream,不同产品型号的flag值可能存在差异,应以本接口查询到的值为准。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError。

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1167900/

相关文章:

  • 解锁WeMod无限游戏时间:3步免费获取专业版完整功能
  • CANN启航营FastGelu算子
  • PDFPatcher终极指南:解锁专业PDF编辑的完整解决方案
  • KASandbox社区生态指南:如何参与贡献与获取技术支持
  • AI绘画面部特写提示词技巧:从基础到高级的完整指南
  • 告别AWCC臃肿:500KB轻量级Alienware灯光与风扇控制终极方案
  • Anthropic三兄弟价格横评:Sonnet 5翻10倍,Fable 5再翻12倍
  • Giga-World-1性能优化技巧:提升视频生成速度与质量的5个方法
  • 2026全国高压套管怎么选?老牌电瓷企业产品靠谱吗
  • STM32F1的串口在线升级方案
  • 告别传统RAG!2026爆火AI Agent智能体实战,极简代码实现自主任务编排
  • 3分钟解决Windows热键冲突:Hotkey Detective让你告别快捷键失效烦恼
  • 腾讯云开源Agent记忆系统:解决AI长期记忆难题的实践指南
  • 2026 北京 24 小时黄金回收店,易奢福为本地测评榜首 - 奢侈品回收实体店
  • Linux/Windows 网络端口占用排查:3个命令定位并释放 8080 端口
  • I2L-MeshNet双阶段训练策略揭秘:Lixel阶段与Param阶段的协同优化
  • Skyline异常检测系统实战指南:从零构建智能监控平台
  • NBM7100A与PIC18F57Q43的低功耗能量管理方案解析
  • 外部访问私有成员
  • 高效自动化iCloud隐私邮箱批量生成完全指南:保护个人信息安全的核心解决方案
  • 音乐AI如何理解非标准乐谱:从符号识别到风格适配的完整指南
  • 深度学习经典数据处理算法:Coreset 数据压缩算法
  • 7个实战项目掌握Jetpack Compose:Android现代UI开发终极指南
  • TypeScriptCompiler异步编程支持:async/await的MLIR方言转换与运行时实现完整指南
  • 一站式音乐聚合方案:LX Music音源聚合配置全指南
  • 浪琴中国区官方售后服务中心|官方网站权威公布(2026年7月最新) - 浪琴中国服务中心
  • ADS131M02与MK64FN1M0VDC12在精密数据采集中的应用
  • I2L-MeshNet部署实战:从研究到生产的完整迁移指南
  • 政企项目AI数据大屏生成工具怎么选信创合规私有化部署指南
  • 如何快速免费下载国家中小学智慧教育平台电子课本:完整PDF获取指南