pypto_pro.language.DataType#

产品支持情况#

  • Ascend 950PR/Ascend 950DT:支持

  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持

  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持

功能说明#

数据类型的枚举。

原型定义#

DT_FP4 = DataType.FP4               # 4位浮点数,2位指数,1位尾数,两个占用1字节内存
DT_FP8E4M3FN = DataType.FP8E4M3FN   # 8位浮点数,4位指数,3位尾数,占用1字节内存
DT_FP8E5M2 = DataType.FP8E5M2       # 8位浮点数,5位指数,2位尾数,占用1字节内存
DT_FP8E8M0 = DataType.FP8E8M0       # 8位浮点数,8位指数,0位尾数,占用1字节内存
DT_FP4E2M1 = DataType.FP4E2M1       # 4位浮点数,2位指数,1位尾数,两个占用1字节内存
DT_FP4E1M2 = DataType.FP4E1M2       # 4位浮点数,1位指数,2位尾数,两个占用1字节内存
DT_FP16 = DataType.FP16             # 16位半精度浮点数,占用2字节内存
DT_FP32 = DataType.FP32             # 32位单精度浮点数,占用4字节内存
DT_BF16 = DataType.BF16             # 16位Brain Float格式,占用2字节内存
DT_HF4 = DataType.HF4               # 4位HiFloat格式,两个占用1字节内存
DT_HF8 = DataType.HF8               # 8位HiFloat格式,占用1字节内存
DT_INT4 = DataType.INT4             # 4位有符号整数,占用1字节内存
DT_INT8 = DataType.INT8             # 8位有符号整数,占用1字节内存
DT_INT16 = DataType.INT16           # 16位有符号整数,占用2字节内存
DT_INT32 = DataType.INT32           # 32位有符号整数,占用4字节内存
DT_INT64 = DataType.INT64           # 64位有符号整数,占用8字节内存
DT_UINT4 = DataType.UINT4           # 4位无符号整数,占用1字节内存
DT_UINT8 = DataType.UINT8           # 8位无符号整数,占用1字节内存
DT_UINT16 = DataType.UINT16         # 16位无符号整数,占用2字节内存
DT_UINT32 = DataType.UINT32         # 32位无符号整数,占用4字节内存
DT_UINT64 = DataType.UINT64         # 64位无符号整数,占用8字节内存
DT_BOOL = DataType.BOOL             # 布尔类型,占用1字节内存

上述DT_XXX常量是Python侧的别名,DataType本身并非Python枚举,而是C++类经绑定后暴露到Python的同名类型。每个DataType.XXX都是该类的一个静态常量实例。

class DataType {
public:
    static const DataType BOOL;      // Boolean (true/false)
    static const DataType INT4;      // 4-bit signed integer
    static const DataType INT8;      // 8-bit signed integer
    static const DataType INT16;     // 16-bit signed integer
    static const DataType INT32;     // 32-bit signed integer
    static const DataType INT64;     // 64-bit signed integer
    static const DataType UINT4;     // 4-bit unsigned integer
    static const DataType UINT8;     // 8-bit unsigned integer
    static const DataType UINT16;    // 16-bit unsigned integer
    static const DataType UINT32;    // 32-bit unsigned integer
    static const DataType UINT64;    // 64-bit unsigned integer
    static const DataType FP4;       // 4-bit floating point
    static const DataType FP8E4M3FN; // 8-bit floating point (IEEE 754 e4m3fn format)
    static const DataType FP8E5M2;   // 8-bit floating point (IEEE 754 e5m2 format)
    static const DataType FP8;       // 8-bit floating point (backward compatibility alias)
    static const DataType FP8E8M0;   // 8-bit floating point (8-bit exponent, 0-bit mantissa)
    static const DataType FP4E2M1;   // 4-bit floating point (2-bit exponent, 1-bit mantissa)
    static const DataType FP4E1M2;   // 4-bit floating point (1-bit exponent, 2-bit mantissa)
    static const DataType FP16;      // 16-bit floating point (IEEE 754 half precision)
    static const DataType FP32;      // 32-bit floating point (IEEE 754 single precision)
    static const DataType FP64;      // 64-bit floating point (IEEE 754 double precision)
    static const DataType BF16;      // 16-bit brain floating point
    static const DataType HF4;       // 4-bit Hisilicon float
    static const DataType HF8;       // 8-bit Hisilicon float
    static const DataType INDEX;     // 64-bit index type
}

约束说明#

  • 裸整数常量(如42)使用DT_INT64。只有数值超过DT_INT64的上限时,才使用DT_UINT64。裸浮点常量(如3.14)使用DT_FP32。

  • MXFP8的数据元素使用DT_FP8E4M3FN或DT_FP8E5M2,MXFP4的数据元素使用DT_FP4E2M1或DT_FP4E1M2;两者均使用DT_FP8E8M0保存分组缩放因子。详见matmul_mxmatmul_mx_acc

常用接口#

方法

说明

dtype.get_bit() / dtype.bits()

取位宽(如pypto_pro.language.DT_FP16.get_bit()返回16)

dtype.is_float()

是否浮点类型

dtype.is_int()

是否整型(有符号或无符号)

dtype.is_signed_int() / dtype.is_signed()

是否有符号整型

dtype.is_unsigned_int() / dtype.is_unsigned()

是否无符号整型

dtype.to_string() / str(dtype)

人类可读名称(如”fp16”)

dtype.to_c_type_string()

C类型字符串(如”half”)