---
title: 调度与编译
description: "如下代码所示，当定义完计算逻辑后，需要在算子接口实现函数中实现调度与编译。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/tbeaicpudevg/atlasopdev_10_0038.html
sourcePath: /source/zh/canncommercial/900/others/tbeaicpudevg/atlasopdev_10_0038.html
indexId: f9c7f0e5b2447eae79bd84803dee6275460402e91435cd40cb9a70edcd761b8873
---
# 调度与编译

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

通过调用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文件。
