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

BuildCCE

功能说明

BuildCCE的功能是,生成用户在目标机上定义的DSL,并将DSL编译成昇腾AI处理器上可执行的二进制代码,以及对应的配置文件。

函数原型

BuildCCE(kernel_name, inputs, outputs, output_files_path=None, enable_l2=False, config=None, flowtable=None)

参数说明

表1 参数说明

参数名称

输入/输出

含义

kernel_name

输入

  • 传入类型:string
  • 作用:指示生成二进制文件的文件名,以及生成CCE kernel函数的函数名。
  • 举例说明:

    传入字符串为“test”,则生成二进制文件的文件名为:test.o;生成CCE kernel函数的函数名为test__kernel0。

inputs

输入

  • 传入类型:由scope为“scope_gm”的TensorInputScalar组成的list或者tuple。
  • 作用:指定生成的CCE kernel函数中,作为算子输入参数。参数个数小于等于64。

outputs

输入

  • 传入类型:由scope为“scope_gm”的Tensor组成的list或者tuple。
  • 作用:指定生成的CCE kernel函数中,作为算子输出参数。参数个数小于等于64。
  • 说明:当outputs=[]时,返回值是一个长度为1且数据为0的数组,即[ [0] ] 。

output_files_path

输入

编译后目标文件输出文件路径,支持string类型。默认为None,输出到当前运行目录下的”./kernel_meta”

enable_l2

输入

外存是否是L2,支持Bool类型。默认值为False。

该参数不生效。

config

输入

字典类型,包括key和value,key为字符串格式,用于配置算子编译信息。

配置格式:

config = {"key" : value}

当前支持的key为:

double_buffer_non_reuse,表示double_buffer内的ping变量和pong变量是否重用,value值可以为True和False,如果配置为True表示ping变量pong变量不重用;False表示ping变量pong变量可能重用。

配置示例:

config = {"double_buffer_non_reuse" : True}

flowtable

输入

支持的类型为:由InputScalar组成的list或者tuple。

flowtable参数列表,用于传入Tiling参数(例如在动态shape场景下,由算子选择器计算得到)。该列表中的参数个数和inputs的参数个数之和小于等于64。

注意事项

  • 同一tensor不能同时在inputs和outputs中,不然TIK将报错。
  • 所有的scope_gm的非workspace的tensor必须在inputs或者在outputs中,否则编译报错。
  • BuildCCE在无输出时会指定一个长度为1的数据为0的数组,即设置outputs=[],返回值为[ [0] ]。
  • inputs中需要将Tensor放置在InputScalar前面。

返回值

调用示例

from te import tik
tik_instance = tik.Tik()
data_A = tik_instance.Tensor("float16", (128,), name="data_A", scope=tik.scope_gm)
data_B = tik_instance.Tensor("float16", (128,), name="data_B", scope=tik.scope_gm)
data_C = tik_instance.Tensor("float16", (128,), name="data_C", scope=tik.scope_gm)
tik_instance.BuildCCE(kernel_name="simple_add",inputs=[data_A,data_B],outputs=[data_C])
分享:

    相关文档

    相关产品

close