使用CUTLASS实现高性能矩阵乘法

描述

        CUTLASS 是 CUDA C ++模板抽象的集合,用于在 CUDA 的所有级别和规模上实现高性能矩阵乘法( GEMM )。它结合了分层分解和数据移动的策略,类似于用于实现cuBLAS的策略。

  CUTLASS 将这些“运动部件”分解为 C ++模板类抽象的可重用和模块化的软件组件。这些线程范围、扭曲范围、块范围和设备范围的原语可以通过自定义平铺大小、数据类型和其他算法策略进行专门化和调优。由此产生的灵活性简化了它们在定制内核和应用程序中作为构建块的使用。

  为了支持多种应用程序, CUTLASS 为混合精度计算提供了广泛的支持,提供了专门的数据移动,并为以下各项提供了多重累积抽象:

  半精度浮点(FP16)、 BFloat16 (BF16)和张量浮点 32 (TF32)数据类型。

  单精度浮点(FP32)数据类型。

  双精度浮点(FP64)数据类型。

  整数数据类型(4b和8b)。

  二进制数据类型(1b)。

  此外, CUTLASS 演示了针对 NVIDIA Volta 、 Turing 和 Ampere 体系结构上实现的可编程、高通量 Tensor 核的扭曲同步矩阵乘法操作。

  CUTLASS 实现了高性能卷积(隐式 GEMM )。隐式 GEMM 是作为 GEMM 的卷积运算的公式。这允许 Cutslass 通过重用高度优化的 warp-wide GEMM 组件和以下组件来构建卷积。

  关于作者

  Matthew Nicely 于 2019 年 3 月加入 NVIDIA ,之前曾在美国 AL-Huntsville 的美国陆军航空和导弹研究开发与工程中心工作。在那里,他专注于 CUDA 算法开发和 Jetson 系列的优化。在 NVIDIA ,他曾在联邦部门工作,协助 CUDA 的开发和优化,以及在各种 NVIDIA 工具集上为客户提供教育和概念验证,最近转为 math libraries 产品经理。 2019 年,他获得了博士学位。计算机工程学位,专注于 GPU 的算法优化。

  审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分