Structs
struct 类型数据。
- aclCANNPackageVersion
- aclmdlRICondTaskParams
- aclmdlRIEventRecordTaskParams
- aclmdlRIEventResetTaskParams
- aclmdlRIEventWaitTaskParams
- aclmdlRIKernelTaskParams
- aclmdlRITaskParams
- aclmdlRIValueWaitTaskParams
- aclmdlRIValueWriteTaskParams
- aclrtAicAivTaskUpdateAttr
- aclrtBarrierCmoInfo
- aclrtBarrierTaskInfo
- aclrtBinaryLoadOption
- aclrtBinaryLoadOptions
- aclrtBinaryLoadOptionValue
- aclrtCntNotifyRecordInfo
- aclrtCntNotifyWaitInfo
- aclrtDropoutBitmaskInfo
- aclrtIpcEventHandle
- aclrtLaunchKernelAttr
- aclrtLaunchKernelCfg
- aclrtMallocAttribute
- aclrtMallocConfig
- aclrtMemAccessDesc
- aclrtMemcpyBatchAttr
- aclrtMemLocation
- aclrtMemManagedLocation
- aclrtMemPoolProps
- aclrtMemUceInfo
- aclrtMemUsageInfo
- aclrtNormalDisInfo
- aclrtPhysicalMemProp
- aclrtPtrAttributes
- aclrtRandomNumFuncParaInfo
- aclrtRandomNumTaskInfo
- aclrtRandomParaInfo
- aclrtRandomTaskUpdateAttr
- aclrtServerPid
- aclrtSnapShotBackupArgs
- aclrtSnapShotRestoreArgs
- aclrtStreamAttrValue
- aclrtTaskUpdateInfo
- aclrtTimeoutUs
- aclrtUniformDisInfo
- aclrtUtilizationInfo
- aclrtUuid
aclCANNPackageVersion
#define ACL_PKG_VERSION_MAX_SIZE 128
#define ACL_PKG_VERSION_PARTS_MAX_SIZE 64
typedef struct aclCANNPackageVersion {
char version[ACL_PKG_VERSION_MAX_SIZE]; // 完整版本号
char majorVersion[ACL_PKG_VERSION_PARTS_MAX_SIZE]; // 主版本号
char minorVersion[ACL_PKG_VERSION_PARTS_MAX_SIZE]; // 次版本号
char releaseVersion[ACL_PKG_VERSION_PARTS_MAX_SIZE]; // 发布号,如果查询不到,就补0
char patchVersion[ACL_PKG_VERSION_PARTS_MAX_SIZE]; // 补丁版本号,如果查询不到,就补0
char reserved[ACL_PKG_VERSION_MAX_SIZE];
} aclCANNPackageVersion;
aclmdlRICondTaskParams
typedef struct tagAclmdlRICondTaskParams {
aclmdlRICondHandle handle;
aclmdlRICondTaskType type;
uint32_t size;
aclmdlRI *modelRIArray;
} aclmdlRICondTaskParams;
| 成员名 | 说明 |
|---|---|
| handle | 条件句柄。类型定义请参见aclmdlRICondHandle。 |
| type | 条件类型。类型定义请参见aclmdlRICondTaskType。 |
| size | 分支数量。IF条件取1或2,WHILE条件取1,SWITCH条件取大于0的值。 |
| modelRIArray | 子图模型运行实例数组。类型定义请参见aclmdlRI。 |
aclmdlRIEventRecordTaskParams
typedef struct aclmdlRIEventRecordTaskParams {
aclrtEvent event;
uint32_t eventFlag;
uint32_t recordFlag;
} aclmdlRIEventRecordTaskParams;
| 成员名称 | 描述 |
|---|---|
| event | 指定Event。类型定义请参见aclrtEvent。 |
| eventFlag | Event flag。请参见aclrtCreateEventWithFlag或aclrtCreateEventExWithFlag中的flag说明。 |
| recordFlag | 指定记录动作的行为。 recordFlag取值如下:当recordFlag为ACL_EVENT_RECORD_DEFAULT时,表示默认行为,适用于普通场景,等价于aclrtRecordEvent接口。当recordFlag为ACL_EVENT_RECORD_EXTERNAL时,仅适用于图捕获场景,当用户正在把Stream上的任务捕获成计算图时,带上这个flag,本次记录的事件对外部可见,用于实现图和外部Stream之间做同步、以及实现图和图之间做同步。非图捕获场景下,flag为ACL_EVENT_RECORD_EXTERNAL时,返回报错。 |
aclmdlRIEventResetTaskParams
typedef struct aclmdlRIEventResetTaskParams {
aclrtEvent event;
uint32_t eventFlag;
uint32_t resetFlag;
} aclmdlRIEventResetTaskParams;
| 成员名称 | 描述 |
|---|---|
| event | 指定Event。类型定义请参见aclrtEvent。 |
| eventFlag | Event flag。请参见aclrtCreateEventExWithFlag中的flag说明。 |
| resetFlag | 预留参数,默认值为0。 |
aclmdlRIEventWaitTaskParams
typedef struct aclmdlRIEventWaitTaskParams {
aclrtEvent event;
uint32_t eventFlag;
uint32_t waitFlag;
} aclmdlRIEventWaitTaskParams;
| 成员名称 | 描述 |
|---|---|
| event | 指定Event。类型定义请参见aclrtEvent。 |
| eventFlag | Event flag。请参见aclrtCreateEventExWithFlag中的flag说明。 |
| waitFlag | 指定等待动作的行为。waitFlag取值如下:当waitFlag为ACL_EVENT_WAIT_DEFAULT时,表示默认标记,适用于普通场景,等价于aclrtStreamWaitEventWithTimeout接口。当waitFlag为ACL_EVENT_WAIT_EXTERNAL时,图捕获场景专用,当用户正在把Stream上的任务捕获成计算图时,带上这个flag,表示本次等待一个图之外的事件,用于实现图和外部Stream之间做同步、以及实现图和图之间做同步。 |
aclmdlRIKernelTaskParams
typedef struct aclmdlRIKernelTaskParams {
aclrtFuncHandle funcHandle;
aclrtLaunchKernelCfg* cfg;
void* args;
uint32_t isHostArgs;
size_t argsSize;
uint32_t numBlocks;
uint32_t rsv[10];
} aclmdlRIKernelTaskParams;
| 成员名称 | 描述 |
|---|---|
| funcHandle | 核函数句柄。类型定义请参见aclrtFuncHandle。 |
| cfg | 下发算子任务的配置信息。类型定义请参见aclrtLaunchKernelCfg。 |
| args | 存放核函数所有入参数据的地址指针。 |
| isHostArgs | 标识args的内存属性。该参数在查询接口中固定为0。 取值如下: - 0:Device内存。 - 1:Host内存。 |
| argsSize | args参数处的内存大小,单位Byte。 |
| numBlocks | 指定核函数将会在几个核上执行。 |
| rsv | 预留参数。 |
aclmdlRITaskParams
typedef struct aclmdlRITaskParams {
aclmdlRITaskType type;
uint32_t rsv0[3];
aclrtTaskGrp taskGrp;
void* opInfoPtr;
size_t opInfoSize;
uint8_t rsv1[32];
union {
uint8_t rsv2[128];
struct aclmdlRIKernelTaskParams kernelTaskParams;
struct aclmdlRIEventRecordTaskParams eventRecordTaskParams;
struct aclmdlRIEventWaitTaskParams eventWaitTaskParams;
struct aclmdlRIEventResetTaskParams eventResetTaskParams;
struct aclmdlRIValueWriteTaskParams valueWriteTaskParams;
struct aclmdlRIValueWaitTaskParams valueWaitTaskParams;
};
} aclmdlRITaskParams;
| 成员名称 | 描述 |
|---|---|
| type | 任务类型。类型定义请参见aclmdlRITaskType。 |
| rsv0 | 预留参数。 |
| taskGrp | 标识任务组的句柄。类型定义请参见aclrtTaskGrp。 该参数作为查询接口的输出,设置接口无需关注。 |
| opInfoPtr | 算子Shape信息的地址指针。 |
| rsv1 | 预留参数。 |
| rsv2 | 预留参数。 |
| kernelTaskParams | 算子任务的参数。类型定义请参见aclmdlRIKernelTaskParams。 |
| eventRecordTaskParams | Event Record任务(通常对应aclrtRecordEvent接口下发的任务)的参数。类型定义请参见aclmdlRIEventRecordTaskParams。 该参数作为查询接口的输出,设置接口无需关注。 |
| eventWaitTaskParams | Event Wait任务(通常对应aclrtStreamWaitEvent或aclrtStreamWaitEventWithTimeout接口下发的任务)的参数。类型定义请参见aclmdlRIEventWaitTaskParams。 该参数作为查询接口的输出,设置接口无需关注。 |
| eventResetTaskParams | Event Reset任务(通常对应aclrtResetEvent接口下发的任务)的参数。类型定义请参见aclmdlRIEventResetTaskParams。 该参数作为查询接口的输出,设置接口无需关注。 |
| valueWriteTaskParams | Value Write任务(通常对应aclrtValueWrite接口下发的任务)的参数。类型定义请参见aclmdlRIValueWriteTaskParams。 |
| valueWaitTaskParams | Value Wait任务(通常对应aclrtValueWait接口下发的任务)的参数。类型定义请参见aclmdlRIValueWaitTaskParams。 |
aclmdlRIValueWaitTaskParams
typedef struct aclmdlRIValueWaitTaskParams {
void *devAddr;
uint64_t value;
uint32_t flag;
} aclmdlRIValueWaitTaskParams;
| 成员名称 | 描述 |
|---|---|
| devAddr | Device侧内存地址。 devAddr的有效内存位宽为64bit。 |
| value | 需与内存中的数据作比较的值。 |
| flag | 比较的方式,等满足条件后解除阻塞。取值请参见aclrtValueWait中的说明。 |
aclmdlRIValueWriteTaskParams
typedef struct aclmdlRIValueWriteTaskParams {
void *devAddr;
uint64_t value;
} aclmdlRIValueWriteTaskParams;
| 成员名称 | 描述 |
|---|---|
| devAddr | Device侧内存地址。 此处需用户提前申请Device内存(例如调用aclrtMalloc接口),devAddr要求8字节对齐,有效内存位宽为64bit。 |
| value | 需向内存中写入的数据。 |
aclrtAicAivTaskUpdateAttr
typedef struct {
void *binHandle;
void *funcEntryAddr;
void *blockDimAddr;
uint32_t rsv[4];
} aclrtAicAivTaskUpdateAttr;
| 成员名称 | 说明 |
|---|---|
| binHandle | 存放待刷新的算子二进制句柄,可调用aclrtBinaryLoadFromFile或aclrtBinaryLoadFromData接口获取算子二进制句柄。 |
| funcEntryAddr | 存放Function Entry(用于标识函数的关键字)的Device内存地址。 |
| blockDimAddr | 存放numBlocks(用于指定核函数将会在几个核上执行)的Device内存地址 |
| rsv | 预留参数。当前固定配置为0。 |
aclrtBarrierCmoInfo
typedef struct {
aclrtCmoType cmoType;
uint32_t barrierId;
} aclrtBarrierCmoInfo;
| 成员名称 | 说明 |
|---|---|
| cmoType | Cache内存操作类型。类型定义请参见aclrtCmoType。 |
| barrierId | 屏障标识。 |
aclrtBarrierTaskInfo
typedef struct {
size_t barrierNum;
aclrtBarrierCmoInfo cmoInfo[ACL_RT_CMO_MAX_BARRIER_NUM];
} aclrtBarrierTaskInfo;
| 成员名称 | 说明 |
|---|---|
| barrierNum | cmoInfo数组的长度。 |
| cmoInfo | Cache内存操作的任务信息。类型定义请参见aclrtBarrierCmoInfo。 #define ACL_RT_CMO_MAX_BARRIER_NUM 6U |
aclrtBinaryLoadOption
typedef struct {
aclrtBinaryLoadOptionType type;
aclrtBinaryLoadOptionValue value;
} aclrtBinaryLoadOption;
加载算子二进制文件时,每个参数是由参数类型aclrtBinaryLoadOption.type及其对应的参数值aclrtBinaryLoadOption.value组成,例如,aclrtBinaryLoadOption.type为ACL_RT_BINARY_LOAD_OPT_LAZY_LOAD时,aclrtBinaryLoadOption.value需根据isLazyLoad的取值来配置。
aclrtBinaryLoadOption.type的定义请参见aclrtBinaryLoadOptionType。
aclrtBinaryLoadOption.value的定义请参见aclrtBinaryLoadOptionValue。
aclrtBinaryLoadOptions
typedef struct aclrtBinaryLoadOptions {
aclrtBinaryLoadOption *options;
size_t numOpt;
} aclrtBinaryLoadOptions;
options结构体的定义请参见aclrtBinaryLoadOption。
aclrtBinaryLoadOptionValue
typedef union aclrtBinaryLoadOptionValue {
uint32_t isLazyLoad;
uint32_t magic;
int32_t cpuKernelMode;
uint32_t rsv[4];
} aclrtBinaryLoadOptionValue;
| 成员名称 | 描述 |
|---|---|
| isLazyLoad | 指定解析算子二进制、注册算子后,是否加载算子到Device侧。 取值如下: - 1:调用本接口时不加载算子到Device侧。 - 0:调用本接口时加载算子到Device侧。如果不指定ACL_RT_BINARY_LOAD_OPT_LAZY_LOAD选项,系统默认按此值处理。 |
| magic | 标识算子计算单元的魔术数字。 取值为如下宏: - ACL_RT_BINARY_MAGIC_ELF_AICORE - ACL_RT_BINARY_MAGIC_ELF_VECTOR_CORE - ACL_RT_BINARY_MAGIC_ELF_CUBE_CORE 宏的定义如下: #define ACL_RT_BINARY_MAGIC_ELF_AICORE 0x43554245U #define ACL_RT_BINARY_MAGIC_ELF_VECTOR_CORE 0x41415246U #define ACL_RT_BINARY_MAGIC_ELF_CUBE_CORE 0x41494343U 关于Core的定义及详细说明,请参见aclrtDevAttr。 |
| cpuKernelMode | AI CPU算子注册模式。 取值如下: - 0:调用aclrtBinaryLoadFromFile接口加载算子时,使用算子信息库文件(.json)注册算子。该场景下,AI CPU算子库文件(.so)已经在调用aclrtSetDevice接口时被加载到Device。适用于加载CANN内置算子。 - 1:调用aclrtBinaryLoadFromFile接口加载算子时,使用算子信息库文件(.json)注册算子。该场景下,aclrtBinaryLoadFromFile接口会查找算子信息库文件同名的AI CPU算子库文件(.so)。适用于加载用户自定义算子。 - 2:调用aclrtBinaryLoadFromData接口加载算子,并配合使用aclrtRegisterCpuFunc接口注册AI CPU算子信息。适用于没有算子信息库文件,也没有算子库文件的场景。 |
| rsv | 预留值。 |
aclrtCntNotifyRecordInfo
typedef struct {
aclrtCntNotifyRecordMode mode; // Record的行为模式
uint32_t value;
} aclrtCntNotifyRecordInfo;
mode枚举值的定义请参见aclrtCntNotifyRecordMode。
aclrtCntNotifyWaitInfo
typedef struct {
aclrtCntNotifyWaitMode mode; // Wait的行为模式
uint32_t value;
uint32_t timeout; // 超时时间,单位是秒,其中,0表示永久等待
uint8_t isClear; // wait解除阻塞后是否CntNotify的计数值自动清空为0,取值:1表示清空,0表示不清空
uint8_t rev[3];
} aclrtCntNotifyWaitInfo;
mode结构体定义请参见aclrtCntNotifyWaitMode。
aclrtDropoutBitmaskInfo
typedef struct {
aclrtRandomParaInfo dropoutRation;
} aclrtDropoutBitmaskInfo;
| 成员名称 | 说明 |
|---|---|
| dropoutRation | 失活比参数。类型定义请参见aclrtRandomParaInfo。 |
aclrtIpcEventHandle
#define ACL_IPC_EVENT_HANDLE_SIZE 64U
typedef struct aclrtIpcEventHandle {
char reserved[ACL_IPC_EVENT_HANDLE_SIZE];
} aclrtIpcEventHandle;
aclrtLaunchKernelAttr
typedef struct aclrtLaunchKernelAttr {
aclrtLaunchKernelAttrId id;
aclrtLaunchKernelAttrValue value;
} aclrtLaunchKernelAttr;
Launch Kernel时,每个属性是由属性标识aclrtLaunchKernelAttr.id及其对应的属性值aclrtLaunchKernelAttr.value组成,例如,aclrtLaunchKernelAttr.id为ACL_RT_LAUNCH_KERNEL_ATTR_SCHEM_MODE时,aclrtLaunchKernelAttr.value需根据schemMode的取值来配置。
aclrtLaunchKernelAttr.id的定义请参见aclrtLaunchKernelAttrId。
aclrtLaunchKernelAttr.value的定义请参见aclrtLaunchKernelAttrValue。
aclrtLaunchKernelAttrValue
typedef union aclrtLaunchKernelAttrValue {
uint8_t schemMode;
uint32_t dynUBufSize;
aclrtEngineType engineType;
uint32_t blockDimOffset;
uint8_t isBlockTaskPrefetch;
uint8_t isDataDump;
uint16_t timeout;
aclrtTimeoutUs timeoutUs;
uint32_t rsv[4];
} aclrtLaunchKernelAttrValue;
成员说明如下:
-
schemMode
表示调度模式。
取值如下:
- 0:普通调度模式,有空闲的核,就启动算子执行。例如,当numBlocks为8时,表示算子核函数将会在8个核上执行,这时如果指定普通调度模式,则表示只要有1个核空闲了,就启动算子执行。
- 1:batch调度模式,必须所有所需的核都空闲了,才启动算子执行。例如,当numBlocks为8时,表示算子核函数将会在8个核上执行,这时如果指定batch调度模式,则表示必须等8个核都空闲了,才启动算子执行。
-
dynUBufSize
用于指定SIMT(Single Instruction Multiple Thread)算子执行时需要的UB(Unified Buffer,统一缓冲区)动态内存大小,单位Byte。纯SIMD算子该参数仅支持设置为0。
可通过aclrtFunctionGetAvailDynUbufPerBlock接口获取dynUBufSize参数的最大值。
仅Ascend 950PR/Ascend 950DT支持该参数。
当前不支持该参数,配置该参数不生效。
-
engineType
表示算子执行引擎。类型定义请参见aclrtEngineType。
仅Atlas 推理系列产品支持该参数。
当前不支持该参数,配置该参数不生效。
-
blockDimOffset
表示numBlocks偏移量。numBlocks用于指定算子的核函数将会在几个核上执行。
仅Atlas 推理系列产品支持该参数。
- 如果numBlocks ≤ AI Core核数,则无需使用Vector Core上计算,可将engineType配置为ACL_RT_ENGINE_TYPE_AIC(表示在AI Core上计算),则此处的blockDimOffset配置为0。
- 如果numBlocks > AI Core核数,则需:
- 在一个Stream上下发任务,将engineType配置为ACL_RT_ENGINE_TYPE_AIC(表示在AI Core上计算),此处的blockDimOffset配置为0。
- 在另一个Stream上下发任务,将engineType配置为ACL_RT_ENGINE_TYPE_AIV(表示在Vector Core上计算),此处的blockDimOffset配置为aicorenumBlocks,aicorenumBlocks的计算公式如下:
- numBlocks ≤ AI Core核数+Vector Core核数时,aicorenumBlocks = AI Core核数
- 否则,aicorenumBlocks = 向上取整 ( numBlocks * ( AI Core核数 ) / ( AI Core核数 + Vector Core核数 ))
当前不支持该参数,配置该参数不生效。
-
isBlockTaskPrefetch
任务下发时,是否阻止硬件预取本任务的信息。取值如下:0,不阻止;1,阻止。
-
isDataDump
表示是否开启Dump。取值如下:0,不开启;1,开启。
-
timeout
表示任务调度器等待任务执行的超时时间。仅适用于执行AI CPU或AI Core算子的场景。
取值如下:
- 0:表示永久等待;
- >0:配置具体的超时时间,单位是秒。
-
timeoutUs
表示任务调度器等待任务执行的超时时间,单位微秒。类型定义请参见aclrtTimeoutUs。
若aclrtTimeoutUs结构体中,timeoutLow和timeoutHigh均被配置为0,则表示永久等待。
对于同一个Launch Kernel任务,不能同时配置timeoutUs和timeout参数,否则返回报错。
-
rsv
预留参数。当前固定配置为0。
aclrtLaunchKernelCfg
typedef struct aclrtLaunchKernelCfg {
aclrtLaunchKernelAttr *attrs;
size_t numAttrs;
} aclrtLaunchKernelCfg;
attrs结构体定义请参见aclrtLaunchKernelAttr。
aclrtMallocAttribute
typedef struct {
aclrtMallocAttrType attr;
aclrtMallocAttrValue value;
} aclrtMallocAttribute;
| 成员名称 | 说明 |
|---|---|
| attr | 属性类型。类型定义请参见aclrtMallocAttrType。 |
| value | 属性值。类型定义请参见aclrtMallocAttrValue。 |
aclrtMallocAttrValue
typedef union {
uint16_t moduleId;
uint32_t deviceId;
uint32_t vaFlag;
uint8_t rsv[8];
} aclrtMallocAttrValue;
| 成员名称 | 说明 |
|---|---|
| moduleId | 模块ID,建议配置为33,表示APP,用于表示该内存是由用户的应用程序申请的,便于维测场景下定位问题。 |
| deviceId | Device ID,若此处配置的Device ID与当前用于计算的Device ID不一致,接口会返回报错,建议不配置该属性值。 |
| vaFlag | 使用aclrtMallocHostWithCfg接口申请Host内存时,是否使用VA(virtual address)一致性功能: - 0:不使用(默认值)。 - 1:使用,申请的Host内存通过aclrtHostRegister接口注册后,返回的devPtr与ptr(表示Host内存地址)一致,Host和Device可以使用相同的VA访问。 仅部分产品型号支持使用VA一致性功能,不支持的型号使用该功能将返回报错。 |
| rsv | 预留参数。当前固定配置为0。 |
注意,仅Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品支持vaFlag。
aclrtMallocConfig
typedef struct {
aclrtMallocAttribute* attrs;
size_t numAttrs;
} aclrtMallocConfig;
| 成员名称 | 说明 |
|---|---|
| attrs | 属性,本参数是数组,可存放多个属性。类型定义请参见aclrtMallocAttribute。 |
| numAttrs | 属性个数。 |
aclrtMemAccessDesc
typedef struct {
aclrtMemAccessFlags flags;
aclrtMemLocation location;
uint8_t rsv[12];
} aclrtMemAccessDesc;
| 成员名称 | 描述 |
|---|---|
| flags | 内存访问保护标志。类型定义请参见aclrtMemAccessFlags。 当前仅支持ACL_RT_MEM_ACCESS_FLAGS_READWRITE,表示地址范围可读可写。 |
| location | 内存所在位置。类型定义请参见aclrtMemLocation。 当前仅支持将aclrtMemLocation.type设置为ACL_MEM_LOCATION_TYPE_HOST或ACL_MEM_LOCATION_TYPE_DEVICE。当aclrtMemLocation.type为ACL_MEM_LOCATION_TYPE_HOST时,aclrtMemLocation.id无效,固定设置为0即可。 |
| rsv | 预留参数,当前固定配置为0。 |
aclrtMemcpyBatchAttr
typedef struct {
aclrtMemLocation dstLoc;
aclrtMemLocation srcLoc;
uint8_t rsv[16];
} aclrtMemcpyBatchAttr;
| 成员名称 | 说明 |
|---|---|
| dstLoc | 目的内存所在位置。类型定义请参见aclrtMemLocation。 |
| srcLoc | 源内存所在位置。类型定义请参见aclrtMemLocation。 |
| rsv | 预留参数,当前固定配置为0。 |
aclrtMemLocation
typedef struct aclrtMemLocation {
uint32_t id; // Device ID或NUMA(Non-Uniform Memory Access) ID
aclrtMemLocationType type; // 内存所在位置
} aclrtMemLocation;
内存所在位置请参见aclrtMemLocationType中的定义。
aclrtMemManagedLocation
typedef struct {
aclrtMemManagedLocationType type; // 内存所在位置
int id; // Device ID或NUMA(Non-Uniform Memory Access) ID
} aclrtMemManagedLocation;
当type为ACL_MEM_LOCATIONTYPE_INVALID、ACL_MEM_LOCATIONTYPE_HOST、ACL_MEM_LOCATIONTYPE_HOST_NUMA_CURRENT时,id无效。
aclrtMemPoolProps
typedef struct {
aclrtMemAllocationType allocType;
aclrtMemHandleType handleType;
aclrtMemLocation location;
size_t maxSize;
unsigned char reserved[32];
} aclrtMemPoolProps;
| 成员名称 | 描述 |
|---|---|
| allocationType | 内存分配类型。类型定义请参见aclrtMemAllocationType。 当前仅支持ACL_MEM_ALLOCATION_TYPE_PINNED,表示锁页内存。 |
| handleType | handle类型。类型定义请参见aclrtMemHandleType。 |
| location | 内存所在位置。类型定义请参见aclrtMemLocation。 type当前仅支持设置为ACL_MEM_LOCATION_TYPE_DEVICE。 |
| maxSize | 内存池大小,单位Byte。 |
| reserved | 保留字段,当前必须为全0字符串。 |
aclrtMemUceInfo
#define MAX_MEM_UCE_INFO_ARRAY_SIZE 128
#define UCE_INFO_RESERVED_SIZE 14
typedef struct aclrtMemUceInfo {
void* addr;
size_t len;
size_t reserved[UCE_INFO_RESERVED_SIZE];
} aclrtMemUceInfo;
| 成员名称 | 描述 |
|---|---|
| addr | 内存UCE的错误虚拟起始地址。 |
| len | 内存大小,单位Byte。 从addr开始的len大小范围内的内存都是异常的。 |
| reserved | 预留参数。 |
aclrtMemUsageInfo
typedef struct aclrtMemUsageInfo {
char name[32]; // 组件名称
uint64_t curMemSize; // 当前占用的内存大小,单位Byte
uint64_t memPeakSize; // 该组件的峰值内存,单位Byte
size_t reserved[8]; // 预留参数
} aclrtMemUsageInfo;
aclrtNormalDisInfo
typedef struct {
aclrtRandomParaInfo mean;
aclrtRandomParaInfo stddev;
} aclrtNormalDisInfo;
| 成员名称 | 说明 |
|---|---|
| mean | 均值参数。类型定义请参见aclrtRandomParaInfo。 |
| stddev | 标准差参数。类型定义请参见aclrtRandomParaInfo。 |
aclrtPhysicalMemProp
typedef struct aclrtPhysicalMemProp {
aclrtMemHandleType handleType;
aclrtMemAllocationType allocationType;
aclrtMemAttr memAttr;
aclrtMemLocation location;
uint64_t reserve;
} aclrtPhysicalMemProp;
| 成员名称 | 描述 |
|---|---|
| handleType | handle类型。类型定义请参见aclrtMemHandleType。 当前仅支持ACL_MEM_HANDLE_TYPE_NONE 。 |
| allocationType | 内存分配类型。类型定义请参见aclrtMemAllocationType。 当前仅支持ACL_MEM_ALLOCATION_TYPE_PINNED,表示锁页内存。 |
| memAttr | 内存属性。类型定义请参见aclrtMemAttr。 |
| location | 内存所在位置。类型定义请参见aclrtMemLocation。 当type为ACL_MEM_LOCATION_TYPE_HOST时,id无效,固定设置为0即可。 |
| reserve | 预留。 |
aclrtPtrAttributes
typedef struct aclrtPtrAttributes {
aclrtMemLocation location;
uint32_t pageSize;
uint32_t rsv[4];
} aclrtPtrAttributes;
| 成员名称 | 说明 |
|---|---|
| location | 内存所在位置。类型定义请参见aclrtMemLocation。 当type为ACL_MEM_LOCATION_TYPE_HOST时,id无效。 |
| pageSize | 页表大小,单位Byte。 |
| rsv | 预留参数。当前固定配置为0。 |
aclrtRandomNumFuncParaInfo
typedef struct {
aclrtRandomNumFuncType funcType;
union {
aclrtDropoutBitmaskInfo dropoutBitmaskInfo;
aclrtUniformDisInfo uniformDisInfo;
aclrtNormalDisInfo normalDisInfo;
} paramInfo;
} aclrtRandomNumFuncParaInfo;
| 成员名称 | 说明 |
|---|---|
| funcType | 函数类别。类型定义请参见aclrtRandomNumFuncType。 |
| dropoutBitmaskInfo | Dropout bitmask信息。类型定义请参见aclrtDropoutBitmaskInfo。 |
| uniformDisInfo | 均匀分布信息。类型定义请参见aclrtUniformDisInfo。 |
| normalDisInfo | 正态分布信息或截断正态分布信息。类型定义请参见aclrtNormalDisInfo。 |
aclrtRandomNumTaskInfo
typedef struct {
aclDataType dataType;
aclrtRandomNumFuncParaInfo randomNumFuncParaInfo;
void *randomParaAddr;
void *randomResultAddr;
void *randomCounterAddr;
aclrtRandomParaInfo randomSeed;
aclrtRandomParaInfo randomNum;
uint8_t rsv[8];
} aclrtRandomNumTaskInfo;
| 成员名称 | 说明 |
|---|---|
| dataType | 随机数数据类型。类型定义请参见aclDataType。 仅支持如下数据类型:ACL_INT32、ACL_INT64、ACL_UINT32、ACL_UINT64、ACL_BF16、ACL_FLOAT16、ACL_FLOAT。 |
| randomNumFuncParaInfo | 随机数函数信息,包括函数类别、参数信息。类型定义请参见aclrtRandomNumFuncParaInfo。 |
| randomParaAddr | 此处传NULL时,由接口内部自行申请Device内存,存放randomNumFuncParaInfo参数中的数据;否则,由用户申请Device内存,将内存地址作为参数传入。 |
| randomResultAddr | 存放随机数结果的内存地址。 由用户提前申请Device内存,将内存地址作为参数传入。 |
| randomCounterAddr | 生成随机数的偏移量。 由用户提前申请Device内存,读入偏移量数据后,再将内存地址作为参数传入。 |
| randomSeed | 随机种子。类型定义请参见aclrtRandomParaInfo。 |
| randomNum | 随机数个数。类型定义请参见aclrtRandomParaInfo。 |
| rsv | 预留参数。当前固定配置为0。 |
aclrtRandomParaInfo
typedef struct {
uint8_t isAddr;
uint8_t valueOrAddr[8];
uint8_t size;
uint8_t rsv[6];
} aclrtRandomParaInfo;
| 成员名称 | 说明 |
|---|---|
| isAddr | 取值:0,表示存放参数值;1,表示存放指向参数值的内存地址。 |
| valueOrAddr | 存放参数值或者存放指向参数值的内存地址。 当isAddr=0,请根据数据类型填充相应字节数,例如fp16,、bf16,填充前2个字节;fp32、uint32、int32,填充前4个字节;uint64、int64,填充8个字节。 当isAddr=1时,则填充8字节的内存地址值。 |
| size | 对valueOrAddr实际填充的字节数。 |
| rsv | 预留参数。当前固定配置为0。 |
aclrtRandomTaskUpdateAttr
typedef struct {
void *srcAddr;
size_t size;
uint32_t rsv[4];
} aclrtRandomTaskUpdateAttr;
| 成员名称 | 说明 |
|---|---|
| srcAddr | 存放待刷新数据的Device内存地址,需按照aclrtRandomNumTaskInfo结构体组织数据,且仅支持更新该结构体内的randomParaAddr、randomResultAddr、randomCounterAddr、randomSeed、randomNum参数值。 |
| size | 内存大小,单位Byte。 |
| rsv | 预留参数。当前固定配置为0。 |
aclrtServerPid
typedef struct {
uint32_t sdid;
int32_t *pid;
size_t num;
} aclrtServerPid;
| 成员名称 | 说明 |
|---|---|
| sdid | 针对Atlas A3 训练系列产品/Atlas A3 推理系列产品中的超节点产品,sdid(SuperPOD Device ID)表示超节点产品中的Device唯一标识,可提前调用aclGetDeviceInfo接口获取。 |
| pid | Host侧进程ID白名单数组。 |
| num | pid数组长度。 |
aclrtSnapShotBackupArgs
typedef struct aclrtSnapShotBackupArgs {
uint32_t backupFlags;
char reserved[60];
} aclrtSnapShotBackupArgs;
| 成员名称 | 说明 |
|---|---|
| backupFlags | 备份标志位。 |
| reserved | 预留字段。 |
aclrtSnapShotRestoreArgs
typedef struct aclrtSnapShotRestoreArgs {
uint32_t restoreFlags;
char reserved[60];
} aclrtSnapShotRestoreArgs;
| 成员名称 | 说明 |
|---|---|
| restoreFlags | 备份标志位。 |
| reserved | 预留字段。 |
aclrtStreamAttrValue
typedef union {
uint64_t failureMode;
uint32_t overflowSwitch;
uint32_t userCustomTag;
uint32_t cacheOpInfoSwitch;
uint32_t streamPriority;
uint32_t reserve[4];
} aclrtStreamAttrValue;
| 成员名称 | 说明 |
|---|---|
| failureMode | 设置aclrtStreamAttr中的ACL_STREAM_ATTR_FAILURE_MODE(表示Stream的任务调度模式)属性时,属性值的取值如下: - 0:某个任务失败后,继续执行下一个任务。默认值为0。 - 1:某个任务失败后,停止执行后续的任务,通常称作遇错即停。触发遇错即停之后,不支持再下发新任务。当Stream上设置了遇错即停模式,该Stream所在的Context下的其它Stream也是遇错即停 。该约束适用于以下产品型号: Atlas A3 训练系列产品/Atlas A3 推理系列产品 Atlas A2 训练系列产品/Atlas A2 推理系列产品 |
| overflowSwitch | 设置aclrtStreamAttr中的ACL_STREAM_ATTR_FLOAT_OVERFLOW_CHECK(表示溢出检测开关)属性时,属性值的取值如下: - 0:关闭溢出检测。默认值为0。 - 1:打开溢出检测。 |
| userCustomTag | 设置aclrtStreamAttr中的ACL_STREAM_ATTR_USER_CUSTOM_TAG(表示溢出检测分组标签)属性时,属性值的取值范围:0~uint32_t类型的最大值。 |
| cacheOpInfoSwitch | 设置aclrtStreamAttr中的ACL_STREAM_ATTR_CACHE_OP_INFO (表示算子信息缓存开关)属性时,属性值的取值如下: - 0:关闭算子信息缓存开关。默认值为0。 - 1:开启算子信息缓存开关。 |
| streamPriority | 设置aclrtStreamAttr中的ACL_STREAM_ATTR_PRIORITY (表示stream优先级)属性时,属性值的取值范围:0~7 值越小优先级级别越高,默认值为0。 |
| reserve | 预留值。 |
aclrtTaskUpdateInfo
typedef struct {
aclrtUpdateTaskAttrId id;
aclrtUpdateTaskAttrVal val;
} aclrtTaskUpdateInfo;
| 成员名称 | 说明 |
|---|---|
| id | 待更新的任务类别。类型定义请参见aclrtUpdateTaskAttrId。 |
| val | 待更新的任务信息。类型定义请参见aclrtUpdateTaskAttrVal。 |
Atlas A3 训练系列产品/Atlas A3 推理系列产品、Atlas A2 训练系列产品/Atlas A2 推理系列产品支持随机数生成任务。
Atlas 推理系列产品不支持随机数生成任务。
aclrtTimeoutUs
typedef struct {
uint32_t timeoutLow; // 超时时间的低32位值
uint32_t timeoutHigh; // 超时时间的高32位值
} aclrtTimeoutUs;
aclrtUniformDisInfo
typedef struct {
aclrtRandomParaInfo min;
aclrtRandomParaInfo max;
} aclrtUniformDisInfo;
| 成员名称 | 说明 |
|---|---|
| min | 最小值参数。类型定义请参见aclrtRandomParaInfo。 |
| max | 最大值参数。类型定义请参见aclrtRandomParaInfo。 |
aclrtUtilizationInfo
typedef struct aclrtUtilizationInfo {
int32_t cubeUtilization; // Cube利用率
int32_t vectorUtilization; // Vector利用率
int32_t aicpuUtilization; // AI CPU利用率
int32_t memoryUtilization; // Device内存利用率
aclrtUtilizationExtendInfo *utilizationExtend; // 预留参数,当前设置为null
} aclrtUtilizationInfo;
aclrtUuid
typedef struct aclrtUuid {
char bytes[16]; // 一个16字节的字符串,作为Device的唯一标识
} aclrtUuid;