2012-12-15 10 views
1

MPI 응용 프로그램에 대한 다음과 같은 간단한 시나리오를 고려해보십시오. 루트 프로세스가 일부 매개 변수 (수십 바이트 - 고정 크기)를 브로드 캐스팅 한 다음 모든 노드가 일부 계산을 시작한 후 루트가 결과를 수집합니다 (MPI_Gather - 가능합니다. 매우 큰 데이터 세트). 루트가 데이터를 저장하면 프로그램이 종료됩니다.MPI 스타 (허브 앤 스포크) 커뮤니케이터는 MPI_COMM_WORLD보다 성능이 뛰어 납니까?

가상 스타 토폴로지를 사용하여 생성 된 커뮤니케이터를 사용하면 MPI_COMM_WORLD을 사용하는 것보다 성능이 향상됩니다 (프로세스 수, 대기 시간 등). 커뮤니케이터는 실제 채널에 대해 지연 초기화를 사용합니까? 즉, 처음으로 파이프, 소켓 등을 열어야 만합니다. 이 동작은 구현에 종속적입니까?

참고 : 나는 openmpi1.4.3-2을 사용하고 있는데 일반 C.

답변

3

커뮤니케이터 토폴로지는 그들이 실제 통신이 발생하는 방식을 변경할 필요가 없습니다, 편의 매핑 기능입니다. 별이나 다른 그래프 토폴로지에 연결되어 있지 않은 (토폴로지 관점에서) 프로세스가있는 경우에도 통신자가 다른 프로세스의 순위를 알고 있으면 메시지를 서로 전송하지 못합니다 . MPI 구현은 통신 경로를 최적화하기 위해 토폴로지를 힌트로 사용할 수 있지만 매우 복잡한 코드 조각이 될 수 있으며 Open MPI는 집합 알고리즘에서 그렇게하지 않습니다 (일반적으로 잘 테스트되지 않았기 때문에 일반적으로 비활성화 된 hierarch 집합 구성 요소는 하드웨어 계층을 고려하지만 가상 토폴로지는 고려하지 않습니다.

토폴로지는 의사 결정자 생성자에 reorder=1을 제공하면 순위 재정렬을 통한 통신에 영향을 줄 수 있습니다. 이것은 MPI 구현에서 프로세스 랭크를 재 배열 할 수있는 자유를줌으로써 하부 하드웨어의 물리적 토폴로지를 고려할 때 생성자에 제공된 토폴로지 스키마에 가능한 한 가깝게 일치시킬 수 있습니다. 집합 작업을위한 전용 네트워크가있는 하드웨어 플랫폼이 있습니다. 예를 들어, IBM Blue Gene/P는 MPI_BARRIER의 신속한 구현을 허용하는 글로벌 인터럽트 네트워크와 일부 집단 작업 (브로드 캐스트 포함)을 가속화하는 특수 집단 네트워크를 제공합니다. 그러나 이것들은 MPI_COMM_WORLD에서만 사용할 수 있습니다 - 폴백 소프트웨어 구현은 다른 통신기에 사용됩니다.

이 동작은 구현에 종속적입니까?

은 예, 구현 와 (복수의 하드웨어/통신 시스템을 지원하는 구현을위한) 시스템 의존한다. 그리고 이것은 나머지 질문에 대한 답이기도합니다.