昇腾社区首页
中文
注册

TransdataOperation

功能

数据格式转换处理。

约束

  • 使用的NZ的dims约定表示方式:{b, n1, m1m0, n0},对应的ND的dims是{b, m, n},其中:b表示batch,如果batch为1,该维度为1,不可省略。如果batch有多个,该维度为所有batch维度合轴的结果。

    m0/n0表示对齐位,float16时,n0与m0都为16, int8时,n0为32,m0为16,m1m0表示原始ND的m维度经过对齐位向上对齐,n1表示原始ND的n维度经过对齐位向上对齐后,除以n0的商。例如原始ND的dims为{8, 100, 30},则其对应的NZ的dims为{8, 2, 112, 16}。

  • outCrops的长度要求是2,其值须满足以下要求:
    • 如果m0m1落在区间(k1 × 16, (k1 + 1) × 16](其中k1为正整数)内,那么该区间即为outCrops[0]的取值范围要求。
    • 如果n0*n1落在区间(k2 × 16, (k2 + 1) × 16](其中k2为正整数)内,那么该区间即为outCrops[1]的取值范围要求。

定义

struct TransdataParam {
     enum TransdataType : int { 
         UNDEFINED = 0, 
         FRACTAL_NZ_TO_ND, 
         ND_TO_FRACTAL_NZ 
     };
 
     TransdataType transdataType = UNDEFINED;
     SVector<int64_t> outCrops = {0, 0};
};

成员

成员名称

描述

transdataType

数据格式转换类型,支持FRACTAL_NZ和ND互相转换。

outCrops

仅当FRACTAL_NZ转ND时使用,表示原ND数据格式Shape的最后两维。

输入

表1 输入1

参数

维度

数据类型

格式

x

  1. [batch, m, n]
  2. [m, n]

float16/int8

ND

表2 输入2

参数

维度

数据类型

格式

x

[batch, n1, m1m0, n0]

float16

NZ

输出

表3 输出1

参数

维度

数据类型

格式

y

[batch, n1, m1m0, n0]

float16/int8

NZ

表4 输出2

参数

维度

数据类型

格式

y

[batch, m, n]

float16

ND