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 0x00000001UACL_STREAM_FAST_SYNC:使用该flag创建出来的Stream,在调用aclrtSynchronizeStream接口时,会阻塞当前线程,主动查询任务的执行状态,一旦任务完成,立即返回。
相比aclrtCreateStream接口创建出来的Stream,在调用aclrtSynchronizeStream接口时,会一直被动等待Device上任务执行完成的通知,等待时间长,使用本接口的ACL_STREAM_FAST_SYNC模式创建的Stream,没有被动等待,总时长缩短,但主动查询的操作会增加CPU的性能消耗。
宏定义:
#define ACL_STREAM_FAST_SYNC 0x00000002UACL_STREAM_PERSISTENT:使用该flag创建出来的Stream,在该Stream上下发的任务不会立即执行、任务执行完成后也不会立即销毁,在销毁Stream时才会销毁任务相关的资源。该方式下创建的Stream用于与模型绑定,适用于模型构建场景,模型构建相关接口的说明请参见aclmdlRIBindStream。
宏定义:
#define ACL_STREAM_PERSISTENT 0x00000004UACL_STREAM_HUGE:相比其他flag,使用该flag创建出来的Stream所能容纳的Task最大数量更大。
当前版本设置该flag不生效。
宏定义:
#define ACL_STREAM_HUGE 0x00000008UACL_STREAM_CPU_SCHEDULE:使用该flag创建出来的Stream用于队列方式模型推理场景下承载AI CPU调度的相关任务。预留功能。
宏定义:
#define ACL_STREAM_CPU_SCHEDULE 0x00000010UACL_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),仅供参考
