2017-04-17 14 views
0

C에서 OpenMPI 사용; 동일한 함수에서 MPI_Barrier를 두 번 호출하면됩니다.

내가

main() 
{ 
MPI_Init(); 

//// Important Program Region 

MPI_Barrier(MPI_COMM_WORLD); 

// do something here 

MPI_Barrier(MPI_COMM_WORLD); 

//// 
MPI_Finalize(); 
} 

이 나쁜 관행이있어 말? 이와 같이 장벽을 두 번 강제로 강제로 동기화 할 수 있습니까? 이 단점은 무엇입니까?

+0

이 코드 줄은 어떻게 같은가요? 'MPI_Barrier'를 호출하는 두 개의 코드 라인이 있습니다. 왜 당신은 처음에 거기에 장벽이 필요하다고 생각합니까? – Zulan

+0

아, 내 대답에 대해 지적 해 주셔서 고맙습니다. – user26763

답변

1

위의 프로그램은있는 그대로 작동해야합니다. MPI_Barrier을 통해 한 번 또는 두 번만 동기화하지 않고 원하는만큼 여러 번 동기화 할 수 있습니다. 그렇다면 MPI_Barrier의 가장 큰 단점은 프로그램 호출 시간이 길어질수록 프로그램의 확장 성이 크게 줄어들 것입니다.

참고 : 제목에 제안 된 "동일 라인"(그러나 질문 자체는 제외)에서 호출하는 경우 두 번째 장벽은 사실상 아무 작업도 수행하지 않습니다. 이미 동기화 지점에 도달했습니다. 두 번째 장벽은 정확히 무엇을 할 것입니까?

+0

죄송합니다. "라인"은 오타였습니다. – user26763