2012-03-25 443 views
0

您可以注意到代码在MPI_COMM_WORLD中实例化,但在函数send_code中使用!如何声明MPI_COMM_WORLD以便我可以在任何地方使用它?

我的代码是:

int send_code(char *code) 
{ 
     //produce the codes for adding the code into the table 
     printf("%s\n",code); 
     MPI_Send(code, 8, MPI_CHAR,0, 0,MPI_COMM_WORLD); 
} 

int main(int argc, char *argv[]) 
{ 

     MPI_Status status; 
     int outbuf, inbuf; 

     MPI_Init(&argc, &argv); 
     MPI_Comm_size(MPI_COMM_WORLD, &size); 
     MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
     if (rank==0) 
     { 
       MPI_Recv(code, 8, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); 
       printf("%s by master\n",code); 

     } 
     else 
     { 
       ........ 
     } 

     MPI_Finalize(); 
} 
+0

它的类型是什么? – tchap 2012-03-25 14:38:08

回答

0

静态全局变量?如果这对您来说足够安全并且您已准备好承担风险;-)

+0

这是什么意思? – Noor 2012-03-25 14:48:51

+0

我不知道你的代码有多复杂,你必须特别小心你引入的每个全局状态。但如果这是你所需要做的,那么这个全局变量不会做任何错误的事情...... – tchap 2012-03-25 14:51:38

3

如果您在询问MPI中的MPI_COMM_WORLD,它在mpi.h中声明并在MPI实现的某个库中的某处定义。

相关问题