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