这一节课也相对简单,新的难点不多,简单梳理一下。
1 地址共享模型(续)
这张图展示了共享地址空间硬件架构的概念。根据图中的解释:
- 任何处理器都可以直接引用任何内存位置。这说明这种架构支持处理器对内存的直接访问。
- 以Intel Core i7处理器(Kaby Lake)为例, CPU核心和集成GPU通过一个环形互联(Ring/Interconnect)连接在一起,这样它们可以共享内存。
- 内存控制器连接到系统内存,负责管理内存访问。
总之,这种共享地址空间硬件架构允许任何处理器直接访问内存,而无需复杂的地址转换机制。这样可以提高整个系统的性能和并行处理能力。
环形互联
英特尔在”Sandy Bridge”微架构中引入环形互联(Ring Interconnect
)概念。
具体实现
- 在这个架构中,每个CPU核心都有一个L3缓存”slice”(2MB),并通过环形总线连接。
- 系统代理(System Agent)和图形处理单元(Graphics)也通过相同的环形总线连接。
- 每个L3缓存”slice”都连接到环形总线上两次。
通信机制
- 环形总线支持4种不同类型的消息传输:请求、snoop、应答和数据传输。
- 这样可以更好地支持处理器间的缓存一致性协议和数据共享。
性能优势
- 理论峰值带宽可达435GB/s,当每个核心访问其本地L3缓存slice时实现。
- 这种架构提高了内部总线的利用率和并行处理能力。
CrossBar && NUMA
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
之前进行其他操作:
- 发送操作 send()
- 调用立即返回,不会阻塞
- 发送缓冲区的数据在消息处理期间不能被调用线程修改
- 调用线程可以在等待消息发送时执行其他工作
- 接收操作 recv()
- 仅表明将来接收的意图,立即返回
- 使用 checksend() 和 checkrecv() 来检查实际的发送/接收状态
- 调用线程可以在等待接收消息时执行其他工作
3 算术强度
之前的课程中学习过, CPU运算是需要从内存中以caceh line
为单位加载数据, 然后进行运算, 因此, 如果完成一次运算所需的数据越少, 那么运算的效率就越高。因此提出了算术强度
(Arithmetic Intensity)的概念: 算术强度 = 计算量(如指令数)/ 通信量(如字节数)
受算术强度启发的优化方案
这里以之前的sober
矩阵运算为例, 原来的计算思路是, 以行为单位进行计算, 这样每次计算需要从另2个计算的线程中各自recv
一行数据, 然后进行计算, 这样计算的通信量很大, 因此计算强度很低:
因此可以将任务分配替换为正方形的网格划分, 从而减少通信量, 这在数学上就是将算术强度
从转化为这个问题: 周长相同的情况下, 什么形状的封闭图形的面积最大?
虽然圆才是周长相同的情况下面积最大的形状, 但是正方形明细更适合矩阵运算的网格划分
4 通信类型
这里将通信的类型进行了划分:
- 固有通信
Inherent communication
- 这是在执行算法过程中必须在处理器之间传输的信息
- 这种通信是算法本身所要求的,无法避免的
- 假设条件:
- 无限容量的缓存
- 最小粒度的数据传输
- 其他理想条件
- 人为通信
Artifactual communication
- 指除了固有通信之外的所有其他通信
- 这种通信源于系统实现的实际细节,比如:
- 缓存大小限制
- 数据对齐要求
- 系统架构限制
- 实现方式的选择
5 竞争
和共享地址空间一样, 消息传递模型也存在不少竞争问题, 这里直接看PPT吧。
这里梳理下优化方案:
扁平通信的优化
在消息传递模型中, Contention
主要是因为资源在短时间内接受大量请求的情况, 会导致性能下降。通过合理的架构设计可以减少这种Contention
的发生。这里典型的方案是彩玉类似租约的概念, 派生出自己的代理人, 从而减少Contention
的发生。
分布式队列的优化
这个优化方案之前已经介绍过了, 不同的队列可以相互窃取任务。