多核架构下的并行图划分技术解析
1. 核心概念:无定形数据并行性
无定形数据并行性是一种并行处理方式,在给定一组活动节点以及节点顺序的情况下,它允许同时处理活动节点,但需遵循邻域和顺序约束。与传统数据并行性相比,它具有以下特点:
- 并发操作可能相互冲突。
- 活动可以动态创建。
- 活动可能修改底层数据结构。
对于有序活动元素,活动的提交顺序必须与元素的顺序一致。
2. Galois系统:并行处理的利器
Galois系统是一套用于Java的数据结构和运行时系统,旨在让程序能够利用无定形数据并行性。
2.1 数据结构库
该系统提供了一系列并发实现的数据结构库,如常用的图、映射和集合等,适用于不规则算法。数据结构的实现需满足以下三个属性:
1. 数据结构上的操作必须表现为原子执行。
2. 应强制执行适当的邻域约束。
3. 在发生冲突时应支持回滚操作。
2.2 执行模型
数据结构存储在共享内存中,活动节点由多个线程处理。空闲线程会随机选择一个活动节点,并对其应用操作符。每个数据结构都会确保其邻域约束得到遵守,此过程由库代码而非应用代码完成。若邻域约束被违反,会向运行时系统报告冲突,系统会回滚其中一个冲突活动。为支持回滚,每个修改数据结构的库方法在修改前会复制数据。
2.3 运行时系统
Galois运行时系统负责协调应用程序的并行执行。 foreach
结构由多个线程执行,每个线程从Galois迭代器中获取一个活动节点并进行推测性执行,必要时回