233 lines
6.9 KiB
Markdown
233 lines
6.9 KiB
Markdown
# 第四章 数据级并行 - 考试考点精细化梳理
|
||
|
||
---
|
||
|
||
## 考点分级
|
||
|
||
### 【必考核心考点】
|
||
|
||
#### 1. 向量体系结构三种计算方式(选择题/简答题高频)
|
||
|
||
**核心考法**:选择题、填空题、简答题(★★★★★)
|
||
|
||
**三种计算方式**:
|
||
|
||
| 方式 | 别名 | 特点 | 适用场景 |
|
||
|------|------|------|----------|
|
||
| 横向计算(Horizontal) | 点积计算 | 一个元素操作后切换到下一行 | 不适合向量机 |
|
||
| 纵向计算(Vertical) | 向量点积 | 所有元素执行相同操作 | 向量机最佳 |
|
||
| 分组计算(Strip Mining) | 分段开采 | 按向量长度分段处理 | 解决向量长度限制 |
|
||
|
||
**向量计算模式**:
|
||
```
|
||
横向:for(i=0;i<N;i++) for(j=0;j<M;j++) C[i][j] = A[i][j] + B[i][j]
|
||
纵向:for(i=0;i<N;i++) for(j=0;j<M;j++) C[j] = A[j] + B[j] (按列操作)
|
||
分组:按向量长度VL分段,每次处理VL个元素
|
||
```
|
||
|
||
**考试重点**:
|
||
- 区分三种计算方式的特点
|
||
- 理解为什么向量机采用纵向/分组计算而非横向
|
||
- 能判断给定计算属于哪种方式
|
||
|
||
**常见陷阱**:
|
||
- 将"分组计算"等同于"分段开采"(实质相同)
|
||
- 混淆"编队"和"链接"概念
|
||
|
||
**答题话术**:
|
||
```
|
||
向量处理机的三种计算方式:
|
||
|
||
1. 横向计算(Horizontal):每个向量元素依次执行操作,
|
||
每次操作后需切换到下一个元素。不适合向量机,因为
|
||
无法发挥向量指令优势。
|
||
|
||
2. 纵向计算(Vertical):所有元素执行相同操作,
|
||
如向量加法、向量乘法。适合向量机,效率最高。
|
||
|
||
3. 分组计算(Strip Mining):当向量长度超过机器限制时,
|
||
将向量分成多个组,每组按纵向方式处理。
|
||
解决向量长度无限大的问题。
|
||
```
|
||
|
||
**得分要点**:能正确说出三种方式的名称和主要特点是基本要求。
|
||
|
||
---
|
||
|
||
#### 2. GPU的SIMT执行模型(选择题/简答题必考)
|
||
|
||
**核心考法**:选择题、填空题、简答题(★★★★★)
|
||
|
||
**核心概念**:
|
||
- SIMT(Single Instruction Multiple Thread):单指令多线程
|
||
- Warp:32个线程为一组,同时执行相同指令
|
||
- Thread:GPU调度的基本单位
|
||
|
||
**SIMT vs SIMD**:
|
||
| 特性 | SIMD | SIMT |
|
||
|------|------|------|
|
||
| 执行单位 | 向量lanes | Warp threads |
|
||
| 灵活性 | 同一指令 | 可分支(divergence) |
|
||
| 调度 | 硬件静态 | 硬件动态 |
|
||
| 编程模型 | 隐式 | 显式(CUDA/OpenCL) |
|
||
|
||
**考试重点**:
|
||
- 理解SIMT如何结合SIMD和多线程优势
|
||
- 理解warp调度和线程切换机制
|
||
- 理解GPU如何通过大量warp切换掩盖访存延迟
|
||
|
||
**常见陷阱**:
|
||
- 将SIMT等同于SIMD
|
||
- 混淆"warp"和"线程块"概念
|
||
|
||
**答题话术**:
|
||
```
|
||
GPU采用SIMT(Single Instruction Multiple Thread)执行模型:
|
||
|
||
1. Warp是GPU调度的基本单位,包含32个线程
|
||
2. 同一warp内所有线程执行相同指令,但处理不同数据
|
||
3. 当线程分支(if/else)时,不执行的线程被屏蔽
|
||
4. GPU通过快速切换warp来掩盖访存延迟
|
||
|
||
SIMT相比SIMD的优势:
|
||
- 支持线程级并行,可处理条件分支
|
||
- 硬件动态调度,无需编译器调度
|
||
- 适合数据级并行工作负载
|
||
```
|
||
|
||
---
|
||
|
||
#### 3. GPU设计思想排除题(谭婧炜佳老师题目)
|
||
|
||
**核心考法**:选择题(★★★★★)
|
||
|
||
**题目特征**:
|
||
```
|
||
思考:Nvidia GPU中不包含以下哪(几)种设计思想?
|
||
A. SIMD B. 多线程 C. MIMD D. VLIW
|
||
E. 乱序执行 F. Tomasulo
|
||
```
|
||
|
||
**答案**:C( MIMD)、D( VLIW)、E( 乱序执行)、F( Tomasulo)
|
||
|
||
**解析表格**:
|
||
| 设计思想 | GPU是否包含 | 说明 |
|
||
|---------|-------------|------|
|
||
| SIMD | 包含 | GPU计算单元以SIMD方式执行 |
|
||
| 多线程 | 包含 | GPU以warp为单位调度大量线程 |
|
||
| MIMD | 不包含 | GPU是单一指令流 |
|
||
| VLIW | 不包含 | Nvidia GPU不采用VLIW |
|
||
| 乱序执行 | 不包含 | GPU顺序执行 |
|
||
| Tomasulo | 不包含 | CPU动态调度算法 |
|
||
|
||
**常见陷阱**:
|
||
- 误以为GPU是多核MIMD
|
||
- 将SIMT误认为是MIMD
|
||
|
||
**答题要点**:GPU采用单一指令流(SIMD)+ 多线程(SIMT),不是MIMD,不支持乱序执行。
|
||
|
||
---
|
||
|
||
### 【高频考点】
|
||
|
||
#### 4. 向量处理机优化技术
|
||
|
||
**核心考法**:选择题、简答题(★★★★☆)
|
||
|
||
**四大优化技术**:
|
||
1. **多车道(Multiple Lanes)**:多个执行单元并行
|
||
2. **链接(Pipelining)**:功能单元流水化
|
||
3. **编队(Clustering)**:多个功能单元分组
|
||
4. **分段开采(Strip Mining)**:处理长向量
|
||
|
||
**编队技术**:
|
||
```
|
||
编队是将向量功能单元分组,每组称为一个编队(cluster)。
|
||
同一编队内的功能单元可以并行工作,
|
||
不同编队之间需要通过向量寄存器文件通信。
|
||
```
|
||
|
||
---
|
||
|
||
#### 5. SPMD编程模型
|
||
|
||
**核心考法**:选择题、简答题(★★★★☆)
|
||
|
||
**核心概念**:
|
||
- SPMD(Single Program Multiple Data):单程序多数据
|
||
- 多个进程/线程执行相同程序,处理不同数据
|
||
|
||
**SPMD vs SIMD**:
|
||
| 特性 | SPMD | SIMD |
|
||
|------|------|------|
|
||
| 层次 | 编程模型 | 硬件架构 |
|
||
| 灵活性 | 可分支 | 同一指令 |
|
||
| 实现 | 软件 | 硬件 |
|
||
|
||
**典型题目**:SPMD程序如何在SISD或MIMD上运行?
|
||
|
||
**答题话术**:
|
||
```
|
||
SPMD程序在不同架构上的运行方式:
|
||
|
||
SISD上运行:
|
||
- 将Multiple Data拆成多次Single Data
|
||
- 通过循环逐个处理数据
|
||
- 变为SISD模式执行
|
||
|
||
MIMD上运行:
|
||
- 将Single Program的每条指令多次重复
|
||
- 多个核心同时执行相同程序
|
||
- 变为MIMD模式并行处理
|
||
```
|
||
|
||
---
|
||
|
||
### 【了解考点】
|
||
|
||
#### 6. VMIPS向量处理器
|
||
|
||
**考法**:选择题、填空题
|
||
|
||
**特点**:
|
||
- 8向量寄存器,每个64元素
|
||
- 2个乘法单元,2个加法单元
|
||
- 向量load/store单元
|
||
- 支持链接技术
|
||
|
||
---
|
||
|
||
## 典型思考题解题示范
|
||
|
||
**题目**:思考:Nvidia GPU中不包含以下哪几种设计思想?
|
||
|
||
**答案要点**:
|
||
```
|
||
Nvidia GPU不包含以下设计思想:
|
||
|
||
1. MIMD:GPU采用单一指令流(SIMT),不是多指令流
|
||
2. VLIW:Nvidia GPU采用硬件动态调度,不采用VLIW
|
||
3. 乱序执行:GPU采用顺序执行(In-Order)
|
||
4. Tomasulo:这是CPU中的动态调度算法,GPU不使用
|
||
|
||
GPU采用的设计思想:
|
||
- SIMD:计算单元以SIMD方式执行
|
||
- 多线程:warp调度器管理大量线程
|
||
- 硬件动态调度(SIMT)
|
||
- 标量ISA + 硬件组合成SIMD
|
||
```
|
||
|
||
---
|
||
|
||
## 本章核心概念速记
|
||
|
||
```
|
||
1. 向量三种计算:横向(不适合向量机)、纵向(适合)、分组/分段开采(解决长度限制)
|
||
2. SIMT:单指令多线程,warp=32线程,GPU调度基本单位
|
||
3. GPU不含:MIMD、VLIW、乱序执行、Tomasulo
|
||
4. GPU含:SIMD、多线程、SIMT、硬件动态调度
|
||
5. SPMD:编程模型,单程序多数据
|
||
6. 向量优化:多车道、链接、编队、分段开采
|
||
7. 编队:功能单元分组,减少向量寄存器带宽需求
|
||
8. GPU访存优化:coalescing合并访问、shared memory共享内存
|
||
``` |