Ian Buck畅谈GPU计算背后的故事

2015 年 11 月 16 日

近日,GPGPU(General Purpose GPU)计算方面的资深专家、 NVIDIA(英伟达)公司的 GPU 计算软件总经理 Ian Buck 接受 The Next Platform 网站采访,畅谈了 GPU 计算背后的故事。

Ian Buck 对于 GPU 计算的研究最早起始于 2000 年。当时,Buck 及其在斯坦福大学的一个小团队敏锐观察到了图形处理器在性能方面的优势和发展趋势。在分辨率为 1024x768、刷新率为 60Hz 的情况下,GPU 仍然可以很好的实现图像的动态刷新显示。尽管 GPU 的执行指令只有 4-8 条,其包含的操作次数却为每秒 60 兆左右。Buck 团队开始思考如何将 GPU 应用于游戏和图形处理之外的更多领域。

Buck 表示,将 GPU 用于通用计算的想法是从 GPU 支持可编程开始的。当时,为了更好的提高游戏图像的显示效果,GPU 提供了简单的编程接口。而 GPU 高并行度的计算潜力正好符合矩阵乘和很多线性代数操作的需求。因此,Buck 团队开始利用 GPU 非常有限的可编程能力探索了 GPU 在游戏图像之外的应用性能。

在最初几年,他们遇到了非常大的困难。尽管初步试验可以证实 GPU 用于通用计算的巨大潜力,推广这个想法却十分不易。一方面,GPU 厂商还没有意识到 GPU 可编程能力的重要性。因而,GPU 提供的图像 API 非常有限。另外一方面,Buck 团队的规模实在比较小。掌握计算机图像学相关知识的同时,又掌握分子动力学等相关应用领域的理论实在困难。

然而,Buck 团队开发的 GPU 通用计算方面先驱项目——Brook,最终打开了 GPGPU 的篇章。在 2004 年,Buck 加盟 NVIDIA 并开始集合相关的硬件和软件工程师创造 GPGPU 模型——CUDA。 Buck 曾表示,在 CUDA 的应用当中,最让其影响深刻的就是,乳腺癌检测和诊断的系统。与传统方法相比,采用支持 CUDA 编程的 Tesla GPU 后,医生能够更早、更精确地发现乳腺癌。而美国国家癌症研究所数据显示,基于 CUDA 的系统在运行蛋白质配体运算(用于研发治疗癌症和老年痴呆症的新药)时只需要原来 1/12 的时间。

此后,CUDA 开始受到越来越多的关注。然而,Buck 表示,他之前和来自很多工业界的人士交流发现,他们宁愿牺牲性能,也不愿接受一门新的语言。为了能够给相关编程人员提供很好的入门体验,从而便于 CUDA 的推广,CUDA 采用了已经流行的 C 语言作为基础。这样,编程人员就不需要去学习特定的显示芯片的指令或是特殊的结构,即可编写 GPU 上运行的程序。

CUDA 的核心设计理念就是计算机中的线程。与传统 CPU 中的 4、8 和 16 个线程不同,GPU 中的线程可以多达几万个。Buck 表示,看起来这些线程的管理是一件十分复杂的事情。但实际上,编程人员主要的困难在于如何发挥这些线程的优势,而不是管理这些线程。早期,CUDA 的性能主要依赖编程人员人工发现代码中可并行计算的部分。目前,随着 CUDA 库的发展,这方面的工作开始越来越自动化。CUDA 团队已经开发了很多石油、天然气和国防等相关产业所使用的科学计算方面的库。最终,2012 年发布的 Titan 超级计算机使用了 18688 个 NVIDIA Tesla K20 GPU 作为协处理器,标志着 GPGPU 在高性能计算方面的成功推广和应用。从 2011 年开始,Top 500 的超级计算机中至少有 50 台会使用 GPU 进行加速。而这些机器基本上也都出现在 Green 500 的列表中。

Buck 表示,CUDA 在超级计算领域的成功应用也迎来了很好的使用反馈。目前,Buck 在 NVIDIA 的团队就根据用户反馈开始探索 GPU 内存的管理方式。CUDA
6 就推出了一个新的软件内存管理特性,支持数据在 CPU 内存和 GPU 内存之间的自动转移。计划于明年面世的 NVIDIA Pascal GPU 架构则将配备 NVLink,使 GPU 和 CPU 之间的数据传输速度较现有的 PCI-Express 标准加快 5 至 12 倍。

此外,为了进一步减少编程工作,Cray、PGI 以及 NVIDIA 等领先的 HPC 供应商在 2011 年推出了 OpenACC 编程标准。该标准定义了一组标准化的、高层次的代码注释,使 C/C++ 和 Fortran 编程人员可以利用 GPU 加速代码运行。NVIDIA 在今年 7 月更是发布了全新 OpenACC 免费工具套件,让相关研究人员能够更多的关注科学本身。Buck 也一再强调,OpenACC 的初衷就是让用户“首先是个科学家,然后才是一个程序员”。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015 年 11 月 16 日 18:001334
用户头像

发布了 268 篇内容, 共 99.3 次阅读, 收获喜欢 14 次。

关注

评论

发布
暂无评论
发现更多内容

etcd的高可用

阿飞

架构师训练营 Week 11 总结

Wancho

Week 11 作业

鱼_XueTr

【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

冰河

高并发 架构设计 分布式限流 秒杀系统 异步削峰

第11周总结

上山砍柴

系统高可用

阿飞

架构师

极客大学架构师训练营第十一周学习总结

竹森先生

架构师训练营第十一周作业

子豪sirius

用户密码验证函数

任小龙

week11学习总结

burner

架构师训练营 - 第 11 周作业

Jam

用户密码验证函数

周冬辉

加密

架构师训练营第 0 期第 11 周作业

无名氏

第11周学习总结

刘卓

week11作业1

极客大学架构师训练营

极客时间架构师训练营 - week11 - 作业 2

jjn0703

极客大学架构师训练营

架构师训练营 第十一周 总结

CR

系统不可用的原因和解决方案

李广富

攻击与防护

GalaxyCreater

安全

架构师课作业 - 第十一周

Tulane

架构师训练营 第11周总结

Glowry

Week 11命题作业

Jeremy

WEB安全知识点汇总

林昱榕

WEB安全 漏洞

第11周作业

刘卓

架构师训练营 Week 11 作业

Wancho

极客大学架构师训练营 0 期 week 11 学习笔记

chun1123

安全 高可用系统的架构

高可用的系统架构

莫莫大人

极客大学架构师训练营

系统稳定高可用的方案以及用户密码验证函数

Acker飏

架构师训练营 第十一周 作业

CR

极客大学架构师训练营 0 期 week 11 作业

chun1123

高可用 密码校验

Flink算子状态-9

小知识点

scala 大数据 flink

Ian Buck畅谈GPU计算背后的故事-InfoQ