2012-03-25 437 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實現的某個庫中的某處定義。

相關問題