并行与分布式计算导论(二)编程模型与硬件模型

Section 2 编程模型与硬件模型

2.1 并行模型与结构

2.1.1 System Layers(不重要)

  1. 并行程序
  2. 编译器、运行环境
  3. 操作系统
  4. 微结构(硬件设备)

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的进一步细分

    • 共享内存的结构

在这里插入图片描述

  • 分布式内存结构

23

  • 混合型结构

1

  • 格点结构
    • 有局域网和/或广域网联接的分布式异构资源

猜你喜欢

转载自blog.csdn.net/Kaiser_syndrom/article/details/105185213