更新时间:2021-03-18 GMT+08:00
分享

运行单算子

  1. 在DDK 样例customop_runner中生成单算子编译二进制文件。

    1. 给customop_runner工程样例赋予写权限。

      chmod -R +w $HOME/tools/che/ddk/ddk/sample/customop/customop_runner/

    2. 进入DDK样例customop_runner工程的build目录。

      cd $HOME/tools/che/ddk/ddk/sample/customop/customop_runner/build

    3. 设置DDK_PATH的环境变量。

      export DDK_PATH=$HOME/tools/che/ddk/ddk

    4. 执行如下命令生成Makefile文件。
      • 对于Atlas 200 DK开发者板环境,执行如下命令。

        cmake -Dtarget=OI .

      • 对于设备类型为ASIC的环境,执行如下命令。

        cmake .

    5. 执行make命令,编译生成二进制文件。

      make

      “$HOME/tools/che/ddk/ddk/sample/customop/customop_runner/out/”目录下会生成可执行文件main和动态库libcustom_engine.so

  2. 把out目录拷贝到TE自定义算子工程目录。

    cp -rf $HOME/tools/che/ddk/ddk/sample/customop/customop_runner/out $HOME/tools/projects/customop_te/

  3. 配置输入数据、输出数据及验证描述文件。

    进入TE自定义算子工程目录中的out文件夹。

    cd $HOME/tools/projects/customop_te/out
    • 在input.txt文件中配置输入数据文件路径及文件名。

      例如:

      dataPath=../operator/Reduction_input_2_3_4_sum_axis_1.data

      如果自定义算子有多个输入数据,需要自定义多个输入数据的txt文件,例如input1.txt、input2.txt等,分别按照input.txt的格式进行定义。

    • 在output.txt中配置输出数据的相关信息

      例如:

      size=4
      dataPath=./output/out0.data
      dtype=1
      • size:预期的输出数据文件大小,单位字节。
      • dataPath:输出数据的路径及文件名。
      • dtype:输出数据类型,其中1代表float16,2代表float32
    • 在expect.txt文件中配置期望生成数据的路径及文件名。

      例如:

      dataPath=../operator/Reduction_output_2_3_4_sum_axis_1.data

  4. 将operator文件夹与out文件夹以HwHiAiUser用户拷贝到开发者板或者ASIC设备的Host侧,operator与out文件夹应放置在同一目录下。

    例如拷贝到“/home/HwHiAiUser/projects”目录下。

  5. 运行算子

    以HwHiAiUser用户登录开发者板或者ASIC类型设备的Host侧,并进入out目录, 例如“/home/HwHiAiUser/projects/out”

    1. 在当前目录下创建output文件夹,用于存储生成的数据文件。此文件路径及名称为output.txt文件中定义的。

      mkdir output

    2. 执行如下命令为main文件添加可执行权限。

      chmod +x main

    3. 执行如下命令,运行单算子并进行算子比对。

      ./main -i input.txt -o output.txt -e expect.txt -b ../operator/kernel_meta/Reduction.o -p 0.2 -d 0.2 -k Reduction__kernel0 -t 0

      其中:

      • -i:输入数据配置文件,配置了输入数据的路径及文件名。

        如果自定义算子有多个输入数据,需要自定义多个输入数据的txt文件,例如input1.txt、input2.txt等,分别按照input.txt的格式进行定义。

      • -o:输出数据配置文件,配置了输出数据的大小、路径及文件名,输出数据的类型。
      • -e:期望数据配置文件,配置了期望输出数据的路径及文件名,用于做结果比对。
      • -b:算子实现的二进制文件*.o(运行目标为AI Core的算子)或者*.so(运行目标为AI CPU的算子)。
      • -p:精度偏差,表示数据相对误差的允许范围,取值为[0,1),精度偏差越小表示精度越高。
      • -d:统计偏差,整个数据集中精度偏差不满足门限的数据量占比,数值范围(0,1),统计偏差越小表示精度越高。
      • -k:核函数名称,TE算子的核函数名称需要与.json文件中的kernelName保持一致;C++算子的内核名称需要与算子在Framework注册的opetype的名称保持一致。
      • -t:有三种取值,0代表TE_AI Core算子,1代表TE_AI CPU算子,2代表C++的自定义算子(AI CPU算子)。

        对于TE算子,是运行在AI Core上还是运行在AI CPU上可以通过算子编译完成后生成的**.json文件中的“magic”参数值进行查看。

      执行成功后,会在当前目录的output文件夹下会生成名称为out0.data结果文件及名称为vertifyResult.txt的验证数据比对结果文件。

      vertifyResult.txt文件样例如下,代表实际输出数据与期望输出数据内容比对一致。

      Output file ./output/out0.data compare result true

分享:

    相关文档

    相关产品