由于我自学mpi只有一台机器,我在我的机器上装了mpich,helloworld 和计算pi值这两个程序都可以运行,但是简单的收发消息程序就不能运行了 出错为
0 - MPI_SEND : Invalid rank 1
[0] Aborting program !
[0] Aborting program!
Error 8262, process 0, host MENS:
程序如下
#include "mpi.h"
#include <stdio.h>
#include <string.h>
void main(int argc,char *argv[])
{
char message[20];
int myrank;
MPI_Init(&argc,&argv);
MPI_Status status;
MPI_Comm_rank(MPI_COMM_WORLD,&myrank);
if(myrank==0)
{
strcpy(message,"hello,process 1");
MPI_Send(message,strlen(message),MPI_CHAR,1,99,MPI_COMM_WORLD);
}
else if(myrank==1)
{
MPI_Recv(message,20,MPI_CHAR,0,99,MPI_COMM_WORLD,&status);
printf("received: %s:", message);
}
MPI_Finalize();
}
我又用加上了如下语句进行测试
MPI_Comm_size(MPI_COMM_WORLD, &size);
printf("%d\n",size);
结果size=1
我想问只在一台机器上不能用mpi收发消息吗?在一台机器上如何能启动多个进程,也就是size〉=2呢?
我要是装一个虚拟机是否可以解决呢?我的系统是xp的,我要装什么样的虚拟机呢?因为在不同系统下配置mpich有些麻烦。
------解决方案--------------------------------------------------------
试试这个:
mpirun -np 2 --host localhost a.out