---
title: 了解算子开发场景
description: "CANN算子库包含了丰富的高性能算子，让神经网络的运行性能更高。CANN算子库中的算子都是预先实现和编译的，是华为工程师使用AI处理器架构专用编程语言开发的高度优化的内核函数，能够较好的适配底层硬件架构，具有较高的性能。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/tbeaicpudevg/atlasopdev_10_0002.html
sourcePath: /source/zh/canncommercial/900/others/tbeaicpudevg/atlasopdev_10_0002.html
indexId: 46c76a94c7e9dfe3e365528cf18cf796b884e1ec0adc994a66d438fc75c94d6b73
---
# 了解算子开发场景

CANN算子库包含了丰富的高性能算子，让神经网络的运行性能更高。CANN算子库中的算子都是预先实现和编译的，是华为工程师使用AI处理器架构专用编程语言开发的高度优化的内核函数，能够较好的适配底层硬件架构，具有较高的性能。

一般场景下，开发者无需自己开发算子。但若遇到以下场景，开发者需要考虑进行自定义算子的开发：

- 训练场景下，将第三方框架（例如TensorFlow、PyTorch等）的网络训练脚本迁移到AI处理器时遇到了不支持的算子。
- 推理场景下，将第三方框架模型（例如TensorFlow、Caffe、ONNX等）使用ATC工具转换为适配AI处理器的离线模型时遇到了不支持的算子。
- 网络调优时，发现某算子性能较低，影响网络性能，需要重新开发一个高性能算子替换性能较低的算子。
- 推理场景下，若应用程序中的某些逻辑涉及到数学运算（例如查找最大值，进行数据类型转换等），开发者可以将这些操作通过自定义算子的方式进行实现，然后在应用程序中对算子进行调用，算子在AI处理器运行，可以达到利用AI处理器进行性能提升的目的。
  例如，针对一个分类应用，我们想从分类模型的推理结果中查找可能性最大的前5个标识，则可以实现一个查找最大值的算子（例如ArgMax），后续就可以直接通过AscendCL接口调用此算子实现对推理结果的后处理。
