开发者
下载

aclrtDevAttr

定义

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
typedef enum { 
    ACL_DEV_ATTR_AICPU_CORE_NUM  = 1, 
    ACL_DEV_ATTR_AICORE_CORE_NUM = 101, 
    ACL_DEV_ATTR_CUBE_CORE_NUM = 102,
    ACL_DEV_ATTR_VECTOR_CORE_NUM = 201,      
    ACL_DEV_ATTR_WARP_SIZE = 202,
    ACL_DEV_ATTR_MAX_THREAD_PER_VECTOR_CORE,
    ACL_DEV_ATTR_UBUF_PER_VECTOR_CORE,
    ACL_DEV_ATTR_MAX_GRID_DIM_X = 205,
    ACL_DEV_ATTR_MAX_GRID_DIM_Y = 206,
    ACL_DEV_ATTR_MAX_GRID_DIM_Z = 207,
    ACL_DEV_ATTR_MAX_BLOCK_PER_GRID = 208,
    ACL_DEV_ATTR_MAX_THREADS_PER_BLOCK = 209,
    ACL_DEV_ATTR_MAX_BLOCK_DIM_X = 210,
    ACL_DEV_ATTR_MAX_BLOCK_DIM_Y = 211,
    ACL_DEV_ATTR_MAX_BLOCK_DIM_Z = 212,

    ACL_DEV_ATTR_TOTAL_GLOBAL_MEM_SIZE = 301,
    ACL_DEV_ATTR_L2_CACHE_SIZE = 302,

    ACL_DEV_ATTR_SMP_ID = 401U,
    ACL_DEV_ATTR_PHY_CHIP_ID = 402U,
    ACL_DEV_ATTR_SUPER_POD_DEVICE_ID = 403U,
    ACL_DEV_ATTR_SUPER_POD_SERVER_ID = 404U,
    ACL_DEV_ATTR_SUPER_POD_ID = 405U, 
    ACL_DEV_ATTR_CUST_OP_PRIVILEGE = 406U,
    ACL_DEV_ATTR_MAINBOARD_ID = 407U,

    ACL_DEV_ATTR_IS_VIRTUAL = 501U,

    ACL_DEV_ATTR_NPU_ARCH = 601U,
} aclrtDevAttr;

