Nvidia CUDA初级教程2 并行程序设计概述
视频:/video/BV1kx411m7Fk?p=3
讲师:周斌
本节内容:
为什么需要?怎么做?一些技术和概念
串并行计算模式
串行计算模式
常规软件时串行的 设计运行于一个中央处理器(CPU)上通过离散的指令序列完成一个问题的解决一条一条指令地执行同时只有一条指令在执行逻辑上定义的串行计算是这样,实际上前面我们也介绍过,在CPU中也有很多的指令级并行优化。
并行计算模式
并行计算是同时应用多个计算资源解决一个计算问题 涉及多个计算资源或处理器问题被分解为多个离散的部分,可以同时处理(并行)每个部分可以由一些列指令完成 每个部分的指令在不同的处理器上执行并行计算——概念和名词简介
Flynn矩阵
SISD (Single Instruction Single Data)SIMD (Single Instruction Multiple Data)MISDMIMD常见名词
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
存储系统的编址
并行编程模型
共享存储模型线程模型消息传递模型数据并行模型具体实例
OpenMPMPISingle Program Multiple Data SPMDMultiple 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:串行部分
程序可能的最高加速比取决于可以被并行化的部分(的占比)。