4.6 KiB
第4章 数据级并行 - 章节习题与答案详解
习题汇总
题目1(曲冠南老师)
出处:qgn老师,第4章PPT Slide 4-5
原题:
思考:一个SPMD程序如何运行在SISD(或MIMD)上?
题目2(李宏图老师)
出处:lht老师(两版本共有),PPT中
原题:
思考:一个数据并行程序如何运行在SISD(或MIMD)上?
题目3(谭婧炜佳老师)
出处:tjwj老师,第4章PPT Slide 4-95
原题:
思考:Nvidia GPU中不包含以下哪(几)种设计思想?
SIMD
多线程
MIMD
VLIW
乱序执行
Tomasulo
参考答案与详细解析
题目1答案
参考答案:
一个SPMD程序可以通过以下两种方式运行在SISD或MIMD上:
方式一:SISD上运行(单核单线程串行化执行)
- 将Multiple Data(多数据)拆成多次Single Data(单数据)
- 变为SISD(单指令单数据)模式
- 每次只处理一个数据元素,通过循环遍历所有数据
- 问题:排队、耗时、耗电
方式二:MIMD上运行(多核多线程并行化执行)
- 将Single Program(单程序)的每条指令多次重复
- 变为MIMD(多指令多数据)模式
- 多个线程/核心同时执行相同的程序,但处理不同的数据
- 问题:取址、译码操作冗余
考点:SPMD编程模型的理解,以及数据级并行在不同体系结构上的实现方式。
原理:
- SPMD(Single Program Multiple Data)是并行编程的一种模型,多个进程/线程执行同一个程序但使用不同的输入数据
- SISD(Single Instruction Single Data)是传统的串行处理器模式
- MIMD(Multiple Instruction Multiple Data)是多核并行处理模式
- 数据级并行的核心是对大量的数据施加同种变换
题目2答案
参考答案:
一个数据并行程序可以通过以下两种方式运行在SISD或MIMD上:
方式一:SISD上运行(单核单线程串行化执行)
- 将Multiple Data拆成多次Single Data
- 变为SISD模式
- 通过循环逐个处理数据元素
方式二:MIMD上运行(多核多线程并行化执行)
- 将Single Program的每条指令多次重复
- 变为MIMD模式
- 多核并行处理不同数据
考点:数据级并行(Data-Level Parallelism, DLP)概念的理解,以及SPMD模型与底层硬件的映射关系。
原理:
- 数据级并行的核心思想是对大量数据施加相同操作
- SPMD模型中多个线程执行相同程序但处理不同数据
- 在SISD上需要串行化,效率较低
- 在MIMD上虽然可以并行,但每个核心仍需独立取址译码,存在冗余
题目3答案
参考答案:
Nvidia GPU中不包含以下设计思想:
乱序执行(Out-of-Order Execution) Tomasulo算法
解析:
| 设计思想 | 是否包含 | 说明 |
|---|---|---|
| SIMD | 包含 | GPU计算单元采用SIMD方式执行 |
| 多线程 | 包含 | GPU以warp为单位调度大量线程 |
| MIMD | 不包含 | GPU不采用MIMD架构 |
| VLIW | 不包含 | Nvidia GPU不采用VLIW |
| 乱序执行 | 不包含 | GPU采用顺序执行(In-Order) |
| Tomasulo | 不包含 | Tomasulo是CPU中的动态调度算法,GPU不使用 |
考点:GPU的微体系结构设计特点,与传统CPU架构的区别。
原理:
-
SIMD:GPU的SP(Streaming Processor)以SIMD方式执行,同一指令操作多个数据
-
多线程:GPU采用SIMT(Single Instruction Multiple Thread)技术,以warp(32个线程)为单位调度大量线程,通过细粒度多线程掩盖访存延迟
-
MIMD:GPU不采用MIMD架构。GPU的设计理念是大量简单执行单元协同工作,而非多个独立指令流
-
VLIW:Nvidia GPU不采用VLIW(Very Long Instruction Word)。VLIW将调度工作交给编译器,而GPU采用硬件动态调度和SIMT
-
乱序执行:GPU采用顺序执行(In-Order),不进行动态调度。GPU通过大量warp的交替调度来掩盖延迟,而非依赖乱序执行
-
Tomasulo:Tomasulo算法是CPU中用于动态调度的算法(如IBM POWER系列),通过寄存器重命名和 Reservation Station 实现乱序执行。GPU不采用此技术,而是依赖SIMT和warp调度器
GPU设计思想总结:
- GPU追求极高的并行吞吐率,将大量晶体管用于计算而非控制逻辑
- GPU采用SIMT执行模型,结合了SIMD的效率和多线程的灵活性
- GPU通过硬件线程调度器管理大量warp,而非软件编译器调度
- GPU使用标量ISA,硬件负责将标量线程组合成SIMD执行