我在MPI中尝试基本的Hello_World程序,但它打印的是随机数字,根本不打印(我不打印程序中的任何数字)。
我正在关注本教程: http://mpitutorial.com/tutorials/running-an-mpi-cluster-within-a-lan/
我的mpirun命令如下: mpirun -np 2 -host my.ip.add,username @ other.ip.add ./a.out
两台计算机通过相同的wifi连接,并安装了相同版本的MPI。代码如下:
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv) {
// Initialize the MPI environment
MPI_Init(NULL, NULL);
// Get the number of processes
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
// Get the rank of the process
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
// Get the name of the processor
char processor_name[MPI_MAX_PROCESSOR_NAME];
int name_len;
MPI_Get_processor_name(processor_name, &name_len);
// Print off a hello world message
printf("Hello world from processor %s, rank %d"
" out of %d processors\n",
processor_name, world_rank, world_size);
// Finalize the MPI environment.
MPI_Finalize();
}
修改
我按照mpirun命令运行,输出如下:
Command : mpirun -np 1 -host my.ip.add, uname@other.ip.add ./a.out
Output: Hello world from processor pranav, rank 0 out of 1 processors
将进程数更改为2,可以看到如上所述的以下随机输出:
Command: mpirun -np 2 -host my.ip.add, uname@other.ip.add ./a.out
Output: 199931 199931
1 2 1
2 3 1
3 4 1
4 5 1
5 6 1
6 7 1
7 8 1
8 9 1
9 10 1 ...
如上所示,数字进入无限循环模式。另外我想要注意的是,在第一个输出中,没有其他计算机进程的输出。