Stanford-CS149-并行计算-Lec06-笔记-局部性-通信-竞争

这一节课也相对简单,新的难点不多,简单梳理一下。

1 地址共享模型(续)

cpu-architecture

这张图展示了共享地址空间硬件架构的概念。根据图中的解释:

  1. 任何处理器都可以直接引用任何内存位置。这说明这种架构支持处理器对内存的直接访问。
  2. 以Intel Core i7处理器(Kaby Lake)为例, CPU核心和集成GPU通过一个环形互联(Ring/Interconnect)连接在一起,这样它们可以共享内存。
  3. 内存控制器连接到系统内存,负责管理内存访问。

总之,这种共享地址空间硬件架构允许任何处理器直接访问内存,而无需复杂的地址转换机制。这样可以提高整个系统的性能和并行处理能力。

环形互联

ring-interconnect

英特尔在”Sandy Bridge”微架构中引入环形互联(Ring Interconnect)概念。

  1. 具体实现

    • 在这个架构中,每个CPU核心都有一个L3缓存”slice”(2MB),并通过环形总线连接。
    • 系统代理(System Agent)和图形处理单元(Graphics)也通过相同的环形总线连接。
    • 每个L3缓存”slice”都连接到环形总线上两次。
  2. 通信机制

    • 环形总线支持4种不同类型的消息传输:请求、snoop、应答和数据传输。
    • 这样可以更好地支持处理器间的缓存一致性协议和数据共享。
  3. 性能优势

    • 理论峰值带宽可达435GB/s,当每个核心访问其本地L3缓存slice时实现。
    • 这种架构提高了内部总线的利用率和并行处理能力。

CrossBar && NUMA
crossbar

Crossbar:

  • Crossbar 指的是一种互连架构,它采用十字交叉的方式将各个核心连接在一起。
  • 这种架构可以让任何一个核心都能直接访问其他所有核心,提高了处理器的并行处理能力。
  • 在 SUN Niagara 2 处理器中,Crossbar 互连负责连接8个CPU核心,使它们可以相互通信和共享资源。

同时这里引出了CCX (Core Complex)的概念, 上面的Crossbar连接在一起的8个核心可以看做一个CCX (Core Complex):

CCX (Core Complex):

  • CCX 代表 Core Complex,是一个包含多个CPU核心的集成单元。
  • CCX 体现了处理器内部存在 NUMA (Non-Uniform Memory Access) 特性,不同CCX区域之间的内存访问延迟和带宽可能会有差异。
  • 软件优化需要考虑这种 NUMA 特性,合理调度线程和分配数据,才能发挥处理器的最佳性能。

2 消息传递模型

2.1 消息传递模型基础概念

另一种并行计算模型是消息传递模型(Message Passing Model), 这种模型中, 每个处理器都有自己的地址空间, 处理器之间通过消息传递来进行通信。

这里就不过多介绍了, 都是非常简单基础的概念, 观看课程视频或PPT即可。

2.2 消息传递的优化

消息传递一个常见的问题也是同步问题, 很多操作需要在recv之后才能进行, 这样就会导致性能问题。通常的解决方案是采用异步消息传递, 这样就可以在recv之前进行其他操作:

async-message-passing

  1. 发送操作 send()
  • 调用立即返回,不会阻塞
  • 发送缓冲区的数据在消息处理期间不能被调用线程修改
  • 调用线程可以在等待消息发送时执行其他工作
  1. 接收操作 recv()
  • 仅表明将来接收的意图,立即返回
  • 使用 checksend() 和 checkrecv() 来检查实际的发送/接收状态
  • 调用线程可以在等待接收消息时执行其他工作

3 算术强度

arithmetic-intensity

之前的课程中学习过, CPU运算是需要从内存中以caceh line为单位加载数据, 然后进行运算, 因此, 如果完成一次运算所需的数据越少, 那么运算的效率就越高。因此提出了算术强度(Arithmetic Intensity)的概念: 算术强度 = 计算量(如指令数)/ 通信量(如字节数)

受算术强度启发的优化方案

这里以之前的sober矩阵运算为例, 原来的计算思路是, 以行为单位进行计算, 这样每次计算需要从另2个计算的线程中各自recv一行数据, 然后进行计算, 这样计算的通信量很大, 因此计算强度很低:

sober-matrix

因此可以将任务分配替换为正方形的网格划分, 从而减少通信量, 这在数学上就是将算术强度从转化为这个问题: 周长相同的情况下, 什么形状的封闭图形的面积最大?

sober-matrix-grid

虽然圆才是周长相同的情况下面积最大的形状, 但是正方形明细更适合矩阵运算的网格划分

4 通信类型

这里将通信的类型进行了划分:

  1. 固有通信Inherent communication
  • 这是在执行算法过程中必须在处理器之间传输的信息
  • 这种通信是算法本身所要求的,无法避免的
  • 假设条件:
    • 无限容量的缓存
    • 最小粒度的数据传输
    • 其他理想条件
  1. 人为通信Artifactual communication
  • 指除了固有通信之外的所有其他通信
  • 这种通信源于系统实现的实际细节,比如:
    • 缓存大小限制
    • 数据对齐要求
    • 系统架构限制
    • 实现方式的选择

5 竞争

和共享地址空间一样, 消息传递模型也存在不少竞争问题, 这里直接看PPT吧。

这里梳理下优化方案:

扁平通信的优化
在消息传递模型中, Contention主要是因为资源在短时间内接受大量请求的情况, 会导致性能下降。通过合理的架构设计可以减少这种Contention的发生。这里典型的方案是彩玉类似租约的概念, 派生出自己的代理人, 从而减少Contention的发生。

flat-communication

分布式队列的优化
这个优化方案之前已经介绍过了, 不同的队列可以相互窃取任务。

distributed-queue