【发布时间】:2011-08-23 06:59:47
【问题描述】:
我有多个处理器和一个数组,每个处理器将它们的工作填充到一维数组中,例如:
- dense_process_array 用于进程 1: |进程1|0000000000000|
- dense_process_array 用于进程 2: |000000|进程2|000000|
每个进程填充它们的间隔,然后我希望所有处理器都有其他结果到同一个数组中。
- 进程 1 => dense_process_array |process1|process2|.....|processN|
- 进程 2 ... 进程 N
(like all2all bcast) 因此,每个进程都会调用这个函数:
void doCommunication(int id, int numprocs, int start_point, int end_point) {
int size_of_length = end_point - start_point + 1;
MPI_Scatter(dense_process_array+start_point, size_of_length, MPI_DOUBLE, dense _process_array +start_point, size_of_length, MPI_DOUBLE, id, MPI_COMM_WORLD;
}
但是,最后当我从任何进程中查看我的数组时,我发现它无法获得其他进程的结果,你能提出什么建议吗?
不是:我是 MPI 的新手,基本上我想全部广播。
【问题讨论】: