2012-03-25 4 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

답변

0

정적 전역 변수? 충분히 안전하고 위험을 감수 할 준비가되어있는 경우

+0

whats the implication ?? – Noor

+0

코드가 얼마나 복잡한 지 알지 못합니다. 소개하는 모든 전역 상태에 특히주의해야합니다. 그러나 이것이 당신이해야 할 전부라면, 그 하나의 전역 변수는 아무 것도 할 수 없습니다 ... – tchap

3

MPI_COMM_WORLD에 대해 MPI로 질문하면 mpi.h으로 선언되고 MPI 구현 라이브러리 중 하나에 정의되어 있습니다.

관련 문제