Linux 2012. 11. 16. 20:41

MPICH2 GCC 버전을 설치해보자.

버전은 MPICH2 1.4 이다.

설치할 위치는 /engrid/enhpc 디렉토리 아래이다.

그리고 /engrid/enhpc 디렉토리는 작업을 수행할 노드에 모두 NFS 마운트를 해놓은 상태이다.

다운 받은 mpich2-1.4.tar.gz 을 /engrid/enhpc 디렉토리 아래에 압축을 푼다.

cd /engrid/enhpc;

tar xvfz mpich2-1.4.tar.gz;

압축을 풀고 mpich2-1.4 디렉토리에 gcc 디렉토리를 생성한다.

다음엔 intel 버전으로 컴파일 할 것이기 때문에 gcc 버전과 분리하기 위해 gcc 디렉토리를 만들어 컴파일한다.

mpich2를 컴파일 하기 전에 필요한 환경변수를 설정해줘야한다.
다음과 같이 환경변수를 설정해주자.
# export FC=gfortran
# export F77=gfortran
# export CC=gcc
# export CXX=g++
# ./configure --prefix=/engrid/enhpc/mpich2-1.4/gcc --enable-timing=runtime --enable-f77 --enable-fc --enable-cxx --enable-romio --enable-threads=multiple --enable-mpe --with-thread-package=pthreads --with-pm=mpd
# make
# make install

위와 같이 컴파일 하여 설치한다.

컴파일 후 mpdboot를 실행하기 위해 mpd.conf 파일과 mpd.hosts 파일을 설정해야 한다.

mpd.conf 파일에는 MPD_SECRETWORD 를 설정해줘야 한다. MPD_SECRETWORD는 아무거나 설정해도 상관없지만 작업을 수행할 모든 노드에 동일하게 설정되어 있어야 한다.

# vi ~/.mpd.conf

MPD_SECRETWORD=password

# chmod 600 ~/.mpd.conf

# chown root. ~/.mpd.conf

mpd.conf 파일의 권한은 작업을 수행할 소유자 권한으로 설정되어 있어야 한다.

작업을 수행할 노드를 mpd.hosts 파일에 다음과 같은 형식으로 설정해준다.

hostname:n

hostname은 작업을 수행할 노드 호스트 이름이고, n은 노드의 코어 수를 나타낸다.

예를 들어, clunix151 노드와 cluni152 노드에서 각 4 코어를 사용하겠다고 한다면 다음과 같이 설정해준다.

# vi /etc/mpd.hosts

clunix151:4

clunix152:4

작업을 수행할 노드는 설정을 했으니, mpdboot를 실행하자.

# /engrid/enhpc/mpich2-1.4/gcc/bin/mpdboot -r /usr/bin/ssh -n 2 -v -d -f /etc/mpd.hosts

mpdboot가 실행된 노드를 확인하는 명령은 아래의 mpdtrace 이다.

# /engrid/enhpc/mpich2-1.4/gcc/bin/mpdtrace

clunix151

clunix152

mpich2 예제 프로그램 cpi를 수행해보자.

# cd /engrid/enhpc/mpich2-1.4/examples

# /engrid/enhpc/mpich2-1.4/gcc/bin/mpirun -l -n 5 ./cpi

참고로 mpi를 수행할 때 원하는 노드로만 수행할 수 있는 "-machinefile <노드리스트파일>"옵션도 있다.

이 옵션을 설정하지 않으면 위에서 mpdboot 실행할 때 옵션에 설정한 mpd.hosts 노드 중에서 랜덤하게 수행되지만,

이 옵션을 설정하면 이 옵션에 설정된 노드에서만 수행하도록 한다.

다른 작업과 중복되지 않게 노드를 사용하고 싶을 때 사용할 수 있는 옵션이다.

예를 들어, clunix151 노드에서만 작업을 수행하고 싶을 경우, nodelist 파일에 clunix151을 저장후 다음과 같이 명령을 준다.

# gcc/bin/mpirun -np 6 -machinefile nodelist examples/basic/cpi;

모든 노드의 mpdboot 를 clear 하고 싶다면 다음 명령을 수행한다.

# mpdallexit

'Linux' 카테고리의 다른 글

Iptables 포트제한  (0) 2012.12.08
리눅스 프로세스 상태 보기(ps명령)  (0) 2012.11.19
yum으로 tomcat 인스톨후 초기화 방법  (0) 2012.11.13
ubuntu kde 에 한글입력 올리기  (0) 2012.11.11
리눅스 chrome root 로 실행  (0) 2012.11.10
//