json配置文件说明

编写算子的定义json文件,配置参数的具体说明请参考表1表2

例如,json配置文件的命名为add_test.json,开发者可基于该模板修改测试数据及其他配置参数。
{
  "kernel_name": "add_custom",
  "kernel_path": "./add_custom.o",
  "simulator_dump_path": "./model",
  "blockdim": 8,
  "mode": "ca",
  "soc_version": "Ascendxxxyy",
  "output_data_path": "./data",
  "device_id": 0,
  "magic": "RT_DEV_BINARY_MAGIC_ELF_AIVEC",
  "calc_expect_func_file": "./test_AddCustom.py:calc_expect_func",
  "test_cases": [
    {
      "case_name": "Test_AddCustom_001",
      "param_desc": [
        {
          "param_type": "input",
          "type": "float16",
          "shape": [
            8,
            2048
          ],
          "data_path": "./input_x.bin",
          "name": "x"
        },
        {
          "param_type": "input",
          "type": "float16",
          "shape": [
            8,
            2048
          ],
          "data_path": "./input_y.bin",
          "name": "y"
        },
        {
          "param_type": "output",
          "type": "float16",
          "shape": [
            8,
            2048
          ],
          "name": "z"
        },
        {
          "param_type": "workspace",
          "user_workspace_size": 4096
        },
        {
          "param_type": "tiling",
          "tiling_data_size": 8,
          "tiling_data_path": "./tiling.bin"
        }
      ]
    }
  ]
}
表1 json文件配置参数说明

参数名称

参数描述

类型

是否必选

kernel_name

核函数名称。

string

kernel_path

核函数二进制.o文件所在路径,可配置为绝对路径或者相对路径。

string

blockdim

核函数运行所需的核数,默认值:1。

int

mode

测试模式。

  • 上板:onboard
  • 功能仿真:pv
  • 性能仿真:ca
说明:

算子上板或仿真调优时仅支持配置为“onboard”“ca”

string

soc_version

配置为昇腾AI处理器的类型。

说明:
  • “mode”参数配置为pv或ca时必选。
  • 如果无法确定具体的<soc_version>,则在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如“Name”对应取值为xxxyy,实际配置的<soc_version>值为Ascendxxxyy

string

simulator_dump_path

仿真模式下dump文件保存路径,默认值:./model。

可配置为绝对路径或者相对路径,并且工具执行用户具有可读写权限。

说明:

“mode”参数配置为pv或ca时使用。

string

result_data_path

输出结果及数据保存路径,默认值:./msopt_test_result。

可配置为绝对路径或者相对路径,并且工具执行用户具有可读写权限。

string

device_id

运行时使用昇腾AI处理器的ID,默认值:0。

int

magic

算子类型。
  • cube算子:RT_DEV_BINARY_MAGIC_ELF_AICUBE
  • vector算子:RT_DEV_BINARY_MAGIC_ELF_AIVEC
  • mix融合算子:RT_DEV_BINARY_MAGIC_ELF(仅Atlas A2训练系列产品/Atlas 800I A2推理产品支持配置)

string

calc_expect_func_file

算子期望数据生成函数对应的文件路径及算子函数名称。

如:"/home/teste/test_*.py:function",其中test_*.py为算子期望数据生成函数的实现文件,function为对应的函数名称。

须知:

不建议用户调用其它用户目录下的期望数据生成脚本,以避免提权风险。

string

test_cases

测试数据,支持列表,每个元素包含一个用例。详细说明可参考表2

说明:

算子上板或仿真调优时仅支持配置单个用例。

map

表2 test_case参数字段说明

参数

说明

类型

是否必选

case_name

-

-

测试用例的名称,需唯一。

string

param_desc

-

-

用例描述,支持列表,每个元素代表一个核函数参数。

string

-

param_type

input/output/workspace/tiling/fftsAddr

参数类型。

string

-

type

-

输入输出数据支持的数据类型,例如:uint8、int16、int32、float16、float32、float等。

说明:

“param_type”为input、output时必选。

string

-

shape

-

输入输出tensor支持的形状,所有输入输出tensor需支持相同数量的形状。

例如:

[8, 3, 256, 256]。

若输入非法的形状会报错,例如:[0]。

说明:

“param_type”为input、output时必选。

list

-

data_path

-

输入数据bin文件的路径。

说明:

“param_type”为input时必须输入data_path或value_range,且data_path优先级更高。

string

-

value_range

-

自动生成输入数据的范围。

采用长度为2的数组[a,b],表示生成[a,b)之间的随机数数据。

list

-

name

-

参数名称,需唯一。

说明:

“param_type”为input、output时必选。

string

-

user_workspace_size

-

用户设置的workspace_size大小。

说明:

“param_type”为workspace时必选。

int

-

tiling_data_size

-

tiling数据大小。

说明:

“param_type”为tiling时必选。

int

-

tiling_data_path

-

tiling数据bin文件所在路径。

说明:

“param_type”为tiling时必选。

string

-

data_size

-

fftsAddr的data_size大小。

说明:

“param_type”为fftsAddr时必选。

int

  • “output”中参数取值的个数都要与“input”一致,否则测试用例生成会失败。

    例如:“input”的type支持的类型个数2,则“output”的type支持的类型个数也需要为2。

    同理,所有inputx/outputx中的type、shape和value_range的取值个数也需要保持一致。

  • 一个算子所有“input”中参数取值的个数都要一致,否则测试用例生成会失败。

    所有“input”中的type、shape和value_range的取值个数也需要保持一致。