작성자:oopslinux pgi compiler 환경에서 mpich 설치하기 조회수:11535
등록일시:2006-09-30 18:14:54
oopslinux
http://oopslinux.com


1. 시스템 및 소프트웨어 환경
1.1 시스템은 x86기반 리눅스 클러스터로, MPI용 네트웍은 이더넷이며,
    운영체제는 CentOS 4.2 (RedHat EL4 update2 호환) 입니다.
1.2 패키지 버전
- PGI 6.0.8 Workstation Version ( http://www.pgroup.com/products/workpgi.htm : 상용 )
- MPICH 1.2.7p1 ( http://www-unix.mcs.anl.gov/mpi/mpich1/download.html : 오픈소스 )

* PGI 컴파일러는 이미 설치 되었다고 가정합니다.
* 이 문서의 작업 예는 root계정에서 실행하는 것입니다.
* vi를 실행하는것은, 그 이후에 나오는 코드를 해당 파일에 추가하거나,
  편집하는 것을 뜻합니다.

2. 사전 환경 확인
2.1 PGI 컴파일러가 정상적으로 설치 되었고, 환경변수가 적절히 세팅 되었는지
    확인합니다.
==========================================================================
# pgcc -V

pgcc 6.0-8 32-bit target on x86 Linux
Copyright 1989-2000, The Portland Group, Inc.  All Rights Reserved.
Copyright 2000-2005, STMicroelectronics, Inc.  All Rights Reserved.
# pgf90 -V

pgf90 6.0-8 32-bit target on x86 Linux
Copyright 1989-2000, The Portland Group, Inc.  All Rights Reserved.
Copyright 2000-2005, STMicroelectronics, Inc.  All Rights Reserved.

==========================================================================

2.2 위와 같이 실행되지 않는경우는, PGI가 설치되었는지 확인하고, 설치가 완료
    되면, 다음과 같이 환경변수를 세팅하여 줍니다.
==========================================================================
# vi ~/.bash_profile
-------------------------------------------------------------
......

# for mpich
PATH=$PATH:/usr/local/mpich/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpich/lib

MANPATH=$MANPATH:/usr/local/mpich/man

export PATH MANPATH LD_LIBRARY_PATH

#PGI ENV. Setting
PGI=/usr/pgi
PATH=$PATH:$PGI/linux86/6.0/bin
MANPATH=$MANPATH:$PGI/linux86/6.0/man
LM_LICENSE_FILE=$LM_LICENSE_FILE:$PGI/license.dat
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGI/linux86/6.0/lib

export PGI PATH MANPATH LM_LICENSE_FILE LD_LIBRARY_PATH

-------------------------------------------------------------
# source ~/.bash_profile
==========================================================================

3. mpich 설치
3.1 다운로드 받은 mpich소스의 압축을 풀고, 해당 소스의 루트로 이동합니다.
==========================================================================
# tar xzf ./mpich.tar.gz
# cd mpich-1.2.7p1
==========================================================================
3.2 configuration및 make
==========================================================================
# ./configure --with-device=ch_p4 -prefix=/usr/local/mpich-1.2.7p1 -c++=pgCC \
              -cc=pgcc -fc=pgf77 -clinker=pgcc -flinker=pgf77 -c++linker=pgCC \
              -f90=pgf90 -f90inc=/usr/pgi/linux86/6.0/include -f90linker=pgf90 \
              -f90libpath=/usr/pgi/linux86/6.0/lib -opt="-fast" -rsh=ssh
# make
# make install
# ln -s /usr/local/mpich-1.2.7p1 /usr/local/mpich              
==========================================================================
* 위에서 심볼릭 링크를 사용하는 이유는, 혹 다른 버전의 mpich로 변경하더라도
링크만 변경해주면, 사용자들의 환경변수를 변경할 필요없이 사용하기 위해서 입니다.

3.3 설치 확인
==========================================================================
# mpicc -V

pgcc 6.0-8 32-bit target on x86 Linux
Copyright 1989-2000, The Portland Group, Inc.  All Rights Reserved.
Copyright 2000-2005, STMicroelectronics, Inc.  All Rights Reserved.
/usr/lib/crt1.o(.text+0x18): In function `_start':
: undefined reference to `main'
# mpif90 -V

pgf90 6.0-8 32-bit target on x86 Linux
Copyright 1989-2000, The Portland Group, Inc.  All Rights Reserved.
Copyright 2000-2005, STMicroelectronics, Inc.  All Rights Reserved.
/usr/local/pgi/linux86/6.0/lib/f90main.o(.text+0x77): In function `main':
: undefined reference to `MAIN_'
==========================================================================

*** 각 계산 노드에도 같은 위치에 인스톨 하거나, NFS등을 이용하여 같은 위치에
mpich및 PGI가 위치할 수 있도록 해야 합니다.

4. 예제 실행
4.1 mpich에 포함된 예제(cpi : 원주율 계산)를 컴파일 합니다.
==========================================================================
# cd /usr/local/mpich/examples
# make cpi
# ./cpi
Process 0 on master
pi is approximately 3.1416009869231254, Error is 0.0000083333333323
wall clock time = 0.000105
==========================================================================
4.2 mpirun을 통하여 실행합니다.
- 먼저 노드를 지정하기 위해, 머신파일을 생성합니다.
==========================================================================
# vi ./mf
--------------------------------------------
node001
node002
--------------------------------------------
==========================================================================
- cpu개수 2개, 머신파일 ./mf, 마스터노드에서는 실행하지 않는 옵션으로 mpirun을
  실행합니다.
==========================================================================
# mpirun -np 2 -machinefile ./mf -nolocal ./cpi
Process 0 on node001
Process 1 on node002
pi is approximately 3.1416009869231241, Error is 0.0000083333333309
wall clock time = 0.000546
==========================================================================
* 만일 노드당 2개의 cpu를 가지고 있으며, 총 4개의 cpu로 실행할 때는 다음과 같이
  합니다.
==========================================================================
# vi ./mf
--------------------------------------------
node001
node001
node002
node002
--------------------------------------------
# mpirun -np 4 -machinefile ./mf -nolocal ./cpi
==========================================================================



[관련글]
번호 제목 작성자 등록일 조회수
1   pgi compiler 환경에서 mpich 설치하기 oopslinux 2006-09-30 11535  


           전체목록       윗글 아랫글