认识英伟达的伊恩·巴克
感谢您今天抽出时间聊天。让我们从一些基础知识开始。您为什么不向我们的读者介绍一下您自己以及您目前在 Nvidia 的工作?
我是 Nvidia 的 GPU 计算软件总监。我的主要工作重点是构建和发展一个完整的 GPU 计算平台,包括系统软件、开发工具、语言和编译器方向、库以及目标应用程序和算法。在一支优秀团队的帮助下,我们开发了最终用户软件,并为 Nvidia 内部的 GPU 计算设定了方向。
为什么我们不从头开始呢?我想您对 GPGPU 的兴趣并不是在您 5 岁时开始的——普林斯顿大学或斯坦福大学发生的哪些事件真正让您发现了对 GPGPU 的兴趣?
在普林斯顿大学的日子里,我确实涉足了 GPU 计算,在图形硬件上试验热对流和流体模拟,当时是 SGI O2。尽管事情非常有限,但很难为它提出理由。
在斯坦福大学攻读博士学位期间,我开始认真研究 GPU 计算。在斯坦福大学,我和研究界的其他人意识到可编程图形的自然发展是 GPU 向更通用的处理器的演变。我们写了一篇关于使用 DX9 级 GPU 硬件进行光线追踪的 SIGGRAPH 论文来帮助证明这一点。这项工作的最大动力在于,这种在每个人的 PC 上都可用的商品处理器遵循摩尔定律的立方性能增长率,比 CPU 快得多。这就引出了一个问题:如果 PC 的计算能力比现在高出几个数量级,它还能做什么?计算科学以及计算机视觉、人工智能、数据挖掘和图形学的彻底改变游戏规则。
你在布鲁克的角色是什么?
在研究了在 GPU 上进行光线追踪的能力之后,我在斯坦福大学的研究重点转向了解 GPU 计算的正确编程模型。当时,许多其他人已经表明 GPU 擅长各种不同的应用程序,但没有一个好的框架或编程模型来说明应该如何将 GPU 视为一种计算设备。当时,需要计算机图形学博士学位才能将应用程序移植到 GPU。所以我开始了 Brook 项目,目标是定义一种用于 GPU 计算的编程语言,它将 GPU 的图形学抽象为更通用的编程概念。Brook 的基本编程概念是“流”,它是需要类似工作的数据元素的集合。布鲁克最终成为我在斯坦福大学的博士论文。
您的工作始于斯坦福流媒体超级计算机 Merrimac。这与特斯拉之类的东西有什么不同?
Brook 的编程模型概念不仅仅适用于 GPU。在斯坦福,我们研究了 Brook 编程模型的两种不同实现:一种用于 GPU,另一种用于 Merrimac,这是一种在斯坦福开发的研究架构。作为 Merrimac 的一部分开创的许多想法确实影响了如何改进 GPU 以用于通用计算。还应该指出的是,斯坦福大学 Merrimac 的首席研究员 Bill Dally 现在是 Nvidia 的首席科学家。
CUDA 是否起源于 Gelato?GPGPU的第一次学术探索是什么?第一次商业化使用呢?
我在斯坦福大学完成研究时开始了 CUDA。Nvidia 已经非常支持我的研究,并且清楚地看到了在硬件方面更好地启用 GPU 计算的潜力。我在 2005 年加入 Nvidia,开始了 CUDA 项目。当时,只有我自己和另一位工程师。我们现在已经将该项目发展成为今天的组织,并且是当今 Nvidia GPU 的核心组件。
www.gpgpu.org 提供了一段很好的 GPU 计算历史,可以追溯到 2002 年。
目前,AMD 将 Brook 作为 GPGPU 的首选编程语言,而 Nvidia 则使用带有 CUDA 扩展的 C。您如何比较两者的优势/劣势?
从 Nvidia 开始,我们有机会重新审视 Brook 的一些基本设计决策,这些决策主要基于 DX9 级硬件可以实现的功能。关键限制之一是内存模型的约束,这要求程序员围绕相当有限的内存访问模式映射他们的算法。使用带有 CUDA 扩展的 C,我们放松了这些限制。从根本上说,程序员只是被赋予了一个庞大的线程池,并且可以以他或她希望的任何方式访问内存。这一改进以及其他一些改进使我们能够在 GPU 上实现完整的 C 语言语义。