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 s p e e d u p m a x = 1 1 − P speedup_{max}=\frac{1}{1-P} speedupmax=1−P1 s p e e d u p = 1 P N + S speedup=\frac{1}{\frac{P}{N}+S} speedup=NP+S1
P P P:并行部分, S S S:串行部分
程序可能的最高加速比取决于可以被并行化的部分(的占比)。