扩展OpenSHMEM聚合支持与MPI容错通信的研究
立即解锁
发布时间: 2025-08-31 00:20:45 阅读量: 6 订阅数: 25 AIGC 

### 扩展 OpenSHMEM 聚合支持与 MPI 容错通信的研究
在高性能计算领域,随着系统规模的不断扩大,对高效通信和容错能力的需求也日益增长。本文将介绍 OpenSHMEM 中聚合支持的扩展应用,以及 MPI 中容错组集体通信的创建与修复方法。
#### OpenSHMEM 聚合支持扩展应用
##### Indexgather 操作
Indexgather 与直方图操作类似,但方向相反。它是处理单元(PE)从分布式数组的随机位置收集数据到本地数组的一种模式。每个 PE 生成一个随机元素列表,然后进行连续的远程读取操作来获取这些元素。
为了更好地进行比较,经典 AGP 代码的 Bale 版本进行了修改,采用了 OpenSHMEM 1.4 规范中新增的非阻塞获取操作。修改后的 AGP 版本需要一个安静操作来确保非阻塞操作完成。以下是使用 AGP 和上下文版本的 Indexgather 代码对比:
```c
// Listing 5. Indexgather Using AGP
for (int64_t i = 0; i < l_num_req; i++) {
shmem_int64_get_nbi (&tgt[i], &table[pckindx[i] >> 16], 1, pckindx[i] & 0xffff);
}
shmem_quiet ();
shmem_barrier_all ();
// Listing 6. Indexgather Using Contexts
for (int64_t i = 0; i < l_num_req; i++) {
shmem_ctx_int64_get_nbi(ctx, &tgt[i], &table[pckindx[i] >> 16], 1, pckindx[i] & 0xffff);
}
shmem_ctx_quiet (ctx);
shmem_barrier_all ();
```
实验结果表明,与 OpenSHMEM 的非阻塞获取操作相比,聚合上下文可将性能提高多达 9 倍,而传送带版本最多可提高 16 倍。与直方图操作相比,Indexgather 还有一定的提升空间,主要是因为其数据包效率不够高。
使用 OSU 消息速率测试对非阻塞 OpenSHMEM 获取例程进行比较时,OSU 基准测试的消息速率提升高达 47 倍。这可能是由于 OSU 基准测试的规则访问模式以及对单边 RDMA 网络原语的独家使用。
##### 稀疏矩阵转置
稀疏矩阵转置在线性代数和机器学习算法中非常有用。输入矩阵采用压缩稀疏行(CSR)格式编码,这使得聚合操作变得困难,因为 PE 需要同步以找到合适的目标位置才能写入数据。
该操作分为两个阶段:第一阶段使用直方图模式确定每列的非零元素数量;第二阶段获取每个值的新位置并将其写入目标 PE。以下是 AGP 版本和上下文版本的第二阶段代码:
```c
// Listing 7. Transpose Phase 2 Using AGP
for (int64_t row = 0; row < A->lnumrows; row ++) {
for (int64_t j = A->loffset[row]; j < A->loffset[row + 1]; j++) {
int64_t pos = shmem_atomic_fetch_add (&shtmp[A->lnonzero[j] / npes], npes, A->lnonzero[j] % npes);
shmem_int64_p (&(*At)->nonzero[pos / npes], row * npes + me, pos % npes);
if (A->value != NULL)
shmem_double_p (&(*At)->value[pos / npes], A->lvalue[j], pos % npes);
}
}
shmem_barrier_all ();
// Listing 8. Transpose Phase 2 Using Contexts
int64_t *pos[A->lnumrows ];
for (int64_t row = 0; row < A->lnu
```
0
0
复制全文
相关推荐







