Parallel processing 为什么可以';我不能一次打开8个进程吗?
我是MPI的初学者。当我编写第一个程序时,我遇到了一个棘手的问题Parallel processing 为什么可以';我不能一次打开8个进程吗?,parallel-processing,mpi,openmpi,message-passing,Parallel Processing,Mpi,Openmpi,Message Passing,我是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); 以及: 但我只得到了8份: Process: 0 Pro
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);
以及:
但我只得到了8份:
Process: 0
Procs_num: 1
我希望得到的是:
Process: 0~7
Procs_num: 8
我猜这是因为在MPI_COMM_世界中没有8个进程,但我无法找出原因,也不知道如何解决它
我希望你能理解我想表达的意思。很多thx 显然你忘了打电话给
MPI\u 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);
}
检查此问题的答案:。您可能安装了多个MPI库,
mpicc
命令来自其中一个,而mpirun
来自另一个。@GregInozemtsev可能是。我会尝试一下。当某个进程退出而不调用MPI\u FINALIZE
时,省略MPI\u FINALIZE
可能会使MPI程序进入未定义状态(通常会崩溃),但这不会导致OP描述的行为。
#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);
}
~/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: 8