MVAPICH2 성능 최적화 옵션
MPI 라이브러리로 MVAPICH2를 활용하는 경우 작업 스크립트 내에서 환경변수를 사용하여 프로세스 간 통신 알고리즘을 설정할 수 있다. 주요 키워드는 아래와 같으며, 사용자는 코드 내에서 많이 활용되는 collective communication에 대하여 환경변수 설정을 활용하여 실행 성능을 최적화할 수 있다.
MV2_INTRA 환경변수는 노드 내 MPI 프로세스 통신에서 활용되며 MV2_INTER 환경변수는 노드 간 MPI 프로세스 통신에서 활용된다. MPI_Alltoall의 경우 INTRA 및 INTER 두가지 경우에 대하여 동일한 알고리즘이 적용된다. 크기가 다른 데이터 전송을 위한 루틴(예: MPI_Alltoallv) 또는 non-blocking 기반 루틴(예: MPI_Ibcast)에도 동일하게 적용 가능하며 설정 방법은 아래와 같다.
MVAPICH2 라이브러리 collective communication 주요 환경 변수
MPI 통신 | 환경변수 | 설정범위 |
MPI_Gather | MV2_INTRA_GATHER_TUNING MV2_INTER_GATHER_TUNING | 0 ~ 3 |
MPI_Bcast | MV2_INTRA_BCAST_TUNING MV2_INTER_BCAST_TUNING | 0 ~ 10 |
MPI_Scatter | MV2_INTRA_SCATTER_TUNING MV2_INTER_SCATTER_TUNING | 1 ~ 5 |
MPI_Allreduce | MV2_INTRA_ALLREDUCE_TUNING MV2_INTER_ALLREDUCE_TUNING | 1 ~ 6 |
MPI_Reduce | MV2_INTRA_REDUCE_TUNING MV2_INTER_REDUCE_TUNING | 1 ~ 6 |
MPI_Allgather | MV2_INTRA_ALLGATHER_TUNING MV2_INTER_ALLGATHER_TUNING | 1 ~ 11 |
MPI_Alltoall | MV2_ALLTOALL_TUNING | 0 ~ 4 |
※ 사용 예시 (bash 스크립트 작성 경우) : export MV2_INTER_ALLREDUCE_TUNING=2
※ 각 환경변수에 대한 자세한 설명은 http://mvapich.cse.ohio-state.edu/userguide/ 참조
2022년 9월 22일에 마지막으로 업데이트되었습니다.
Last updated