当前位置: 代码迷 >> 高性能计算 >> mpi只在一台机器上可以发送和接受消息吗?该如何处理
  详细解决方案

mpi只在一台机器上可以发送和接受消息吗?该如何处理

热度:10431   发布时间:2013-02-26 00:00:00.0
mpi只在一台机器上可以发送和接受消息吗?
由于我自学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
  相关解决方案