Files
2026-05-16 17:16:51 +08:00

233 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第四章 数据级并行 - 考试考点精细化梳理
---
## 考点分级
### 【必考核心考点】
#### 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执行模型选择题/简答题必考)
**核心考法**:选择题、填空题、简答题(★★★★★)
**核心概念**
- SIMTSingle Instruction Multiple Thread单指令多线程
- Warp32个线程为一组同时执行相同指令
- ThreadGPU调度的基本单位
**SIMT vs SIMD**
| 特性 | SIMD | SIMT |
|------|------|------|
| 执行单位 | 向量lanes | Warp threads |
| 灵活性 | 同一指令 | 可分支divergence |
| 调度 | 硬件静态 | 硬件动态 |
| 编程模型 | 隐式 | 显式CUDA/OpenCL |
**考试重点**
- 理解SIMT如何结合SIMD和多线程优势
- 理解warp调度和线程切换机制
- 理解GPU如何通过大量warp切换掩盖访存延迟
**常见陷阱**
- 将SIMT等同于SIMD
- 混淆"warp"和"线程块"概念
**答题话术**
```
GPU采用SIMTSingle 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编程模型
**核心考法**:选择题、简答题(★★★★☆)
**核心概念**
- SPMDSingle 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. MIMDGPU采用单一指令流SIMT不是多指令流
2. VLIWNvidia 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共享内存
```