这是一个简单的mpi程序(我是初学者):
#include <stdio.h>
#include <mpi.h>
int main(int argc, char ** argv) {
int rank, size;
char name[80];
int length;
MPI_Init(&argc, &argv); // note that argc and argv are passed
// by address
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
printf("size is: %d\n", size);
MPI_Get_processor_name(name,&length);
printf("Hello MPI: processor %d of %d on %s\n", rank,size,name);
MPI_Finalize();
}
我用它编译了它 mpicc -o ex1 file.c 但是当我用它运行时 mpirun -np 10 ./ex1 它没有按预期创建10个进程。事实上,十次,它写道:
Hello MPI:lory-SVE1513Q1ESI上的处理器0为1
我不知道为什么size变量设置为1。 我试图在我校园实验室的计算机上运行它(ubuntu作为我的)并且它可以正常运行:
Hello MPI:lory-SVE1513Q1ESI上的处理器0为10 Hello MPI:lory-SVE1513Q1ESI上的处理器1的10 Hello MPI:lory-SVE1513Q1ESI上的处理器2的10 ...
与我的电脑有什么不同? :(