虽然NVIDIA很早就提供闭源的cuBLAS/cuDNN底层线性库,但这些几乎都得对C/C++底层调用非常熟悉的编程人员才能驾驭得动,并且对GPU硬件架构的捆绑度高,如果要移植到新架构的时候,还需要耗费不少精力去进行优化,对于普及这些高性能/AI模型训练等应用制造不小的门槛。
全名为CUDA Template Abstractions for Linear Algebra Subroutines(线性代数子程序的CUDA模板抽象)的CUTLASS,是NVIDIA在2017年发布的一套专注于实现高性能GEMM(矩阵运算)及相关计算的开源库,是作为 cuBLAS/cuDNN 等库的底层实现范式参考,其主要特色如下:
底层模板抽象
这些抽象为广泛的计算提供了广泛的支持,包括
1.混合精度计算,包括FP64、FP32、TF32、FP16、BF16的乘法累加抽象;
2.专用数据移动,引入异步内存管理技术,通过 TiledCopy 组件优化数据搬运与计算的重叠,提升整体吞吐量
3.通过张量核心(Tensor Core)指令的FP32仿真、8b浮点类型(e5m2和e4m3);
4.块缩放数据类型(NVIDIA NVFP4和OCP标准MXFP4、MXFP6、MXFP8),CUTLASS提供了不同级别的并行化层次结构原语,可以通过自定义平铺大小、数据类型和其他算法策略进行专门化和调优。
5.窄整数类型(4b和8b有符号和无符号整数);
6.二进制1b数据类型(架构允许对这些数据类型的原生支持),
7.这些数据类型跨越NVIDIA的Volta、Turing、Ampere、Ada、Hopper和Blackwell架构。
通过C++模板实现GEMM的高性能计算,包括封装线程层次、数据布局和内存访问逻辑,屏蔽硬件细节等等。这样在更新GPU设备时,几乎可以不需要修改代码,只要用新版本编译器重新编译即可,非常大幅度提高应用的生命周期与使用范围。
保持性能优异
大部分人的刻板印象,就是抽象模板的方式可能会影响计算性能。不过CUTLASS原语是非常高效,当用于构建设备范围的GEMM内核时,对峰值理论吞吐量的利用率接近最优。下图显示了CUTLASS 3.8在NVIDIA Blackwell SM100架构GPU上运行时,在各种输入和输出数据类型上的性能占理论峰值利用率的百分比。
下图显示了自CUTLASS 3.1以来,NVIDIA H100(NVIDIA Hopper架构)的CUTLASS性能持续改进。其中CUTALSS 3.5.1是用CUDA 12.5u1工具包编译的,Tensor Core是使用CUDA的mma和wgmma指令实现的。
CuTe后端核心库:
这是NVIDIA在2024年的CUTLASS 3.0中新增的重要功能,用于描述和操作线程和数据的张量,是C++CUDA模板抽象的集合,用于定义和操作线程和数据的分层多维布局。
CuTe提供Layout和Tensor对象,紧凑地打包数据的类型、形状、存储空间和布局,同时为用户执行复杂的索引。这让程序员专注于他们算法的逻辑描述,而CuTe则为他们做机械簿记。有了这些工具,我们可以快速设计、实现和修改所有密集的线性代数运算。
CuTe的核心抽象是分层多维布局,可以用数据数组来表示张量。布局的表示足够强大,几乎可以表示实现高效密集线性代数所需的一切。布局也可以通过函数组合进行组合和操纵,我们在其上构建了一系列常见的操作,如平铺和分区。
CUTLASS 3.0及更高版本在其模板中的整个GEMM层次结构中采用了CuTe。这大大简化了设计,提高了代码的可组合性和可读性。
Python作为目前普及度最靠前并且上手度非常轻松的编程语言,如果缺少对这方面的支持,将会大大影响应用的普及程度。有鉴于此,NVIDIA在CUTLASS 4.0中新增加的最重要功能,就是对Python的支持。
CUTLASS基于前面版本对C++的内核编程抽象的丰富生态系统,以DSL(domain-specific languages)这些Python原生接口,用于基于核心CUTALSS和CuTe概念编写高性能CUDA内核,而不会对性能产生任何影响。这允许更平滑的学习曲线,更快的编译时间,与DL框架的原生集成,而无需编写粘合代码,以及更直观的元编程,不需要深厚的C++专业知识。
NVIDIA将CUTLASS DSL视为一个领域特定语言(DSL)家族,这个4.0发布的CuTe DSL算是第一个。这是一个低级编程模型,与CuTe C++抽象完全一致,暴露了布局、张量、硬件原子等核心概念,以及对硬件线程和数据层次结构的完全控制。
CuTe DSL演示了针对NVIDIA的Ampere、Hopper和Blackwell架构实现的可编程、高通量张量核心的最优矩阵乘法和其他线性代数运算,将成为学生、研究人员和性能工程师不可或缺的工具—使GPU编程的学习曲线变得平坦,快速原型化内核设计,并将优化的解决方案投入生产。
CuTe DSL目前处于公开测试阶段,将于2025年夏末正式发布。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有