MPI与线程编程:原理、实践与优化
1. MPI-2简介
MPI-2引入了远程内存访问(RMA)操作,其中一个重要的函数调用会阻塞,直到调用进程在指定窗口上发出的所有RMA操作在调用进程和目标进程都完成。这确保了调用进程对窗口条目的所有操作在目标进程生效。
1.1 RMA操作示例
以下是一个使用锁同步进行分布式数据结构迭代计算的示例:
while (!converged (A)) {
update(A);
update_buffer(A, from_buf);
MPI_Win_start(target_group, 0, win);
for (i=0; i<num_neighbors; i++) {
MPI_Win_lock(MPI_LOCK_EXCLUSIVE, neighbor[i], 0, win);
MPI_Put(&from_buf[i], size[i], MPI_INT, neighbor[i],
to_disp[i], size[i], MPI_INT, win);
MPI_Win_unlock(neighbor[i], win);
}
}
在这个示例中,使用了排他锁来保护RMA操作。
1.2 MPI编程练习
1.2.1 逻辑环通信程序
考虑以下不完整的MPI程序:
int rank
MPI与Pthreads并行编程解析
超级会员免费看
订阅专栏 解锁全文
31

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



