GPGPU 是图形处理单元 (GPU) 的一种更通用的形式。GPU 是一种最初为图形任务设计的处理器。PC 中的普通处理器旨在处理各种计算任务,而 GPU 则专为图形算法而设计。其基本原理在于,这类算法具有高度的并行性。因此,GPU 由许多小型处理单元组成,这些单元并行执行图形计算。
但图形并非唯一允许并行计算的算法类别。许多计算量巨大的任务,例如天气预报和 巴基斯坦电话数据 结构力学模拟,都基于矩阵和向量的操作,而这些操作在 GPU 上也能很好地运行。因此,GPU 成为大规模计算的主力也就不足为奇了。
为了使 GPU 能够执行更通用的非图形算法,开发了一种更通用的编程接口。这反过来又导致了硬件的优化,以适应这些更通用的任务,使其成为通用 GPU 或 GPGPU。例如,一些 GPGPU 现在支持双精度计算,而这并非图形处理的必要条件。
硬件
在高端显卡上, GPGPU 的处理单元数量可高达10,000 多个核心。但需要注意的是,这些核心并非独立运行:多个核心步调一致地运行,同时执行相同的计算,尽管每个核心针对不同的数据元素。换句话说,这是一种数据并行计算,而不是任务并行计算。
与处理单元数量同样重要的是 GPU 的内存。内存通常相对有限,大约只有几十 GB。事实上,内存架构的设计主要是为了实现高吞吐量,而不是存储大量数据。其理念是,只有当 GPGPU 实际工作时,数据才会驻留在 GPGPU 上。