大数据与人工智能应用对计算能力(简称算力)的要求极高,为了应对飞速增长的算力需求,芯片与硬件厂商近年来重点发展了多核、集群(Cluster)和异构计算(Heterogeneous Computing)。图1.1展示了现代计算机的体系结构。
图1.1 现代计算机体系结构示意图
所谓多核,是指一台计算机上拥有多个中央处理器(Central Processing Unit,CPU),每个CPU包含多个计算核心(Core)。每个CPU内部配有自己的缓存,比如一级缓存(Level 1 Cache,L1 Cache)或二级缓存(Level 2 Cache,L2 Cache)。CPU外部则连接主存(Main Memory)。
所谓集群,是指多台计算机通过高速网络互联,每台计算机上都配备了网卡(Network Interface Card,NIC)。
近年来,以GPU为代表的异构计算异军突起,成为人工智能算力的核心。异构计算是指在CPU芯片微架构(Microarchitecture)的基础上,引入图形处理器(Graphics Processing Units)、现场可编程门阵列(Field Programmable Gate Array,FPGA)等另一套芯片微架构。在这种体系中,CPU仍负责传统的处理和调度任务,而GPU等设备则用于加速某些特定任务,比如图形图像处理、人工智能和区块链应用等。
现代CPU通常有多个计算核心,例如,笔记本电脑和台式机最多可拥有十几个计算核心,而数据中心服务器则可以高达上百个核心。然而,让计算任务有效地分配到多个核心上并非易事,需要程序员在编写软件时将计算任务合理地调度到不同核心上。
单台计算机的计算能力有限。为了搭建一个高速互联的集群,数据中心服务器之间通常配备了高速网络,如RoCE(RDMA over Converged Ethernet)或InfiniBand。每台计算机至少配有一块高速网卡,各台计算机之间通过光纤互联,以获得极低的延迟和极高的吞吐率。这样,不同节点之间的数据存取几乎像是在单个节点上一样高效。
在异构计算框架下,CPU和主存通常被称为主机(Host),而各类专用的加速器则被称为设备(Device)。尽管异构计算是一个宽泛的概念,但目前基于GPU的异构计算已成为主流,尤其是英伟达公司的GPU占据了大量市场份额。因此,这里主要以GPU为例介绍异构计算。GPU与CPU在芯片微架构和软件编译栈方面有所不同。在软件层面,英伟达的GPU提供了CUDA(Compute Unified Device Architecture)编程接口;在硬件层面,GPU包含大量专用计算核心(如CUDA核心或Tensor核心)和GPU专属的内存(GPU Memory)。通常,从主存到GPU内存之间数据传输会带来一定的时间开销。其他加速器的架构与英伟达GPU的架构有诸多相似之处。