---
title: 简介
description: "算子编译工具（op_compiler）是昇腾CANN提供的编译算子生成算子二进制文件的命令行工具。该工具的具体功能和使用约束如下："
url: https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/latest/devaids/opcompiletool/atlasop_compiler_07_0001.html
sourcePath: /source/zh/CANNCommunityEdition/920beta1/devaids/opcompiletool/atlasop_compiler_07_0001.html
indexId: 50b5d38c8575677104f1129992d3ba4806d203618501dd171d4841686a62abed92
---
# 简介

算子编译工具（op_compiler）是昇腾CANN提供的编译算子生成算子二进制文件的命令行工具。该工具的具体功能和使用约束如下：

具体功能：

- 静态shape编译功能：通过单算子API执行的方式调用算子，算子shape固定时，可以使用该工具编译静态Kernel包并安装，提升算子调用的性能。
  本文档仅介绍算子编译工具的使用方法，具体的场景样例请参见《算子库》(https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/920beta1/API/aolapi)中的“使用静态Kernel提升算子执行性能(https://www.hiascend.comdocument/detail/zh/CANNCommunityEdition/920beta1/API/aolapi/operatorlist_00438.html)”章节。

- 调试版本编译功能。定位算子问题时，可以使用该工具编译调试版本的二进制，用于问题复现和定位。

使用约束：

- 静态shape编译
  支持的产品型号：
  - Atlas 推理系列产品
  - Atlas 训练系列产品
  - Atlas A2 训练系列产品 / Atlas A2 推理系列产品
  - Ascend 950PR / Ascend 950DT


- 调试版本编译
  支持的产品型号：
  - Atlas 推理系列产品，支持
  - Atlas 训练系列产品，支持
  - Atlas A2 训练系列产品 / Atlas A2 推理系列产品，支持
  - Ascend 950PR / Ascend 950DT，不支持


#### 工具功能架构

算子编译工具的功能架构如图1所示。

图1 算子编译工具功能架构

1. 开发者在执行此工具时，需要向此工具传入算子信息统计文件或者算子kernel_name（仅调试场景支持传入kernel_name）以及其他参数。
2. 传入算子信息统计文件的场景下，算子编译工具获取该文件并解析。
3. 判断开发者是否开启了调试版本编译选项：

  a. 如果开启，则进行调试版本编译，根据实际运行时使用的是静态shape还是动态shape编译出对应的调试版本。
  b. 如果没有开启，执行静态shape编译流程。
4. 算子编译工具编译生成Kernel文件并打包成算子Kernel包。


#### 静态编译

静态编译是指在编译时指定shape大小，运行时不需要指定shape大小。算子编译工具进行静态编译时，根据输入的算子信息统计文件，得到确定的shape信息，针对每一个shape都编译出一个算子二进制，编译原理如下图所示：


静态编译有如下优势：

- 编译时决定所有tensor的大小，存储空间利用率高。
- 编译时可以针对实际的shape大小做针对性优化。
- AI处理器擅长并行指令运行，不擅长逻辑计算，如果有太多的Scalar操作可能会打断并行指令的运行，从而导致性能下降。静态编译可以在编译时完成标量的计算，一定程度上可以提升性能。
- 编译工具在编译时知道确切的操作数据大小，不会额外插入同步，不会导致并行执行多个指令变成串行执行，一定程度上可以提升性能。


#### 调试版本编译

在算子二进制的使用过程中，如果出现AICore Error或者内存越界等问题，可以编译出包含相关调试信息的调试版本，用于分析和定位问题。