枚举项说明如下:

  • ACL_DEV_ATTR_AICPU_CORE_NUM

    AI CPU数量。

  • ACL_DEV_ATTR_AICORE_CORE_NUM

    AI Core数量。

  • ACL_DEV_ATTR_CUBE_CORE_NUM

    Cube Core数量。

  • ACL_DEV_ATTR_VECTOR_CORE_NUM

    Vector Core数量。

  • ACL_DEV_ATTR_WARP_SIZE

    一个Warp里的线程数,在SIMT(单指令多线程,Single Instruction Multiple Thread)编程模型中,Warp是指执行相同指令的线程集合。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

  • ACL_DEV_ATTR_MAX_THREAD_PER_VECTOR_CORE

    每个VECTOR_CORE上可同时驻留的最大线程数。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

  • ACL_DEV_ATTR_UBUF_PER_VECTOR_CORE

    每个VECTOR_CORE上可以使用的最大Unified Buffer的大小,单位Byte。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

  • ACL_DEV_ATTR_MAX_GRID_DIM_X

    Grid维度X的最大值,用于SIMT编程模型中线程块的网格配置。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

    说明:Grid表示线程块网格,由多个线程块(Thread Block)组成。Grid采用三维结构,其维度X、Y和Z分别表示不同维度下线程块的大小。线程块同样采用三维结构,其维度X、Y和Z分别表示线程块中三个维度的线程数。

  • ACL_DEV_ATTR_MAX_GRID_DIM_Y

    Grid维度Y的最大值,用于SIMT编程模型中线程块的网格配置。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

  • ACL_DEV_ATTR_MAX_GRID_DIM_Z

    Grid维度Z的最大值,用于SIMT编程模型中线程块的网格配置。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

  • ACL_DEV_ATTR_MAX_BLOCK_PER_GRID

    每个Grid中Block的最大数量,用于SIMT编程模型中线程块的网格配置。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

  • ACL_DEV_ATTR_MAX_THREADS_PER_BLOCK

    每个Block中线程的最大数量,用于SIMT编程模型中线程块的配置。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

  • ACL_DEV_ATTR_MAX_BLOCK_DIM_X

    Block维度X的最大值,用于SIMT编程模型中线程块的配置。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

  • ACL_DEV_ATTR_MAX_BLOCK_DIM_Y

    Block维度Y的最大值,用于SIMT编程模型中线程块的配置。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

  • ACL_DEV_ATTR_MAX_BLOCK_DIM_Z

    Block维度Z的最大值,用于SIMT编程模型中线程块的配置。

    Atlas 350 加速卡支持该选项。

    对于不支持该选项的产品型号,默认返回0。

  • ACL_DEV_ATTR_TOTAL_GLOBAL_MEM_SIZE

    Device上的可用总内存,单位Byte。

  • ACL_DEV_ATTR_SMP_ID

    SMP(Symmetric Multiprocessing) ID,用于标识设备是否运行在同一操作系统上。

  • ACL_DEV_ATTR_PHY_CHIP_ID

    芯片物理ID。

  • ACL_DEV_ATTR_SUPER_POD_DEVICE_ID

    SuperPOD Device ID表示超节点产品中的Device标识。

  • ACL_DEV_ATTR_SUPER_POD_SERVER_ID

    SuperPOD Server ID表示超节点产品中的服务器标识。

  • ACL_DEV_ATTR_SUPER_POD_ID

    SuperPOD ID表示集群中的超节点ID。

  • ACL_DEV_ATTR_CUST_OP_PRIVILEGE

    表示查询自定义算子是否可以执行更多的系统调用权限。

    取值如下:
    • 0:自定义算子执行系统调用权限受控(例如不能执行Write操作)。
    • 1:自定义算子可以执行更多的系统调用权限。

    Atlas 350 加速卡不支持该选项。

  • ACL_DEV_ATTR_MAINBOARD_ID

    主板ID。

  • ACL_DEV_ATTR_IS_VIRTUAL
    是否为昇腾虚拟化实例
    • 0:不是昇腾虚拟化实例,是物理机。
    • 1:是昇腾虚拟化实例,可能是虚拟机或容器。
  • ACL_DEV_ATTR_NPU_ARCH

    NPU的架构版本。

    产品型号和NPU架构版本的对应关系如下所示:

    • Atlas 350 加速卡:3510
    • Atlas A3 训练系列产品 / Atlas A3 推理系列产品 :2201
    • Atlas A2 训练系列产品 / Atlas A2 推理系列产品 :2201
    • Atlas 200I/500 A2 推理产品 :3002
    • Atlas 推理系列产品 :2002
    • Atlas 训练系列产品 :1001

了解AI Core、Cube Core、Vector Core的关系

为便于理解AI Core、Cube Core、Vector Core的关系,此处先明确Core的定义,Core是指拥有独立Scalar计算单元的一个计算核,通常Scalar计算单元承担了一个计算核的SIMD(单指令多数据,Single Instruction Multiple Data)指令发射等功能,所以我们也通常也把这个Scalar计算单元称为核内的调度单元。不同产品上的AI数据处理核心单元不同,当前分为以下几类:

  • 当AI数据处理核心单元是AI Core:
    • 在AI Core内,Cube和Vector共用一个Scalar调度单元。

      此处以 Atlas 训练系列产品 为例。

    • 在AI Core内,Cube和Vector都有各自的Scalar调度单元,因此又被称为Cube Core、Vector Core。这时,一个Cube Core和一组Vector Core被定义为一个AI Core,AI Core数量通常是以多少个Cube Core为基准计算的。

      此处以 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 为例。

  • 当AI数据处理核心单元是AI Core以及单独的Vector Core:AI Core和Vector Core都拥有独立的Scalar调度单元。

    此处以 Atlas 推理系列产品 为例。

了解SuperPOD ID、SuperPOD Server ID、SuperPOD Device ID之间的关系