项目介绍
Transformer架构中矩阵乘法(GEMM, General Matrix Multiplication)计算占据重要比重,其性能优化对提升整体计算效率至关重要。针对GEMM类算子编程,不同场景不同优化点的实现变种众多,且在算法演进和创新过程中会诞生大量新的定制化开发诉求,难以事先预备枚举。直接基于硬件能力定制开发GEMM类算子面临着开发难度大,开发周期长的问题。为此,昇腾CANN推出CATLASS算子模板库,采用分层模块化设计,将GEMM计算解耦为可灵活组合的数据分块策略和计算单元配置等组件,实现快速搭建拼装的开发范式。
CATLASS算子模板库面向昇腾硬件亲和性优化,通过提供可复用的模板、基础组件和典型算子实践案例,使开发者能够基于模块化组装快速完成计算流水线编排。开发者可以根据具体硬件特性和计算需求灵活定制计算内核,在确保高性能的同时,显著提升开发效率。
CATLASS算子模板库采用分层抽象的设计理念,通过分析硬件架构特性和GEMM计算需求,将整体实现划分为多个层次。该设计通过模板化方式提取各层共性逻辑,同时保留必要的差异化扩展能力,使得不同层级的软件抽象能够精准对应到特定硬件结构和计算流水阶段。算法框架中的特定步骤会延迟到子类实现,使得子类能够在不改变算法整体结构的情况下,灵活重定义其中的某些关键步骤。
算子实现分层模块化设计

算子流水自定义灵活配置
模板库提供了灵活的开发方式,开发者可以复用预置的范式来快速实现基础功能,也能够针对特定需求修改模块进行定制开发,还可以通过更换组件来实现自定义的流水组合。这种设计在保证计算性能的同时,为开发者提供了充分的灵活性和拓展空间。

算子开发实践
算子模板库针对不同算子应用场景,提供了高性能的算子基础组件和算子模板实现样例。样例中包含了在昇腾硬件上可参考的实现,如高效数据搬运模式,异步流水编排技巧,高性能接口使用示例。基于这些示例开发者可以充分学习理解昇腾硬件的性能优化技术,从而针对各种优化实现场景高效完成自定义算子开发。相关样例已完全开源可供参考。
您可以参考下述文档逐步开启CATLASS开发之旅: