1 计算机架构与并行计算
计算机架构
冯.诺依曼架构(哈佛架构)
明确指出计算机主要由四部分组成:
- 中央控制单元(Center Control Unit)
- 逻辑运算单元(Logic Unit)
- 输入输出(Input/Output)
- 数据内存和指令内存(Data Memmory & Zhiling Memmory)
架构图如下:

后来,出现了变体冯.诺依曼架构,主要区别是把数据内存和指令内存合并为统一内存
并行程序设计:本质上就是无限压榨硬件性能
根据指令和数据对计算机架构进行划分
主要分为以下四种:
- SISD:单指令单数据(一条指令只处理一个数据)
- SIMD:单指令多个数据(不同核心,指令是一样的,但是处理的数据不一样)
- MISD:多指令单个数据(扯淡,意思是多个指令处理一个数据,算力多烧得慌)
- MIMD:多指令多个数据(多个指令处理多个数据,通常包含单个指令处理多个数据(SIMD),需要计算核支持SIMD)

根据内存分布对计算机架构进行划分
-
共享内存的多处理器系统
这些节点挂载在同一个内存上,多个核心和缓冲区

-
分布式内存的多节点系统
类似于集群,一个机房里面有多个服务器,他们通过网络互动,这就是典型的分布式多节点系统

并行性
主要分为两种:
- 指令并行
- 数据并行
因此,并行可以是指令并行或数据并行,工作重心主要在数据并行任务上。
并行任务可以先了解CPU中的pThread和OpenMP。
- 数据并行切块并行
(1) 一维按块划分

(2) 二维按块划分

- 数据并行周期循环并行

区别:一个核心处理一块数据;多个核心处理一块数据的多个部分
如何评价一个计算机架构的性能呢?
NVIDIA给出一个一些指标
- 延迟: 一条指令从执行到结束所需要的时间,通常用
ns作为单位; - 带宽: 单位时间处理的数据量,通常用
M/s或者G/s表示; - 吞吐量: 单位时间内的运算数量,通常使用(GFlops)(十亿次浮点运算)表示;
- 运算速度:运算时间 / 运算次数
- 吞吐量:运算数量 / 运算时间

浙公网安备 33010602011771号