文档
注册

调度与编译

如下代码所示,当定义完计算逻辑后,需要在算子接口实现函数中实现调度与编译。

通过调用auto_schedule接口,便可以自动生成相应的调度。配置信息包括算子内核名以及输入、输出张量。

with tvm.target.cce():
    schedule = dsl.auto_schedule(result)
config = {
    "name": kernel_name,
    "tensor_list": [input_data, result]
    "bool_storage_as_1bit":True
}
dsl.build(schedule, config)
  • 使用“auto_schedule”接口,自动生成相应的调度(schedule),“auto_schedule”接口的参数为算子的输出张量。

    schedule可以理解为:描述的计算过程如何在硬件上高效执行。就是把相关的计算和硬件设备上的相关指令对应起来。

  • “name”:编译生成的算子二进制文件名称,只能是大小写字母、数字、“_”的组合,且必须是字母或者“_”开头,长度小于或等于200个字符。
  • “tensor_list”(张量列表)中保存输入张量、输出张量,参数顺序与个数需要与原型定义算子函数声明中的输入输出参数顺序一致。

    注意:输入tensor需要是placeholder接口返回的tensor对象,此tensor对象的内存地址不能被覆盖。

    例如:"tensor_list": [tensor_a, tensor_b, res],tensor_a与tensor_b是输入张量,res为输出张量。

  • “bool_storage_as_1bit”:Bool类型存储时是否按照1 bit存储。True:按照1bit存储,False:按照8bit进行存储,默认值为True。

    当tbe.dsl.vcmp与tbe.dsl.vsel接口的mode/condition为bool时,需要设置此参数为False。

  • 根据调度和配置使用“build”接口来进行算子编译,算子编译过程会根据输入的数据形状、类别、算子参数等编译出专用内核,这个过程在生成模型时发生。
    • schedule:算子的计算schedule对象。
    • config:编译参数配置的map。

    编译完成后,会生成算子目标文件.o文件与算子描述文件.json文件。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词