저는 MPI 프로그래밍 (mpich2 fedora)에 관한 약간의 초보자입니다. 나는 MPI_COMM_WORLD와는 다른 다른 통신 상대와 함께 MPI_Barrier를 사용할 때 죽은 자물쇠가 나옵니다.MPI_Barrier를 다른 커뮤니케이터와 함께 사용하는 방법은 무엇입니까?
는이 같은 2 커뮤니케이터합니다
MPI_Comm_split (MPI_COMM_WORLD, 색상, 순위, & split_comm을);
모든 색상이 전달 될 수있는 곳에 MPI_Barrier를두면 괜찮을 것입니다.
하지만 색상 == 1 만 통과 할 수있는 MPI_Barrier를 넣으면 죽은 자물쇠가 나옵니다.
다른 커뮤니케이터에서 MPI_Barrier를 사용하는 방법은 무엇입니까? 다른 MPI_COMM_WORLD와 함께 다른 MPI_Bcast()도 사용하고 있었지만 아무도 MPI_Bcast를 호출하지 않을 때는 차단되지 않았습니다. MPI_COMM_WORLD에 대한 다른 커뮤니케이터가 자신의 프로세스를 동기화 할 수 있습니까?
암시 적 장벽이있는 'MPI_Bcast'에 대한 설명은 단순히 사실이 아닙니다. 이 표준은 모든 프로세스가 작업의 일부가 완료 되 자마자 전체 호출을 종료 할 수있게하여 최적화 된 구현을 허용합니다. 유일한 예외는 ** 항상 ** 세계적으로 동기 인'MPI_Barrier'입니다. –
암시 적 장벽에 대해 설명해 주셔서 감사합니다. 당신은 완전히 맞습니다. 나는 그 비트를 제거하기 위해 위의 내 의견을 편집했습니다. –