我是MPI的初学者。当我编写我的第一个程序时,我遇到了一个棘手的问题。
MPI_Init(&argc, &argv) ;
MPI_Comm_rank( MPI_COMM_WORLD, &rank) ;
MPI_Comm_size( MPI_COMM_WORLD, &size) ;
printf("Process: %d\n", rank);
printf("Procs_num: %d\n", size);和:
mpicc main.c -o main
mpirun -np 8 main但我得到的只是8个副本:
Process: 0
Procs_num: 1我期望得到的是:
Process: 0~7
Procs_num: 8我猜这是因为MPI_COMM_WORLD中没有8个进程,但我找不到原因,也不知道如何解决它。
我希望你能领会我想表达的意思。太多了!
发布于 2012-08-11 18:46:48
显然你忘了给MPI_Finalize打电话
下面是正确的代码:
#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
int main (int argc, char *argv[]) {
int rank, size;
MPI_Init(&argc, &argv) ;
MPI_Comm_rank( MPI_COMM_WORLD, &rank) ;
MPI_Comm_size( MPI_COMM_WORLD, &size) ;
printf("Process: %d\n", rank);
printf("Procs_num: %d\n", size);
MPI_Finalize();
return(0);
}然后你会得到你的8个不同的排名:
~/mpi_tests/examples > mpirun -np 8 ~/mpi_tests/examples/t
Process: 4
Procs_num: 8
Process: 5
Procs_num: 8
Process: 0
Procs_num: 8
Process: 1
Procs_num: 8
Process: 7
Procs_num: 8
Process: 2
Procs_num: 8
Process: 3
Procs_num: 8
Process: 6
Procs_num: 8https://stackoverflow.com/questions/11911615
复制相似问题