政府资助的学术研究在并行计算、流处理、实时着色语言以及可编程图形处理单元(GPU)等领域的探索,直接促成了GPU计算的发展。
政府资助的学术研究在并行计算、流处理、实时着色语言以及可编程图形处理单元(GPU)方面的工作,直接推动了GPU计算的诞生。如今,GPU被广泛应用于现代数据中心,并促成了当前人工智能(AI)的革命。生产GPU的公司Nvidia已经成为全球市值最高的公司。这一计算方式的转变以及由此带来的巨大经济价值,是超过30年政府资助研究的成果。政府资金不仅推动了许多关键技术创新的发展,还培养了大量学生,这些人才将相关技术带入工业界。
本文追溯了GPU计算的起源。我们首先介绍构成GPU计算基础的技术(并行计算、并行图形系统、可编程着色器以及流处理),随后详细说明这些技术如何被转移到Nvidia及其他公司,并最终应用于现代机器学习领域。
支撑技术
GPU计算建立在并行计算、并行图形系统以及流处理等早期研究成果之上。这些技术是在超过30年的政府资助学术研究中逐步发展起来的。
并行计算
在学习计算机时,人们通常会了解中央处理器(CPU)按顺序执行指令的模型。然而在现实中,芯片内部包含数十亿个晶体管,这些晶体管是并行切换的,并通过导线连接在一起。开关和导线是物理计算机的基本构件,它们是同时运作的。此外,晶体管的切换消耗的能量非常少,而通过导线进行通信则消耗更多能量。信号从一个位置传输到另一个位置需要能量,这种消耗随着距离增加而增大,在芯片之间通信时尤其显著。
虽然顺序计算机更容易理解,但实际上它仍然依赖大量并行工作的晶体管,并通过复杂的方式将结果组合成看似顺序执行的过程。这种“制造顺序假象”的方式在功耗和性能上都效率较低。随着晶体管数量的增加,这种低效问题会更加明显。因此,在现代半导体技术中,更自然的计算方式是设计并行计算机。GPU之所以比CPU更高效,是因为它本质上是大规模并行计算机。
GPU计算继承了早期并行计算的成果。与所有并行系统一样,GPU上的线程必须进行同步和通信。通信用于让一个线程使用另一个线程产生的数据,而同步则用于确保数据在被使用时已经准备就绪。许多关于并行计算、同步和通信的基础理论都来自政府资助的研究。例如DARPA资助的Cosmic Cube项目在并行计算方面奠定了重要基础,其思想后来被应用于多种并行计算机系统中。此外,J-Machine和M-Machine项目开发了低开销通信与同步机制,使得细粒度并行成为可能。
并行图形系统
与传统并行计算相比,并行图形与图像计算的历史较少被关注,但同样重要。图像处理需要极高的计算量。例如,如果一台每秒执行一百万条指令的计算机对一张百万像素图像的每个像素执行一次运算,就需要整整一秒时间。而现代电影中的图像生成,每个像素需要大约十亿次浮点运算。因此,图形与图像处理必须依赖高性能并行计算系统。
早期的重要研究包括斯坦福的Geometry Engine项目,该项目促成了Silicon Graphics公司的成立,并定义了现代GPU架构的雏形。此外,还有Pixel Planes系统、NASA的大规模并行处理器以及Pixar图像计算机等。
最早的GPU实现的是固定功能的图形流水线,类似早期的SGI工作站。1999年发布的Nvidia GeForce 256被认为是第一款商业GPU。
后来,RenderMan系统引入了着色语言,使用户能够自定义复杂的材质与光照效果。随着实时着色语言的发展,着色器(shader)成为GPU编程的重要组成部分,并最终推动了通用GPU计算(GPGPU)的兴起。
流处理
流处理是一种特殊形式的并行计算,其目标是提高计算密度(计算与内存带宽的比值)。由于数据通信消耗大量能量,流处理通过减少内存访问来提升效率。
流处理的两个核心思想是:第一,利用生产者-消费者局部性,让数据在计算阶段之间直接传递,而无需写入内存;第二,将计算组织为“核函数”(kernel),每个核函数处理一批数据并输出结果。这种方式显著减少了内存访问次数,提高了整体效率。
Imagine流处理器和Merrimac项目进一步发展了这一思想,并提出了适用于科学计算的架构。Stream-C和Brook等编程语言也相继出现,使得流处理模型可以应用于GPU。
例如,矩阵乘法是典型的高计算密度任务,也是现代神经网络的核心计算之一。GPU在执行这类任务时表现出极高效率。此外,分子动力学模拟等科学计算也成为GPU的重要应用领域。
GPU的一个关键特性是多层次并行性:每个GPU包含多个核心,每个核心又包含SIMD单元,并支持多线程执行。例如某些GPU可以同时执行数十万个任务,从而实现极高吞吐量。
技术转移
GPU计算的发展不仅依赖技术,还依赖人才流动。斯坦福的流处理研究成果通过人员流动被带入Nvidia。Brook语言最终演化为CUDA,使GPU编程变得更加易用。
随着CUDA的推广,大量学生和工程师开始学习并行编程,从而推动GPU计算的普及。
推动人工智能
现代机器学习依赖三个关键要素:海量数据、大规模模型以及强大的计算能力。虽然核心算法早已存在,但GPU提供了训练这些模型所需的计算能力。
随着AlexNet和GPT等成果的出现,AI能力迅速提升。GPU计算成为这一进步的关键推动力。此外,学术界与工业界的合作(如Nvidia与斯坦福的合作)也加速了深度学习的发展。
结论
GPU计算背后的核心技术主要来源于长达30年的政府资助学术研究。并行计算、并行图形系统以及流处理为GPU奠定了基础。通过人才流动,这些技术被转移到工业界,并最终形成了现代GPU计算平台。GPU提供的高效、易编程以及高性能计算能力,使得机器学习得以快速发展,成为当今人工智能革命的关键支柱。