---
title: 基本介绍
description: "使用场景"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/aolapi/operatorlist_00439.html
sourcePath: /source/zh/canncommercial/900/API/aolapi/operatorlist_00439.html
indexId: f55bb74c39b2313e64d0457fcc8007b9e91528ba5d2f69f1af445102beaa4fcf64
---
# 基本介绍

#### 使用前须知

使用场景

对于纯静态shape网络或者shape变化较少的动态shape网络，如果您想快速提升网络执行性能，可以在网络部署时通过算子编译工具（op_compiler）编译生成静态Kernel包来提升算子调用性能。

调优原理

静态Kernel编译是指在编译时指定算子shape大小，运行时不需要指定shape大小。算子编译工具根据输入的算子信息统计文件，得到确定的shape信息，针对每一个shape都编译出一个算子二进制，从而实现提升算子执行效率和性能的目的。

静态Kernel编译的优势如下：

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

使用约束

目前仅支持静态编译和调优编译模式。

- （默认）静态编译模式支持的产品型号：

  - Atlas 推理系列产品
  - Atlas 训练系列产品
  - Atlas A2 训练系列产品 / Atlas A2 推理系列产品
  - Atlas 350 加速卡
- 调优模式相关的使用约束如下：

  - 产品型号支持度：

    - Atlas 推理系列产品，不支持
    - Atlas 训练系列产品，不支持
    - Atlas A2 训练系列产品 / Atlas A2 推理系列产品，支持
    - Atlas 350 加速卡，不支持
  - 不支持不同用户同时使用同一device进行调优。
  - 调优前，请确保关闭Profiling功能，避免影响调优结果。关闭Profiling功能具体操作请参见《性能调优工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/Profiling/atlasprofiling_16_0144.html)》。


#### 整体流程

图1 使用静态Kernel提升性能的原理图

通过编译静态Kernel提升网络模型中算子执行性能的基本流程如上图所示，整个调优步骤如下：

1. Dump算子信息。
对算子调优前，需要先获取网络模型中的算子信息。

  - 方式1：若采用PyTorch的Python接口编程，通过Ascend PyTorch Profiler接口Dump算子json文件。
  - 方式2：若采用acl接口，直接调用aclopStartDumpArgs和aclopStopDumpArgs接口Dump算子json文件。
2. 编译静态Kernel包。
通过算子编译工具对Dump的算子信息统计文件（*.json）进行编译并生成Kernel包。算子编译工具（op_compiler）是CANN提供的用于进行算子编译生成算子二进制文件的命令行工具。当算子shape固定或者变化较少时，可使用该工具编译静态kernel包并安装，提升算子调用的性能。关于该工具的详细介绍，请参考《算子编译工具(https://www.hiascend.com/document/detail/zh/canncommercial/900/devaids/opcompiletool/atlasop_compiler_07_0001.html)》。


  a. 选择编译模式。
    算子编译工具默认是静态编译模式。如果想要进一步提升算子性能，可尝试进行算子调优，即开启“tune”调优编译模式。

  b. 打包静态Kernel包。
    算子编译工具将编译生成的Kernel文件打包成run包。

3. 安装静态Kernel包。
  将静态Kernel包上传到目标网络模型运行的服务器上，直接运行run包完成安装。

4. 模型执行效果验证。
  安装静态Kernel包后，重新运行目标网络模型，比较安装静态Kernel包和未安装静态Kernel包的整网运行性能和单算子运行耗时。
