并行与分布式计算导论(二)编程模型与硬件模型
Section 2 编程模型与硬件模型
2.1 并行模型与结构
2.1.1 System Layers(不重要)
- 并行程序
- 编译器、运行环境
- 操作系统
- 微结构(硬件设备)
2.1.2 三种并行编程模型(重要)
三种模型在展示给程序员的程序通讯的抽象结构上有所不同
不同的编程模型会影响程序员编程时的思路
Shared address space(SAS Model)
-
各个线程通过读写共享的变量来实现通讯 共享变量就像一个大的公告板
-
几个例子(明白SAS的大意即可,不比深入理解下面的计算机体系结构)
-
Non-uniform Memory Access
Message passing
-
各线程在自己的私有地址空间里运作 线程间通过收发消息交互
常用的库:MPI
硬件不需要在整个系统范围内装载和存储跨程序信息,只需要能够交换信息即可
-
注意,既可以在硬件执行共享地址空间的机器上搞message passing的抽象,也可以在不支持共享地址空间的机器上执行SAS 程序模型和机器类别的相关性是模糊的,只需要记住什么是编程模型,什么是硬件实现就行
Data parallel
-
历史上的DP是对一个array进行同一操作(例如克雷超级计算机就是一个向量处理器) 例如matlab的操作C=A+B,其中A,B,C都是向量 现在一般采取SPMD的编程形式(具体如下) map(function,collection) function独立的处理每一个元素,function可能是一个复杂的逻辑序列(从而用一个统一的function区分处理不同元素) 在map结束时,同步是隐含其中的 当function已经作用于集合的所有元素,map就返回了
编程模型强加在程序上的结构
SAS:对结构的强制性要求很少
MP:高度结构化的通讯
DP:非常死板的计算结构
-
DP程序对同一个集合的不同数据元素都执行相同的功能
现代实践(混合编程模型)
-
比较常见的实例 在同一个节点的内部多核之间使用共享地址空间 在节点层面使用massage passing
2.1.3 三种机器结构(不重要)
机器结构通常反映了硬件设备的能力
机器结构是一种硬件向软件呈现的抽象形式 (我不是很理解,原句为"Abstraction presented by the hardware to low-level software")
下面的东西比较ICS,我反正是不懂
Flynn分类法
-
XIYD 即X instruction Y Data,其中X、Y为single或multiple 从而有SISD MISD SIMD MIMD四种
SISD
实例:单核计算机——一个数据池,一个指令池,线性的处理任务
SIMD
MISD
MIMD
-
MIMD的进一步细分 共享内存的结构
-
分布式内存结构
-
混合型结构
-
格点结构 有局域网和/或广域网联接的分布式异构资源
下一篇:
redis sds结构的一点思考