
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标志。aclrtCreateStreamaclError 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个StreamN 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减少不必要的Stream2调整代码逻辑分批创建Stream例如第一批创建部分Stream然后第二批再创建部分Stream以此类推直到Stream总数接近2048。aclrtCreateStreamWithConfigaclError 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_ONLYAscend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品Atlas 推理系列产品返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtDestroyStreamaclError 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。aclrtDestroyStreamForceaclError 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下。aclrtSetStreamOverflowSwitchaclError 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。约束说明调用该接口打开或关闭溢出检测开关后仅对后续新下发的任务生效已下发的任务仍维持原样。aclrtGetStreamOverflowSwitchaclError 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。aclrtSetStreamFailureModeaclError 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。aclrtStreamQueryaclError 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。aclrtSynchronizeStreamaclError 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。aclrtSynchronizeStreamWithTimeoutaclError 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。aclrtStreamAbortaclError 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。aclrtStreamGetIdaclError 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。aclrtSetStreamAttributeaclError 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。aclrtGetStreamAttributeaclError 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。aclrtActiveStreamaclError 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。aclrtSwitchStreamaclError 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。aclrtRegStreamStateCallbackaclError 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。aclrtStreamStopaclError 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。aclrtPersistentTaskCleanaclError 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。aclrtStreamGetPriorityaclError 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。aclrtStreamGetFlagsaclError 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),仅供参考