融合算子简介
融合算子是指将多个独立的“小算子”融合成一个“大算子”,多个小算子的功能和大算子的功能等价,融合算子在性能或者内存等方面优于独立的小算子。可以根据具体算法的实现自由融合向量(Vector)、矩阵(Cube)算子以达到性能或者内存收益。
例如对于大语言模型(Large Language Model, LLM)核心计算为Scaled dot product attention。其核心实现如下图。图中Matmul算子(Cube)、Scale算子(Vector)、Mask算子(Vector)、SoftMax算子(Vector)融合为一个融合算子。
融合算子通常有如下优势:
- 减少计算量:融合算子可以将多个算子合并为一个,简化计算过程,减少计算量,提高计算效率。
- 减少内存占用:融合算子可以将多个算子的中间结果合并为一个,从而减少内存占用,提高内存利用率。
- 优化数据流:融合算子可以优化数据流,减少数据在不同算子之间的传输,从而提高数据处理效率。
- 简化代码实现:融合算子可以简化代码实现,减少代码量,提高代码可读性和可维护性。
融合算子列表
除了本文档提供的融合算子外,您还可以单击Link获取开源的融合算子。