Nvidia CUDA初級教程2 并行程序設計概述
視頻:https://www.bilibili.com/video/BV1kx411m7Fk?p=3
講師:周斌
本節內容:
- 為什么需要?
- 怎么做?
- 一些技術和概念
串并行計算模式
串行計算模式
- 常規軟件時串行的
- 設計運行于一個中央處理器(CPU)上
- 通過離散的指令序列完成一個問題的解決
- 一條一條指令地執行
- 同時只有一條指令在執行
邏輯上定義的串行計算是這樣,實際上前面我們也介紹過,在CPU中也有很多的指令級并行優化。
并行計算模式
- 并行計算是同時應用多個計算資源解決一個計算問題
- 涉及多個計算資源或處理器
- 問題被分解為多個離散的部分,可以同時處理(并行)
- 每個部分可以由一些列指令完成
- 每個部分的指令在不同的處理器上執行
并行計算——概念和名詞簡介
Flynn矩陣
- SISD (Single Instruction Single Data)
- SIMD (Single Instruction Multiple Data)
- MISD
- MIMD
常見名詞
- Task 任務
- Parallel Task 并行任務
- Serial Execution 串行執行
- Parallel Execution 并行執行
- Shared Memory 共享存儲
- Distributed Memory 分布式存儲
- Communication 通信
- Synchronization 同步
- Granularity 粒度
- Observed Speedup 加速比
- Parallel Overhead 并行開銷
- Scalability 可擴展性
存儲器架構
-
Shared Memory
-
Distributed Memeory
-
Hybird Distributed-Shared Memory
存儲系統的編址
并行編程模型
- 共享存儲模型
- 線程模型
- 消息傳遞模型
- 數據并行模型
具體實例
- OpenMP
- MPI
- Single Program Multiple Data SPMD
- Multiple Program Multiple Data MPMD
設計并行處理程序和系統
-
自動和手動并行
-
理解問題和程序
理解問題、程序、算法,是我們設計并行處理系統的基礎
-
分塊分割
根據具體的任務,數據分塊、任務分割
-
通信
broadcast、scatter、gather、reduction
-
同步
barrer、lock/semaphore、synchronous communica
-
數據依賴
-
負載均衡
-
粒度
-
I/O
-
成本
-
性能分析和優化
加速比:
Amdahl’s Law speedupmax=11?Pspeedup_{max}=\frac{1}{1-P}speedupmax?=1?P1? speedup=1PN+Sspeedup=\frac{1}{\frac{P}{N}+S}speedup=NP?+S1?
PPP:并行部分,SSS:串行部分
程序可能的最高加速比取決于可以被并行化的部分(的占比)。