【发布时间】:2017-08-08 09:42:37
【问题描述】:
我正在使用 MPI 实现分布式图像(灰度)卷积。我现有的模式是在根进程中将图像读取为一维扁平数组,然后将它们分散到所有进程(行分解),然后在根进程中执行MPI_Gather,然后再次将图像作为一维扁平阵列。显然,这并没有给出预期的结果,因为使用图像卷积,边界处的情况会变得很棘手。
因此,为了改进上述模式,我想实现所谓的ghost cell exchange 模式,其中进程在ghost rows. 中交换它们的行伪代码:
if (rank == 0) {
src = null
dest = rank + 1
}
if (rank == size - 1) {
src = rank - 1
dest = null
} else {
src = rank - 1
dest = rank + 1
}
MPI_SendRecv(&sendbuf[offset], slen, dest..
&recvbuf[offset], rlen, src);
如何为每个进程的“幽灵行”分配内存?我应该预先分配内存然后分散吗?我不想采用“自定义数据类型”解决方案,因为它对于我正在考虑的问题范围来说是一种过度杀伤力。
【问题讨论】:
标签: c++ mpi communication