General Matrix Multiplication or GEMM kernels take centre place in high performance computing and machine learning. Recent NVIDIA GPUs include GEMM accelerators, such as NVIDIA's Tensor Cores. Their exploitation is hampered by the two-language problem: it requires either low-level programming which implies low programmer productivity or using libraries that only offer a limited set of components. Because rephrasing algorithms in terms of established components often introduces overhead, the libraries' lack of flexibility limits the freedom to explore new algorithms. Researchers using GEMMs can hence not enjoy programming productivity, high performance, and research flexibility at once. In this paper we solve this problem. We present three sets of abstractions and interfaces to program GEMMs within the scientific Julia programming language. The interfaces and abstractions are co-designed for researchers' needs and Julia's features to achieve sufficient separation of concerns and flexibility to easily extend basic GEMMs in many different ways without paying a performance price. Comparing our GEMMs to state-of-the-art libraries cuBLAS and CUTLASS, we demonstrate that our performance is in the same ballpark of the libraries, and in some cases even exceeds it, without having to write a single line of code in CUDA C++ or assembly, and without facing flexibility limitations.


翻译:通用矩阵乘法或 GEMM 内核在高性能计算和机器学习中占据中心位置。 最近的 NVIDIA GPU 包括 GEMM 加速器, 如 NVIDIA 的 Tensor Cores 。 它们的利用受到两种语言问题的阻碍: 它需要低水平的编程程序, 意味着程序员生产率低, 或者使用只提供一套有限组成部分的图书馆。 因为固定组成部分的改写算法常常引入间接费用, 图书馆缺乏灵活性, 限制了探索新算法的自由。 因此, 使用 GNIMA 的研究人员无法同时享受编程生产率、 高性能和研究灵活性。 在本文中, 我们解决了这个问题。 我们向科学朱利亚编程语言中的 GEM 程序展示了三套抽象和接口。 界面和抽象设计是针对研究人员需要和Julia 特点的, 以便充分区分关切和灵活性, 以多种不同方式轻松地扩展基本 GEMM 。 将我们的 GEMM 与 最新图书馆 库 库 库 、 和 CUTLAS 的 CUDA 都没有任何灵活性。

0
下载
关闭预览

相关内容

【硬核书】矩阵代数基础,248页pdf
专知会员服务
86+阅读 · 2021年12月9日
一份简单《图神经网络》教程,28页ppt
专知会员服务
125+阅读 · 2020年8月2日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
154+阅读 · 2019年10月12日
【新书】Python编程基础,669页pdf
专知会员服务
195+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
94+阅读 · 2019年10月10日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
41+阅读 · 2019年10月9日
分布式并行架构Ray介绍
CreateAMind
9+阅读 · 2019年8月9日
移动端机器学习资源合集
专知
8+阅读 · 2019年4月21日
TorchSeg:基于pytorch的语义分割算法开源了
极市平台
20+阅读 · 2019年1月28日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
17+阅读 · 2018年12月24日
AI/ML/DNN硬件加速设计怎么入门?
StarryHeavensAbove
10+阅读 · 2018年12月4日
机器学习线性代数速查
机器学习研究会
19+阅读 · 2018年2月25日
【推荐】手把手深度学习模型部署指南
机器学习研究会
5+阅读 · 2018年1月23日
前端高性能计算(4):GPU加速计算
前端大全
7+阅读 · 2017年10月26日
【推荐】基于TVM工具链的深度学习编译器 NNVM compiler发布
机器学习研究会
5+阅读 · 2017年10月7日
【推荐】TensorFlow手把手CNN实践指南
机器学习研究会
5+阅读 · 2017年8月17日
Arxiv
0+阅读 · 2022年1月21日
Arxiv
8+阅读 · 2020年10月9日
Arxiv
7+阅读 · 2020年6月29日
TResNet: High Performance GPU-Dedicated Architecture
Arxiv
8+阅读 · 2020年3月30日
Arxiv
3+阅读 · 2018年3月13日
VIP会员
相关VIP内容
【硬核书】矩阵代数基础,248页pdf
专知会员服务
86+阅读 · 2021年12月9日
一份简单《图神经网络》教程,28页ppt
专知会员服务
125+阅读 · 2020年8月2日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
154+阅读 · 2019年10月12日
【新书】Python编程基础,669页pdf
专知会员服务
195+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
94+阅读 · 2019年10月10日
【SIGGRAPH2019】TensorFlow 2.0深度学习计算机图形学应用
专知会员服务
41+阅读 · 2019年10月9日
相关资讯
分布式并行架构Ray介绍
CreateAMind
9+阅读 · 2019年8月9日
移动端机器学习资源合集
专知
8+阅读 · 2019年4月21日
TorchSeg:基于pytorch的语义分割算法开源了
极市平台
20+阅读 · 2019年1月28日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
17+阅读 · 2018年12月24日
AI/ML/DNN硬件加速设计怎么入门?
StarryHeavensAbove
10+阅读 · 2018年12月4日
机器学习线性代数速查
机器学习研究会
19+阅读 · 2018年2月25日
【推荐】手把手深度学习模型部署指南
机器学习研究会
5+阅读 · 2018年1月23日
前端高性能计算(4):GPU加速计算
前端大全
7+阅读 · 2017年10月26日
【推荐】基于TVM工具链的深度学习编译器 NNVM compiler发布
机器学习研究会
5+阅读 · 2017年10月7日
【推荐】TensorFlow手把手CNN实践指南
机器学习研究会
5+阅读 · 2017年8月17日
Top
微信扫码咨询专知VIP会员