英特尔至强融核处理器上的异步并行迪杰斯特拉算法
1. 异步并行迪杰斯特拉算法及性能评估
为了最小化核心之间的同步开销,提出了英特尔至强融核(Intel Xeon Phi)上的异步并行迪杰斯特拉算法及其各种变体。
1.1 基于锁的异步并行迪杰斯特拉算法
算法架构
该算法由多轮迭代组成,主要包括以下步骤:
1. LocalScan(G, pid) :从每个线程维护的堆中选择 NUM_SCAN_PER_ITER 个活跃顶点执行 Scan(v) 操作。若执行 Scan(v) 后发现新的可更新顶点 v′ ,若 v′ 属于当前线程,则插入本地堆;否则插入相应的待处理栈 pendingstacki 。
2. LocalUpdate(G, pid) :将本地待处理栈中的所有顶点移动到本地堆。
3. CheckForTermination(G, pid) :终止条件是所有本地堆和待处理栈为空。
graph LR
A[开始] --> B[LocalScan]
B --> C[LocalUpdate]
C --> D{CheckForTermination}
D -- 未结束 --> B
D -- 结束 --&
超级会员免费看
订阅专栏 解锁全文
4777

被折叠的 条评论
为什么被折叠?



