24. 其他接口
本章节描述 CANN Runtime 的其他辅助接口,包括版本查询、数据类型转换、平台硬件信息查询等。
void aclAppLog(aclLogLevel logLevel, const char *func, const char *file, uint32_t line, const char *fmt, ...):将日志记录到日志文件中。size_t aclDataTypeSize(aclDataType dataType):获取aclDataType数据的大小,单位Byte。float aclFloat16ToFloat(aclFloat16 value):将aclFloat16类型的数据转换为float(指float32)类型的数据。aclFloat16 aclFloatToFloat16(float value):将float(指float32)类型的数据转换为aclFloat16类型的数据。aclError aclrtGetVersion(int32_t *majorVersion, int32_t *minorVersion, int32_t *patchVersion):查询接口版本号,acl接口版本号命名采用:A.B.C模式,其中,A表示有不兼容修改,B表示新增接口,C表示bug修复。(废弃接口,请使用aclsysGetVersionNum接口或者 aclsysGetVersionStr接口)aclError aclsysGetCANNVersion(aclCANNPackageName name, aclCANNPackageVersion *version):查询CANN软件包版本号。aclError aclGetCannAttributeList(const aclCannAttr **cannAttrList, size_t *num):查询运行环境中CANN软件和对应AI处理器支持的特性列表。aclError aclGetCannAttribute(aclCannAttr cannAttr, int32_t *value):查询运行环境是否支持指定的CANN特性。aclError aclGetDeviceCapability(uint32_t deviceId, aclDeviceInfo deviceInfo, int64_t *value):查询运行环境中对应Device的硬件规格大小。aclError aclrtCacheLastTaskOpInfo(const void * const infoPtr, const size_t infoSize):基于捕获方式构建模型运行实例场景下,把指定内存中的算子信息按照infoSize大小缓存到当前线程中最后下发的任务上。aclError aclrtCacheLastTaskExtendInfo(const char* const extendInfoPtr, const size_t infoSize):将指定内存中的自定义扩展信息按照infoSize大小缓存到当前线程中最后下发的任务上。aclError aclrtProfTrace(void *userdata, int32_t length, aclrtStream stream):支持用户在网络指定位置下发自定义的Profiling打点。异步接口。aclError aclsysGetVersionNum(char *pkgName, int32_t *versionNum):根据软件包名称查询版本号,版本号是数值类型,通过计算各包安装目录下version.info文件中的version字段的主、次、补丁等版本信息的权重得出。aclError aclsysGetVersionStr(char *pkgName, char *versionStr):根据软件包名称查询版本号,版本号是字符串类型,与各包安装目录下version.info文件中的version保持一致。aclError aclplatformGetDeviceInfo(aclplatformDevInfo infoType, char *value, uint32_t maxLen):查询对应AI处理器型号的硬件信息。aclError aclplatformGetInstructionInfo(aclplatformCoreType type, const char *instruction, char *value, uint32_t maxLen):根据核类型查询指定指令的相关属性信息。aclError aclrtCreateStreamV2(aclrtStream *stream, const aclrtStreamConfigHandle *handle):创建Stream,支持创建Stream时增加Stream配置。aclError aclrtSetStreamConfigOpt(aclrtStreamConfigHandle *handle, aclrtStreamConfigAttr attr, const void *attrValue, size_t valueSize):设置Stream配置对象中的各属性的取值。aclError aclrtSubscribeHostFunc(uint64_t hostFuncThreadId, aclrtStream exeStream):调用本接口注册处理Stream上回调函数的线程(线程需由用户自行创建)。aclError aclrtProcessHostFunc(int32_t timeout):等待指定时间后,触发回调处理,由aclrtSubscribeHostFunc接口指定的线程处理回调。aclError aclrtUnSubscribeHostFunc(uint64_t hostFuncThreadId, aclrtStream exeStream):与aclrtSubscribeHostFunc接口配合使用,调用模型执行接口后,调用本接口取消线程注册,Stream上的回调函数不再由指定线程处理。
aclAppLog
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:不支持
功能说明
将日志记录到日志文件中。
acl接口还提供了ACL_APP_LOG宏,封装aclAppLog接口,推荐用户调用ACL_APP_LOG宏,传入日志级别、日志描述、fmt中的可变参数。
#define ACL_APP_LOG(level, fmt, ...) \
aclAppLog(level, __FUNCTION__, __FILE__, __LINE__, fmt, ##__VA_ARGS__)
函数原型
void aclAppLog(aclLogLevel logLevel, const char *func, const char *file, uint32_t line, const char *fmt, ...)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| logLevel | 输入 | 日志级别。 typedef enum { ACL_DEBUG = 0, ACL_INFO = 1, ACL_WARNING = 2, ACL_ERROR = 3, } aclLogLevel; |
| func | 输入 | 表示用户在哪个接口中调用aclAppLog接口,固定配置为__FUNCTION__ |
| file | 输入 | 表示用户在哪个文件中调用aclAppLog接口,固定配置为__FILE__ |
| line | 输入 | 表示用户在哪一行中调用aclAppLog接口,固定配置为__LINE__ |
| fmt | 输入 | 日志描述。 在调用格式化函数时,fmt中参数的类型、个数必须与实际参数类型、个数保持一致。 |
| ... | 输入 | fmt中的可变参数,根据日志内容添加。 单条日志最大长度为1024字节,超过则会截断。 |
返回值说明
无
调用示例
// 若fmt中存在可变参数,需提前定义
uint32_t modelId = 1;
ACL_APP_LOG(ACL_INFO, "load model success, modelId is %u", modelId);
aclDataTypeSize
size_t aclDataTypeSize(aclDataType dataType)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:不支持
功能说明
获取aclDataType数据的大小,单位Byte。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| dataType | 输入 | 指定要获取大小的aclDataType数据。类型定义请参见aclDataType。 |
返回值说明
返回aclDataType数据的大小,单位Byte。
aclFloat16ToFloat
float aclFloat16ToFloat(aclFloat16 value)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:不支持
功能说明
将aclFloat16类型的数据转换为float(指float32)类型的数据。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| value | 输入 | 待转换的数据。类型定义请参见aclFloat16。 |
返回值说明
转换后的数据。
aclFloatToFloat16
aclFloat16 aclFloatToFloat16(float value)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:不支持
功能说明
将float(指float32)类型的数据转换为aclFloat16类型的数据。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| value | 输入 | 待转换的数据。 |
返回值说明
转换后的数据。
注意,由于C语言无float16类型,此处返回值使用uint16_t对数据进行存储。若用户需要打印,需自行将uint16_t解释成float16进行打印,或者转成float进行打印。
aclrtGetVersion(废弃)
aclError aclrtGetVersion(int32_t *majorVersion, int32_t *minorVersion, int32_t *patchVersion)
须知:此接口后续版本会废弃,请使用aclsysGetVersionum接口或者aclsysGetVersionStr接口。
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:支持
功能说明
查询接口版本号,acl接口版本号命名采用:A.B.C模式,其中,A表示有不兼容修改,B表示新增接口,C表示bug修复。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| majorVersion | 输出 | 主版本号的指针,从1开始,如果出现接口的不兼容变更时,加1。 |
| minorVersion | 输出 | 次版本号的指针,从0开始,按照迭代周期,有新增接口时加1。 |
| patchVersion | 输出 | 补丁版本号的指针,从0开始,表示本版本仅解决了问题。 在majorVersion、minorVersion不变的情况下加1;但majorVersion、minorVersion增加的时候,patchVersion一般为0。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclsysGetCANNVersion(废弃)
aclError aclsysGetCANNVersion(aclCANNPackageName name, aclCANNPackageVersion *version)
须知:此接口后续版本会废弃,请使用aclsysGetVersionStr、aclsysGetVersionNum接口。
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:支持
功能说明
查询CANN软件包版本号。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| name | 输入 | 指定要查询的软件包。类型定义请参见aclCANNPackageName。 若指定要查询的软件包没有安装,则本接口返回报错。 |
| version | 输出 | CANN软件包版本号。类型定义请参见aclCANNPackageVersion。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclGetCannAttributeList
aclError aclGetCannAttributeList(const aclCannAttr **cannAttrList, size_t *num)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:支持
功能说明
查询运行环境中CANN软件和对应AI处理器支持的特性列表。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| cannAttrList | 输出 | 用于保存运行环境支持的特性枚举数组。类型定义请参见aclCannAttr。 用户无需提前申请内存,应用进程退出时,内存自动释放。 |
| num | 输出 | 用于保存支持的特性数量,与cannAttrList数组长度保持一致。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclGetCannAttribute
aclError aclGetCannAttribute(aclCannAttr cannAttr, int32_t *value)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:支持
功能说明
查询运行环境是否支持指定的CANN特性。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| cannAttr | 输入 | 特性列表枚举值,一次查询可指定其中一项。类型定义请参见aclCannAttr。 |
| value | 输出 | 是否支持: - 1:支持 - 0:不支持 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclGetDeviceCapability
aclError aclGetDeviceCapability(uint32_t deviceId, aclDeviceInfo deviceInfo, int64_t *value)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:支持
功能说明
查询运行环境中对应Device的硬件规格大小。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| deviceId | 输入 | Device ID。 用户调用aclrtGetDeviceCount接口获取可用的Device数量后,这个Device ID的取值范围:[0, (可用的Device数量-1)] |
| deviceInfo | 输入 | 指定Device上的硬件规格类型。类型定义请参见aclDeviceInfo。 |
| value | 输出 | 硬件规格值。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclrtCacheLastTaskOpInfo
aclError aclrtCacheLastTaskOpInfo(const void * const infoPtr, const size_t infoSize)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:不支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:不支持
- IPV350:不支持
功能说明
基于捕获方式构建模型运行实例场景下,把指定内存中的算子信息按照infoSize大小缓存到当前线程中最后下发的任务上。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| infoPtr | 输入 | 缓存信息内存地址指针,此处是Host内存 |
| infoSize | 输入 | 缓存信息内存大小,取值范围:(0, 64K],单位Byte。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
接口调用流程
本接口需与以下其它关键接口配合使用,以便控制后续采集性能数据时附带算子信息:
-
调用aclmdlRICaptureBegin接口开始捕获任务。
-
调用aclrtSetStreamAttribute接口开启算子信息缓存开关。
-
下发算子执行任务,例如调用aclrtLaunchKernelWithConfig接口。
-
调用aclrtGetStreamAttribute接口获取算子信息缓存开关是否开启。
只有在捕获状态下,且通过aclrtSetStreamAttribute接口开启了算子信息缓存开关,此处的aclrtGetStreamAttribute接口才能获取到算子信息缓存开关已开启的状态,后续才可以缓存算子信息。
-
调用aclrtCacheLastTaskOpInfo接口缓存算子信息。
-
再次调用aclrtSetStreamAttribute接口关闭算子信息缓存开关。
-
调用aclmdlRICaptureEnd接口结束任务捕获。
-
开启采集性能数据(参见Profiling数据采集接口章节下的接口)后,调用aclmdlRIExecuteAsync接口执行推理。
在此过程中,采集的性能数据会附带算子信息。
-
最后,调用aclmdlRIDestroy接口销毁模型运行实例时,算子缓存信息也会被一并释放。
aclrtCacheLastTaskExtendInfo
aclError aclrtCacheLastTaskExtendInfo(const char* const extendInfoPtr, const size_t infoSize)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:不支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:不支持
- IPV350:不支持
功能说明
将指定内存中的自定义扩展信息按照infoSize大小缓存到当前线程中最后下发的任务上。后续可以通过调用aclmdlRIDebugJsonPrint接口将自定义扩展信息以JSON格式导出到文件中,然后,通过tracing方式(例如chrome://tracing/)查看。 当前仅支持在捕获模型(请参见aclmdlRICaptureBegin接口)或构建模型运行实例(请参见aclmdlRIBuildBegin接口)的场景下使用。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| extendInfoPtr | 输入 | 指向自定义扩展信息内存地址的指针,此处是Host内存。extendInfoPtr指向的内存中的内容应为使用UTF-8编码的JSON格式字符串。非UTF-8编码的JSON格式字符串在后续调用aclmdlRIDebugJsonPrint接口时可能导致未定义的行为。 |
| infoSize | 输入 | 自定义扩展信息内存大小,单位Byte。取值范围:(0, 4K],当infoSize大于4K时,仅缓存前4K字节。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclrtProfTrace
aclError aclrtProfTrace(void *userdata, int32_t length, aclrtStream stream)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:不支持
功能说明
支持用户在网络指定位置下发自定义的Profiling打点。异步接口。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| userdata | 输入 | 自定义信息。 |
| length | 输入 | userdata的长度,单位Byte。 length建议配置为18字节;如果未满18字节,将会自动在数据末尾补0到18字节;如果超过18字节,接口会校验报错返回。 |
| stream | 输入 | 指定执行打点任务的Stream。类型定义请参见aclrtStream。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclsysGetVersionNum
aclError aclsysGetVersionNum(char *pkgName, int32_t *versionNum)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:不支持
功能说明
根据软件包名称查询版本号,版本号是数值类型,通过计算各包安装目录下version.info文件中的version字段的主、次、补丁等版本信息的权重得出。
获取数值类型的版本号并进行比较,数值较大的表示版本发布时间较新,可用于了解版本发布的先后顺序,以及在代码中根据版本区分不同的接口调用逻辑等。
当前发布的版本包括alpha内部测试版、beta公开测试版和rc(Release Candidate)候选发布版、release版本。对于同一基础版本号,其版本号数值按以下顺序递增:alpha版本 < beta版本 < rc版本 < 商用版本。例如:9.0.0-alpha.1 < 9.0.0-alpha.2 < 9.0.0-beta.1 < 9.0.0-beta.2 < 9.0.0-rc.1 < 9.0.0-rc.2 < 9.0.0 < 9.0.1。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| pkgName | 输入 | 软件包名称。 CANN包名称与${INSTALL_DIR}/share/info下的目录名称保持一致。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。 驱动包名称为driver。 固件包名称为firmware。 |
| versionNum | 输出 | 数值类型的版本号。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclsysGetVersionStr
aclError aclsysGetVersionStr(char *pkgName, char *versionStr)
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:不支持
功能说明
根据软件包名称查询版本号,版本号是字符串类型,与各包安装目录下version.info文件中的version保持一致。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| pkgName | 输入 | 软件包名称。 CANN包名称与${INSTALL_DIR}/share/info下的目录名称保持一致。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。 驱动包名称为driver。 固件包名称为firmware。 |
| versionStr | 输出 | 版本号。 建议用户声明一个长度为ACL_PKG_VERSION_MAX_SIZE的字符数组,用于存放版本号。例如:char versionStr[ACL_PKG_VERSION_MAX_SIZE] = {0}; ACL_PKG_VERSION_MAX_SIZE宏的定义如下: #define ACL_PKG_VERSION_MAX_SIZE 128 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclplatformGetDeviceInfo
aclError aclplatformGetDeviceInfo(aclplatformDevInfo infoType, char *value, uint32_t maxLen);
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:不支持
功能说明
查询对应AI处理器型号的硬件信息。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| infoType | 输入 | 要查询的设备硬件信息类型。类型定义请参见aclplatformDevInfo。 |
| value | 输出 | 用于接收查询结果的字符缓冲区指针。返回内容以字符串形式给出,数值类信息(如大小、数量、频率)以十进制字符串表示。 |
| maxLen | 输入 | 用户申请的用于存放value的最大内存长度,单位Byte。 若实际结果超出此长度,接口将返回错误。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclplatformGetInstructionInfo
aclError aclplatformGetInstructionInfo(aclplatformCoreType type,
const char *instruction,
char *value,
uint32_t maxLen);
产品支持情况
- Ascend 950PR/Ascend 950DT:支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
- Atlas 200I/500 A2 推理产品:支持
- Atlas 推理系列产品:支持
- Atlas 训练系列产品:支持
- IPV350:不支持
功能说明
根据指定的核类型,查询某条指令的相关属性信息。
该接口适用于查询当前NPU架构对特定指令的支持情况,以便应用程序根据查询结果选择合适的算法路径或特性开关。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| type | 输入 | 要查询的核类型。类型定义请参见aclplatformCoreType。 |
| instruction | 输入 | 要查询的指令名称字符串,如"Intrinsic_vexp"、"Intrinsic_vln"。 指令集可以参考对应AI处理器的配置文件,在${INSTALL_DIR}/{arch-os}/data/platform_config/目录下。 ${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。 {arch-os}中arch表示操作系统架构,os表示操作系统。 |
| value | 输出 | 用于接收查询结果的字符缓冲区指针。返回内容以字符串形式给出。 |
| maxLen | 输入 | 用户申请的用于存放value的最大内存长度,单位Byte。 若实际结果超出此长度,接口将返回错误。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclrtCreateStreamV2
aclError aclrtCreateStreamV2(aclrtStream *stream, const aclrtStreamConfigHandle *handle)
产品支持情况
- Ascend 950PR/Ascend 950DT:不支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
- Atlas 200I/500 A2 推理产品:不支持
- Atlas 推理系列产品:不支持
- Atlas 训练系列产品:不支持
- IPV350:支持
功能说明
创建Stream,支持创建Stream时增加Stream配置。
本接口需要配合其它接口一起使用,创建Stream,接口调用顺序如下:
- 调用aclrtCreateStreamConfigHandle接口创建Stream配置对象。
- 多次调用aclrtSetStreamConfigOpt接口设置配置对象中每个属性的值。
- 调用aclrtCreateStreamV2接口创建Stream。
- Stream使用完成后,调用aclrtDestroyStreamConfigHandle接口销毁Stream配置对象,调用aclrtDestroyStream接口销毁Stream。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| stream | 输出 | Stream的指针。类型定义请参见aclrtStream。 |
| handle | 输入 | Stream配置对象的指针。类型定义请参见aclrtStreamConfigHandle。 与aclrtSetStreamConfigOpt中的handle保持一致。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclrtSetStreamConfigOpt
aclError aclrtSetStreamConfigOpt(aclrtStreamConfigHandle *handle, aclrtStreamConfigAttr attr, const void *attrValue, size_t valueSize)
产品支持情况
- Ascend 950PR/Ascend 950DT:不支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
- Atlas 200I/500 A2 推理产品:不支持
- Atlas 推理系列产品:不支持
- Atlas 训练系列产品:不支持
- IPV350:支持
功能说明
设置Stream配置对象中的各属性的取值。
本接口需要配合其它接口一起使用,创建Stream,接口调用顺序如下:
- 调用aclrtCreateStreamConfigHandle接口创建Stream配置对象。
- 多次调用aclrtSetStreamConfigOpt接口设置配置对象中每个属性的值。
- 调用aclrtCreateStreamV2接口创建Stream。
- Stream使用完成后,调用aclrtDestroyStreamConfigHandle接口销毁Stream配置对象,调用aclrtDestroyStream接口销毁Stream。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| handle | 输出 | Stream配置对象的指针。类型定义请参见aclrtStreamConfigHandle。 需提前调用aclrtCreateStreamConfigHandle接口创建该对象。 |
| attr | 输入 | 指定需设置的属性。类型定义请参见aclrtStreamConfigAttr。 |
| attrValue | 输入 | 指向属性值的指针,attr对应的属性取值。 如果属性值本身是指针,则传入该指针的地址。 |
| valueSize | 输入 | attrValue部分的数据长度。 用户可使用C/C++标准库的函数sizeof(*attrValue)查询数据长度。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclrtSubscribeHostFunc
aclError aclrtSubscribeHostFunc(uint64_t hostFuncThreadId, aclrtStream exeStream)
产品支持情况
- Ascend 950PR/Ascend 950DT:不支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
- Atlas 200I/500 A2 推理产品:不支持
- Atlas 推理系列产品:不支持
- Atlas 训练系列产品:不支持
- IPV350:支持
功能说明
调用本接口注册处理Stream上回调函数的线程(线程需由用户自行创建)。
**使用场景:**模型中有CPU算子、且调用aclmdlExecuteV2或aclmdlExecuteAsyncV2接口执行模型推理时,由于IPV350上的内存限制,无法支撑CPU算子的调度框架,因此需配合aclrtSubscribeHostFunc、aclrtProcessHostFunc、aclrtUnSubscribeHostFunc接口完成CPU算子调度,完成模型推理。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| hostFuncThreadId | 输入 | 指定线程的ID。 |
| exeStream | 输入 | 指定Stream。类型定义请参见aclrtStream。 不支持传NULL,否则返回报错。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
约束说明
- 支持多次调用aclrtSubscribeHostFunc接口给多个Stream(仅支持同一Device内的多个Stream)注册同一个处理回调函数的线程。
- 为确保Stream内的任务按调用顺序执行,不支持调用aclrtSubscribeHostFunc接口给同一个Stream注册多个处理回调函数的线程。
aclrtProcessHostFunc
aclError aclrtProcessHostFunc(int32_t timeout)
产品支持情况
- Ascend 950PR/Ascend 950DT:不支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
- Atlas 200I/500 A2 推理产品:不支持
- Atlas 推理系列产品:不支持
- Atlas 训练系列产品:不支持
- IPV350:支持
功能说明
等待指定时间后,触发回调处理,由aclrtSubscribeHostFunc接口指定的线程处理回调。
线程需由用户提前自行创建,并自定义线程函数,在线程函数内调用本接口,等待指定时间后通过系统内部进行算子计算。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| timeout | 输入 | 超时时间,单位为ms。 取值范围: - -1:表示无限等待 - 大于0(不包含0):表示等待的时间 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。
aclrtUnSubscribeHostFunc
aclError aclrtUnSubscribeHostFunc(uint64_t hostFuncThreadId, aclrtStream exeStream)
产品支持情况
- Ascend 950PR/Ascend 950DT:不支持
- Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
- Atlas 200I/500 A2 推理产品:不支持
- Atlas 推理系列产品:不支持
- Atlas 训练系列产品:不支持
- IPV350:支持
功能说明
与aclrtSubscribeHostFunc接口配合使用,调用模型执行接口后,调用本接口取消线程注册,Stream上的回调函数不再由指定线程处理。
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| hostFuncThreadId | 输入 | 指定线程的ID。 |
| exeStream | 输入 | 指定Stream。类型定义请参见aclrtStream。 不支持传NULL,否则返回报错。 |
返回值说明
返回0表示成功,返回其他值表示失败,请参见aclError。