24. 其他接口

本章节描述 CANN Runtime 的其他辅助接口,包括版本查询、数据类型转换、平台硬件信息查询等。

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)

须知:此接口后续版本会废弃,请使用aclsysGetVersionStraclsysGetVersionNum接口。

产品支持情况

  • 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

接口调用流程

本接口需与以下其它关键接口配合使用,以便控制后续采集性能数据时附带算子信息:

  1. 调用aclmdlRICaptureBegin接口开始捕获任务。

  2. 调用aclrtSetStreamAttribute接口开启算子信息缓存开关。

  3. 下发算子执行任务,例如调用aclrtLaunchKernelWithConfig接口。

  4. 调用aclrtGetStreamAttribute接口获取算子信息缓存开关是否开启。

    只有在捕获状态下,且通过aclrtSetStreamAttribute接口开启了算子信息缓存开关,此处的aclrtGetStreamAttribute接口才能获取到算子信息缓存开关已开启的状态,后续才可以缓存算子信息。

  5. 调用aclrtCacheLastTaskOpInfo接口缓存算子信息。

  6. 再次调用aclrtSetStreamAttribute接口关闭算子信息缓存开关。

  7. 调用aclmdlRICaptureEnd接口结束任务捕获。

  8. 开启采集性能数据(参见Profiling数据采集接口章节下的接口)后,调用aclmdlRIExecuteAsync接口执行推理。

    在此过程中,采集的性能数据会附带算子信息。

  9. 最后,调用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包名称与&#36;{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包名称与&#36;{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,接口调用顺序如下:

  1. 调用aclrtCreateStreamConfigHandle接口创建Stream配置对象。
  2. 多次调用aclrtSetStreamConfigOpt接口设置配置对象中每个属性的值。
  3. 调用aclrtCreateStreamV2接口创建Stream。
  4. 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,接口调用顺序如下:

  1. 调用aclrtCreateStreamConfigHandle接口创建Stream配置对象。
  2. 多次调用aclrtSetStreamConfigOpt接口设置配置对象中每个属性的值。
  3. 调用aclrtCreateStreamV2接口创建Stream。
  4. 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、aclrtProcessHostFuncaclrtUnSubscribeHostFunc接口完成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