[논문 리뷰] Tuning MPI Collectives by Verifying Performance Guidelines
이 논문은 PGMPITuneLib를 제안하며, 이는 자가 일관된 성능 지침을 기반으로 비효율적인 MPI 집합 연산의 구현을 의미적으로 동일한 모의 함수로 자동으로 대체함으로써 런타임 라이브러리로서 MPI 집합 연산을 자동으로 최적화한다. 실제 MPI 성능을 이러한 지침과 비교함으로써, 시스템은 더 빠른 알고리즘 패턴을 식별하고 적용하여 다양한 MPI 라이브러리에서 지연 시간을 크게 감소시킨다 — 심지어 설정 가능한 매개변수가 없는 라이브러리들이라도 마찬가지로 작동한다.
MPI collective operations provide a standardized interface for performing data movements within a group of processes. The efficiency of collective communication operations depends on the actual algorithm, its implementation, and the specific communication problem (type of communication, message size, number of processes). Many MPI libraries provide numerous algorithms for specific collective operations. The strategy for selecting an efficient algorithm is often times predefined (hard-coded) in MPI libraries, but some of them, such as Open MPI, allow users to change the algorithm manually. Finding the best algorithm for each case is a hard problem, and several approaches to tune these algorithmic parameters have been proposed. We use an orthogonal approach to the parameter-tuning of MPI collectives, that is, instead of testing individual algorithmic choices provided by an MPI library, we compare the latency of a specific MPI collective operation to the latency of semantically equivalent functions, which we call the mock-up implementations. The structure of the mock-up implementations is defined by self-consistent performance guidelines. The advantage of this approach is that tuning using mock-up implementations is always possible, whether or not an MPI library allows users to select a specific algorithm at run-time. We implement this concept in a library called PGMPITuneLib, which is layered between the user code and the actual MPI implementation. This library selects the best-performing algorithmic pattern of an MPI collective by intercepting MPI calls and redirecting them to our mock-up implementations. Experimental results show that PGMPITuneLib can significantly reduce the latency of MPI collectives, and also equally important, that it can help identifying the tuning potential of MPI libraries.
연구 동기 및 목표
- 사용자 정의 가능한 매개변수가 없거나 검색 공간이 복잡한 경우 전통적인 매개변수 최적화가 불가능한 상황에서 MPI 집합 연산 최적화의 과제를 해결한다.
- 라이브러리에 특화된 하드코딩된 알고리즘 선택 전략에 의존하는 기존 최적화 방법의 한계를 극복한다.
- 자기 일관된 성능 지침을 사용하여 MPI 라이브러리의 성능 저하를 탐지하고 수정할 수 있는 이식 가능하고 라이브러리에 종속되지 않는 방법을 제공한다.
- 의미적으로 동일한 최적화된 모의 함수와 비교함으로써 하위 최적화된 MPI 구현을 자동으로 식별할 수 있도록 한다.
- Open MPI와 같이 알고리즘 선택이 사용자 설정이 불가능한 널리 사용되는 MPI 라이브러리에서도 성능 향상이 가능하다는 것을 입증한다.
제안 방법
- 특정 MPI 집합 연산(예: MPI_Allgather)은 더 일반적인 등가 연산(예: MPI_Allgatherv)보다 느리지 않아야 한다는 자기 일관된 성능 지침을 정의한다.
- 각 지침을 구현하는 모의 함수를 구현하여, 더 효율적인 알고리즘 패턴을 사용해 해당 MPI 집합 연산의 동작을 모의한다.
- MPI 함수 호출을 가로채고 성능 프로파일링 기반으로 가장 빠른 모의 함수 버전으로 리디렉션하는 런타임 라이브러리인 PGMPITuneLib를 구축한다.
- 각 모의 함수 버전의 성능을 런타임에 프로파일링하여 메시지 크기와 프로세스 수에 따라 가장 빠른 실행 방식을 결정한다.
- 성능 프로파일을 기반으로 런타임에 기본 MPI 구현을 최적의 모의 함수 버전으로 동적으로 교체한다.
- 원래 MPI 함수와 모의 함수의 의미적 동일성을 유지함으로써 정확성을 보장한다.
실험 결과
연구 질문
- RQ1성능 지침을 사용하여 MPI 집합 구현의 비효율성을 신뢰할 수 있는 기준으로 탐지할 수 있는가?
- RQ2성능 지침에 기반한 모의 함수 구현이 기본 MPI 라이브러리 구현보다 얼마나 뛰어나게 성능을 향상시킬 수 있는가?
- RQ3이 방법은 알고리즘 최적화 매개변수가 노출되지 않은 MPI 라이브러리에도 적용 가능한가?
- RQ4이 방법은 Open MPI와 같은 실제 MPI 라이브러리에서 지침 위반을 얼마나 효과적으로 식별하고 수정하는가?
- RQ5이 자동 최적화 전략을 통해 다양한 하드웨어 플랫폼에서 어떤 성능 향상이 달성될 수 있는가?
주요 결과
- PGMPITuneLib는 복잡한 메모리 계층을 가진 모든 테스트 시스템에서 MPI 집합 연산의 지연 시간을 성공적으로 감소시켰다.
- Open MPI와 같은 라이브러리에서 기본 구현이 의미적으로 동일한 대안보다 더 느리게 작동하는 지침 위반을 식별하고 수정하였다.
- 사용자 설정 가능한 매개변수가 전혀 없는 라이브러리에서도 PGMPITuneLib는 비효율적인 알고리즘을 최적화된 모의 함수로 대체함으로써 뚜렷한 성능 향상을 이룬다.
- 일부 MPI 라이브러리가 더 나은 알고리즘이 존재함에도 불구하고 하위 최적화된 알고리즘을 사용하고 있음을 드러내어 자동 최적화의 필요성을 강조한다.
- PGMPITuneLib가 생성한 성능 프로파일은 반복 실행에 재사용 가능하여 일관되고 재현 가능한 성능 향상을 보장한다.
- 기본 MPI 라이브러리가 알고리즘 구성 옵션을 노출하느냐 여부와 관계없이 이 방법은 이식 가능하고 효과적이다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.