当前位置: 代码迷 >> 综合 >> Attempting to use an MPI routine before initializing MPI
  详细解决方案

Attempting to use an MPI routine before initializing MPI

热度:52   发布时间:2023-11-26 18:34:26.0

错误代码

MPI_Allgather(x_local, n_bar, MPI_FLOAT, x_new, n_bar, MPI_FLOAT, MPI_COMM_WORLD);

产生错误的原因:mpi_allgather是多个进程之间的操作,其默认进行mpi_init,顺序为先创建多线程,然后mpi_init,然而mpi_init只能被单进程调用,因此出现了这个问题。
所以在每个mpi问题下都需要写mpi_init和mpi_finalize()方法。
解决方法如下:

int main(int argc, char **argv) {MPI_Init(&argc, &argv);int mpirank;MPI_Comm_rank(MPI_COMM_WORLD, &mpirank);// No more calls to MPI_Init in here...MPI_Finalize();}

相关链接

  相关解决方案