使用说明
需要具备的知识
本文档主要用于指导开发者基于Ascend C框架在昇腾AI处理器上开发高性能的算子。在阅读此文档时,需要开发者具备如下能力:
- 熟练使用C++编程语言。
- 了解计算机架构。
- 理解昇腾AI处理器硬件架构。
- 完成Ascend C编程相关文档、课程学习。
- 可以完成Ascend C开发、调试环境搭建。
- 可以独立完成Ascend C算子的开发。
- 熟练使用性能分析工具获取性能数据。
可以解决的问题
开发者完成Ascend C算子(本文后续提到的算子均指使用Ascend C开发的算子)的开发后,想对算子性能进一步优化,那么通过阅读本文档可以得到有效帮助。
本文档首先介绍算子运行数据流的概念,然后介绍使用Ascend C编程时调试调优的思路,以及结合经验总结的性能优化手段,最后介绍具体的性能优化案例。
优化算子性能是一个持续迭代的流程,将如下步骤不断循环迭代,直至达成性能目标。在优秀实践章节,开发者可以进一步了解基于以下四个步骤的具体实践。
图1 算子性能优化流程
![](/doc_center/source/zh/CANNCommunityEdition/80RC3alpha003/devguide/opdevg/ascendcbestP/figure/zh-cn_image_0000002022858320.png)
本文档分为如下五章进行介绍,各章的内容以及目标如下:
- 异构计算:介绍算子在硬件上的部署以及运行的数据流。目的是让开发者在宏观上了解硬件架构上可能影响算子执行性能的流程。
- 功能正常:介绍部分比较常见的影响算子功能的场景。目的是让开发者可以快速解决功能问题,便于进行性能优化,以及快速解决在性能优化过程中可能出现的功能问题。
- 性能分析:介绍了算子性能数据分析的方向。目的是让开发者能够分析性能数据,识别性能的优化方向。算子性能数据的测试方法,以及性能工具使用方式的详细说明请参考《性能分析工具使用指南》,本章不做赘述。
- 性能优化:介绍性能优化的手段。目的是让开发者结合算子性能瓶颈点,开展性能优化工作。将主要的优化建议分成搬运优化、内存优化、API使用优化、指令优化、流水优化以及Tiling优化。有一些优化建议是对上述分类的综合体现,则写在了相关性比较大的章节。这些建议按优先级进行分类,优先级是综合考虑性能效果及其范围来设定:为大多数Ascend C算子带来性能收益的建议具有最高优先级,而仅影响特定情况的手段被给予较低优先级。开发者不必熟悉所有优化手段,可以根据分析得到的算子性能瓶颈,获取对应的优化手段,逐渐了解优化策略全貌。
- 优秀实践:介绍算子性能优化的优秀实践案例。目的是让开发者结合实例更深入的理解上文内容,同时参考其中的优化手段和优化思路,完成开发者自己的性能优化,实现从理论到实践的过渡。