【GPGPU编程模型与架构原理】第二章 2.1 计算模型

  本章介绍以CUDA和OpenCL 并行编程中的一些核心架构概念来展示GPGPU的计算、编程和存储模型。本章还介绍虚拟指令集和机器指令集,逐步揭开GPGPU体系结构的面纱。

2.1 计算模型

计算模型是编程框架的核心,计算模型需要根据计算核心的硬件架构提取计算的共性工作方式。

作为首个GPGPU编程模型,CUDA 定义以主从方式结合SIMT 硬件多线程的计算方式。本节以典型的矩阵乘法为例介绍GPGPU所采用的计算模型。

2.1.1 数据并行和线程

在图形和其他应用中,大量数据具有良好的并行特性。这种数据的并行性使得处理器在计算过程中安全的对数据以一定的结构化方式同时进行操作。

典型例子就是矩阵乘法运算:结果矩阵中的每个元素的计算可以并行的进行。(每个元素都需要进行相同次数的点积运算)
【GPGPU编程模型与架构原理】第二章 2.1 计算模型_第1张图片

基于矩阵乘法这一数据并行性,可以设计多个计算单元同时执行矩阵中的点积运算。在GPGPU中,承担并行计算中每个计算任务的计算单元成为线程。每个线程会在一次计算任务过程中,执行相同的指令。

1	从输入矩阵A和B中读取一部分向量a, b
2	for (i = 0; i < N; i++)
3		c += a[i] + b[i];
4	将c写回结果矩阵C的对应位置中

每个线程从从矩阵A 和矩阵B中选取对应的行或列构成向量a和向量b,然后执行向量点积运算,最终将输出结果c保存到矩阵C中。

CUDA和OpenCL的编程模型基于GPGPU架构特点,对SIMT计算模型进行了合理的封装。

  • CUDA引入了线程网格(thread grid)、线程块(thread block)、线程(thread);
  • OpenCL 引入了N维网络(NDRange)、工作组(work-group)、工作项(work-item)等概念,

可以将计算任务灵活的映射到GPGPU层次化的硬件执行单元实现高效的并行,提高了处理器的执行效率。

你可能感兴趣的:(GPGPU编程模型与架构原理,GPGPU,通用图形处理器设计)