NVIDIA CUDA初级教程视频 - 学习笔记(二)并行程序设计概述

一句话:并行计算是同时应用多个计算资源解决一个计算问题
 

并行处理:

搬砖模型

串行计算模式:

常规软件是串行的,设计运行于一个中央处理器上 (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

猜你喜欢

转载自blog.csdn.net/weixin_41703033/article/details/86512789