一句话:并行计算是同时应用多个计算资源解决一个计算问题
并行处理:
搬砖模型
串行计算模式:
常规软件是串行的,设计运行于一个中央处理器上 (CPU),通过离散的指令序列完成一个问题的解决,一条一条指令的执行,同时只有一条指令在执行
并行计算模式:
并行计算是同时应用多个计算资源解决一个计算问题,涉及多个计算资源或处理器,问题被分解为多个离散的部分,可以同时处理(并行),每个部分可以由一系列指令完成,每个部分的指令在不同的处理器上执行
Flynn 矩阵:
SISD:Single Instruction,Single Data 单指令单数据
SIMD:Single Instruction,Multiple Data 单指令多数据
MISD:Multiple Instruction,Single Data 多指令单数据
MIMD:Multiple Instruction,Multiple Data 多指令多数据
常见名词:
Task(任务)
Parallel Task (并行任务)
Serial Execution (串行执行)
Parallel Execution (并行执行)
Shared Memory (共享存储)
Distributed Memory (分布式存储)
Communications (通信)
Synchronization (同步)—— 破坏并行性,但必不可少
Granularity (粒度)—— 任务划分时每个任务大小
Observed Speedup (加速比)—— 比较时要控制变量
Parallel Overhead (并行开销)—— 进程通信、同步
Scalability (可扩展性)
存储器架构:
Shared Memory
Distributed Memory
Hybrid Distributed-Shared Memory
并行编程模型
共享存储模型Shared Memory Model
线程模型Threads Model
消息传递模型Message Passing Model
数据并行模型Data Parallel Model
具体实例
OpenMP
MPI
Single Program Multiple Data (SPMD)
Multiple Program Multiple Data (MPMD)
设计并行处理程序和系统
自动和手动并行
理解问题和程序
分块分割
通信
同步
数据依赖
• 负载均衡 —— 不患寡而患不均
• 粒度
• I/O
• 成本
• 性能分析和优化
通信和同步
Amdahl's Law
程序可能的加速比取决于可以被并行化的部分。
和维基定义不一样:维基百科:Amdahl's law