[MPI] Loop Statement

반복문은 프로그래밍에서 자주 쓰이는 명령문 중 하나입니다. 오늘은 반복문을 MPI에서 병렬화 하는 방법에 대해서 다룹니다. MPI에는 병렬 반복문이 없지만, 프로세서 ID를 이용하면 간단하게 병령화 할 수 있습니다. 이를 위해서, MPI_COMM_RANK를 통해서 식별 가능하도록 프로세서 ID를 각각의 프로세서에 지정해줍니다. 이후 반복문을 다음과 같이 설정해 주면 병렬화가 가능합니다.

program main
use mpi
integer :: ierr ! error signal variable. Standard value = 0
integer :: rank ! the process ID/NUMBER
integer :: nprocs ! number of processes
call MPI_INIT(ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD, nprocs, ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)

do i = rank + 1, 11, nprocs
    print *, i, rank
end do
end program main

프로세서의 수가 4개인 컴퓨터에서 실행시키면 각각 2~3개의 프린트 명령어를 수행 할 것입니다. 순서는 지켜지지 않으며, 컴파일하고 실행시키면 다음과 같은 결과물을 얻을 수 있습니다.

>>mpif90 mpitest.f90
>>mpiexec mpitest.exe
           1           0
           5           0
           9           0
           2           1
           3           2
           4           3
           8           3
           7           2
          11          2
           6           1
          10          1

댓글

이 블로그의 인기 게시물

[Linux, AIX] 사용자 계정 생성 및 설정

[AIX] rpm 설치와 rpm 으로 패키지 설치 및 삭제

Ubuntu 에서 Fortran 시작하기