문서의 이전 판입니다!
MPI
Windows
mpi4py
mpi4py는 C MPI 라이브러리를 python에서 사용할 수 있도록 모듈로 만든 라이브러리 중의 하나입니다. 여기서는 라이브러리를 윈도우즈, 리눅스 환경에서 설치하는 방법을 알아보고 간단하게 실행을 테스트 해보겠습니다.
설치
Window에서 설치 방법
윈도우즈에서 mpi4py를 설치하게 위해서는 Visual Studio와 MPI라이브러리가 설치되어 있어야 합니다. 윈도우즈에서 사용가능한 MPI 라이브러리는 OpenMPI와 MPICH2가 있고, 마이크로 소프트에서 제공하는 MPICH2인 Microsoft HPC SDK 2008이 있습니다. 몇 가지 경우를 테스트해본 결과 Visual Studio 2008과 HPC SDK 2008을 사용하는 것이 가장 쉽다고 판다한여 이 것을 기준으로 진행 하겠습니다. 물론 python 모듈이므로 python 2.6은 필수적으로 설치되어 있어야 합니다.
- Visual Studio 2008 설치
- HPC SDK 2008 설치
- mpi4py의 소스를 다운받아 압축 해제 (mpi4py-1.2.2.tar.gz)
- 압축 해제된 폴더로 이동하여 다음 명령 입력 (모듈 빌드 및 설치)
- R:/mpi4py-1.2.2/python setup.py build --mpi=msmpi install
- 여기서 msmpi는 HPC SDK 2008을 사용한 다는 뜻이며, 다른 라이브러리를 사용할 때는 다른 지시어를 사용합니다.
- mpi.cfg는 ini파일 형식으로 구성되어 있으며, 이곳의 [msmpi] 부분에 빌드를 위한 설정이 있습니다.
만약 HPC SDK 2008을 기본 설치 폴더가 아닌 다른 곳에 설치 했다면 여기서 수정해주어야 합니다.
- 마지막에 error 메시지 없이 종료 된다면 설치 완료!
mpich2를 사용할 때는
- visual studio 2008 설치
- 2010이 설치되어 있다고 해도 필요하다!
- mpich2 다운로드 및 설치
- mpi4py 설치
- mpi.cfg 파일 수정한다.
- setup.py build –mpi=mpich2-win install
- 사용자 등록
- mpiexec -register
python을 32비트 버전으로 설치해서인지, mpich2도 32bit로 설치해야 했다.
실행
hosts 파일 설정, “host이름:core개수” 형식으로 입력
cilab00:6 cilab01:2 cilab02:2 cilab03:2
실행 명령 및 결과
mpiexec -machinefile e:\hosts -n 20 python.exe c:\mpi\helloworld.py mpiexec -hosts 2 192.168.123.100 192.168.123.110 10 python.exe c:\mpi\helloworld.py E:\>mpiexec -hosts 2 192.168.123.100 192.168.123.110 10 python.exe c:\mpi\helloworld.py M:\>mpiexec -n 20 -machinefile e:\hosts python \\192.168.123.100\mirror\helloworld.py Hello, World! I am process 19 of 20 on rex8312-PC. Hello, World! I am process 0 of 20 on rex8312-PC. Hello, World! I am process 16 of 20 on rex8312-PC. Hello, World! I am process 8 of 20 on rex8312-PC. Hello, World! I am process 18 of 20 on rex8312-PC. Hello, World! I am process 11 of 20 on rex8312-PC. Hello, World! I am process 1 of 20 on rex8312-PC. Hello, World! I am process 10 of 20 on rex8312-PC. Hello, World! I am process 2 of 20 on rex8312-PC. Hello, World! I am process 17 of 20 on rex8312-PC. Hello, World! I am process 9 of 20 on rex8312-PC. Hello, World! I am process 3 of 20 on rex8312-PC. Hello, World! I am process 4 of 20 on rex8312-test. Hello, World! I am process 13 of 20 on rex8312-test. Hello, World! I am process 15 of 20 on rex8312-test. Hello, World! I am process 6 of 20 on rex8312-test. Hello, World! I am process 12 of 20 on rex8312-test. Hello, World! I am process 5 of 20 on rex8312-test. Hello, World! I am process 14 of 20 on rex8312-test. Hello, World! I am process 7 of 20 on rex8312-test.
설정이 제대로 되었는지 확일 하려면
smpd -status mpiexec -validate
passphrase 인증을 요구할 때
다시 mpich2를 설치하거나, 다음 명령을 입력한다
smpd -install smpd -install -phrase MYMPICH2PASSPHRASE # passphrase가 생각나지 않을 때, 관리자 권한으로 cmd 창을 열고 입력해야 함
사용자 등록 하는 방법
mpiexec -remove mpiexec -register
Linux (Ubuntu 8.x 이상) 에서 설치 방법
우분투에서는 다음 명령을 차례대로 입력하면 간단히 설치 가능합니다.
>sudo su #apt-get install openmpi-bin // openmpi 설치 #apt-get install python2.6-dev // python header 파일 설치 #easy_install mpi4py // mpi4py 설치
또는
#apt-get install mpich-bin libmpich1.0gf libmpich1.0-dev #pip install mpi4py
예제 실행
mpi로 작성된 프로그램을 실행하기 위해서는 OpenMPI에서는 mpirun을, MPICH2에서는 mpiexec를 사용합니다. 사용한 예제는 mpiexec를 기준으로 할 것입니다. mpi4py가 모듈이 설치된 폴더에 demo라는 폴더에 예제 프로그램이 있으니 그것을 실행 시켜 보죠. 모듈의 소스가 있는 폴더에도 같은 내용으 demo 폴더가 있습니다.
mpiexec -np 4 python demo/helloworld.py
위 명령은 demo폴더의 helloworld.py를 실행하는 명령입니다. 파일이나 경로를 찾지 못하면 helloworld.py가 있는 경로에서 실행하면 실행 될 것니다. -np 옵션은 이 프로그램을 몇 개의 프로세스로 실행할 것인지를 지정해 주는 것입니다. 성공적으로 실행되면 다음과 같은 결과를 얻을 수 있습니다.
총 4개의 프로세스를 실행하여 각각의 프로세스가 Hello, World!를 출력했습니다.
몇 가지 예제가 더 있으며, demo 폴더의 compute-pi는 $\pi$값을 구하는 3가지 예제가 있습니다.