AMBER9 설치 방법 – openmpi 연동

출처 : http://blog.naver.com/namym12

이건 수년전 작성해놓은 AMBER 9 설치 메뉴얼인데 CHARMm 에서 쓰는 MPICH 와의 충돌을 막기위해 open mpi 로 설치하였다. 컴파일러는 g95라는 공개 컴파일러를 사용하였고

 
CentOS 4.4 및 5.0 에서 사용하였다.
컴파일러 설치 -> AMBER 9 single 버전 설치 -> open mpi 라이브러리 설치 -> AMBER 9 parallel 버전 설치 순이다.
 
아래에 설명된 /home/ 은 NFS 경로이다.
*****************************************************************
*  ** open mpi 나 amber9 의 make 과정에서 오류가 나면 오류            *
*     해결후 반드시 make clean 후 다시 make                                   *
*****************************************************************
 

* g95 설치
①g95-x86-linux.tar 를 받아서 압축 풀고 압축 푼 디렉토리가 /home/xxxx/g95-install 이라면,
 ] ln -s /home/xxxx/g95-install/bin/*g95*  /home/xxxx/bin/g95
 (xxxx는 자기아이디이거나  관리자의 경우 모든 사용자에게 공통으로 쓰도록 하고 싶으면 xxxx는 common 과 같이 별도의 디렉토리)    
② PATH 환경변수에 방금 생성된 링크가 있는 폴더를 추가한다.
 (.bashrc 나 .bash_profile 에 PATH=$PATH:/home/xxxx/bin 을 써준다.)
③ 로그아웃 후 다시 로그인해서 (.bashrc나 .bash_profile의 내용이 적용되기 위해서)
 ] which g95 쳐서 /home/xxxx/bin/g95 가 제대로 나오는지 확인한다.
 
* AMBER serial 설치
(X system 쓸지 모르니 ssh로 이동)
① 받은 amber9 압축풀고 bugfix 후 build 한다.(/home/xxxx/amber9에 풀었다.)
bugfix는 http://amber.scripps.edu/bugfixes 에서 다운로드
 
 ] zcat amber9.taz | tar xv &
 ] cd amber9
 ] patch -p0 -N -r patch-rejects < bugfix.all
 ] cd src
 ] ./configure -athlon g95  ( build 및 compile하는 컴퓨터가 SSE와 SSE2를 지원하는 cpu 일 경우 -p4라고 해준다. )

② Compile 한다.
 ( [make clean )
 ] make serial
③ .bashrc 에 환경변수 추가
 PATH=$PATH:/home/xxxx/amber9:/home/xxxx/amber9/exe
 AMBERHOME=/home/xxxx/amber9
 
 다시 로그인한 후 다음과 같이 확인해본다.
④ test 해본다.
 ] cd $AMBERHOME/test
 ] make test.serial
 
 
* open mpi 설치
설치 요구사항
 – 각노드간에 rsh 로 이동및 명령 실행이 추가적인 암호입력없이 가능해야함
 – glibc 2.3.2 버전 이상만 (버전 확인은 rpm -qa glibc 명령을 입력)
 – 여기서는 g95 컴파일러를 이용하기 때문에 g95가 설치되어 있어야함
① open.mpi.1.tar.gz 를 압축받아서 푼다.
 
  ] gunzip open.mpi.1.tar.gz
  ] tar xf open.mpi.1.tar
   ①-(1) Build 를 한다.
  ] cd openmpi.1.x.x
  ] makdir build
  ] cd build
  ] ../configure –prefix=/home/xxxx/openmpi CC=gcc F77=g95 FC=g95
   ①-(2) Compile 한다 이때 컴파일러 지정변수가 제대로 안먹힐 수 있으므로 alias 지정을 해준다.
  ] alias f90=g95                
  ] alias f77=g95
  ] alias fc=g95
  ] make all install
② .bashrc을 수정하여 환경변수 추가한다. (root 의 경우는 각 노드마다 모두 수정되어야 한다.)
 PATH=$PATH:/home/xxxx/openmpi/bin:/home/xxxx/openmpi/lib:/home/xxxx/openmpi/include
 MANPATH=$MANPATH:/home/xxxx/openmpi/man
 MPI_HOME=/home/xxxx/openmpi
 LD_LIBRARY_PATH=/home/xxxx/openmpi/lib

 (LD_LIBRARY_PATH 환경변수를 위와 같이 지정해도 AMBER 깔 때 ld.so.O 요 파일을 못찾겠다거나
 이 파일과 관련된 에러가 나타날 수 있다. 이것을 방지하기 위해 root 권한으로 다음과 같은 과정을 추가적으로 거친다.)
  ②-(1) root 로 로그인해서
  /etc/ld.so.conf 파일을 열어서 마지막줄에 /home/xxxx/openmpi/lib 를 추가해준다.
  /sbin/ldconfig 실행
  이 과정은 각 노드에 대하여 한번씩 거쳐준다.
 환경변수를 .bashrc 에 넣었으므로 로그아웃후 로그인
  ]which mpiexec
  ]which mpirun
 등의 명령어로 각 노드에서 확인해본다.
③ openmpi/etc 에 보면 default 설정 파일들이 있다.
 (1) openmpi-default-hostfile 을 수정하여 다음과 같이 써준다.
  node3 slots=2 (단, GLIBC 2.3.2 버전 이상의 노드들만)
  node4 slots=2
  node5 slots=2
                   .
     .
     .

 (2) openmpi-mca-params.conf 에는 pls_rsh_agent=rsh 라고 **반드시** 추가
 
 
 
 
* AMBER parallel 설치
(병렬 버젼의 AMBER를 설치하려면 mpi가 있어야 하는데
여기서는 OPEN MPI를 기준으로 하며 어떤 MPI 컴포넌트라 하더라도 같은
AMBER와 같은 컴파일러로 컴파일하는 것이 오류를 줄일 수 있다.)
① 병렬로 build 한다.
 
 ] cd amber9
 ] cd src
 ] ./configure -openmpi -athlon g95
② 생성된 config.h 를 열어서
 FC=g95 를
 
 FC=$(MPI_HOME)/bin/mpif90 이나  
 FC=/home/xxxx/openmpi/bin/mpif90 으로 바꾼다. (아래것을 추천)
 여기에 대해서 설명을 하자면 mpif90 은 open mpi가 가지고 있는 wrapper 이다.
 실행과정에서 보면 위와같이 수정해도 어차피 g95 컴파일하지만
 설치과정에서 필요한 library가 자동으로 추가되어
 오류를 막는 장점이 있다.
 위와 같이 수정하지 않으면 오류가 생긴다.
③ Compile 한다.
(참고로 compile 중에 에러가 날 경우 make clean 후 다시 make parallel 한다.)
 (] make clean)
 ] make parallel
④ .bashrc 에 환경변수 추가
 PATH=$PATH:/home/xxxx/amber9:/home/xxxx/amber9/exe
 AMBERHOME=/home/xxxx/amber9
 
 다시 로그인한 후 다음과 같이 확인해본다.
 
 ] which sander.MPI
 (결과는 /home/xxxx/amber9/exe/sander.MPI )
 
⑤ test 해본다.
 ] export DO_PARALLEL=’mpiexec -n 2′
 (openmpi-default-hostfile 에 등록된 노드와 cpu 수가 두개 이상이어야 한다.)
 (여건이 되면 -n 4 나 그 이상을 해도 좋다.)
 
 ] cd ..
 ] cd test
 ] make test.parallel
 
⑥ 개개의 병렬 테스트가 PASSED 로 끝나고 POSSIBLE FAILURE 에 관해서는
   생성된 TEST_failure.diff 를 열어 reference 값과 실제 test 값의 차이를
   일일이 확인하여 차이가 작으면 합격이라고 볼 수 있다.
 

* PMEMD 설치
(Particle Mesh Ewald MD)
     설치 요구사항
 – g95 컴파일러 설치.
 – open mpi 설치(g95로 컴파일)
 – amber9 parallel 로 설치(g95)

① $AMBERHOME/src/pmemd/config_data/ 디렉토리에 아래 내용과 같은 파일을  athlon.g95.openmpi 라고 저장
————————–athlon.g95.openmpi——————————-
DIRFRC_DEFINES = -DDIRFRC_COMTRANS -DDIRFRC_EFS
MPI_DEFINES = -DMPI
MPI_INCLUDE = -I/home/common/openmpi/include
MPI_LIBS = -L/home/common/openmpi/lib -lmpi_f90 -lmpi -lorte -lopal -ldl -Wl
CPP = /lib/cpp
CPPFLAGS = -traditional -P
F90_DEFINES = -DFFTLOADBAL_2PROC
F90 = mpif90
MODULE_SUFFIX = mod
F90FLAGS = -c
F90_OPT_DBG = -g
F90_OPT_LO =  
F90_OPT_MED =
F90_OPT_HI = -O3 -fno-second-underscore
F90_OPT_DFLT =  $(F90_OPT_HI)

CC = gcc
CFLAGS = -O3
LOAD = mpif90
LOADFLAGS = -I/home/common/openmpi/include
LOADLIBS = -L/home/common/openmpi/lib -lmpi_f90 -lmpi -lorte -lopal -ldl -Wl
—————————————————————————

② $AMBERHOME/src/pmemd/에서 아래와 같이 빌드한다.
 
 ] ./configure athlon g95 openmpi
③ 컴파일 한다.
 ] make
 ] make install
서진우

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

7 Responses

  1. Lee 댓글:

    안녕하세요.

    저는 SIESTA라는 코드를 컴파일 하다가 생긴 문제를 해결 할 수 없어서, 구글 검색을 하다가 우연히 여기 블로그를 발견하게 되어 도움을 받고자 연락을 드립니다. 혹시 시간이 되신다면 제가 몇가지 질문을 드려도 괜찮을까요?

  2. Lee 댓글:

    정말 감사합니다. ^^

    SIESTA code는 정상적으로 잘 컴파일이 되었습니다. 하지만 작업 수행을 하면, 아래와 같은 에러 메세지가 발생합니다. 작업은 정상적으로 수행되는 것 처럼 보이지만, standard output을 보면, 같은 내용들이 중복되어 기록되어 있는 증상이 있습니다. 혹시 아래의 error 메세지를 통해 어떤 문제인지 확인해 주실 수 있으신가요?

    No species found!!!
    ERROR STOP from Node: 0
    [unset]: aborting job:
    application called MPI_Abort(MPI_COMM_WORLD, 1) – process 0

  3. 서진우 댓글:

    안녕하세요. 근래 자리에 붙여 있지 않아서 답변이 늦었습니다.
    관련해서 알려진 이슈가 있습니다.

    siesta code 의 몇몇 샘플예제에서 NumberOfspecies 값이 정의 되지 않는 경우가 있다고 합니다.
    이때 발생하는 오류가 “No species found” 라고 합니다.

    input file 의 내용들이 적합한지를 확인해 보시는 것이 좋을듯 합니다.

    • Lee 댓글:

      시간 내시어 살펴봐 주셔서 정말 감사드립니다. ^^ 한번 확인해 보도록 하겠습니다.

    • Lee 댓글:

      확인해 보니 INPUT 파일에 NumberOfSpecies값은 제대로 정의되어 있었습니다. serial 작업은 에러 없이 정상적으로 수행되는 것을 보면 병렬 처리 과정에서 문제가 발생하는 것 같습니다..

    • 서진우 댓글:

      혹시 2대 이상의 계산 노드로 작업하시는지요? 만일 2대 이상의 계산 노드를
      사용할 경우, 계산 노드간 공유 파일 서비스 환경이 구축되어 있지 않을 경우,
      두 계산 노드의 동일한 드렉토리 경로에 INPUT 파일 및 기타 작업에 필요한 파일
      들이 존재 해야 합니다.

      에러 메세지 만 보면, 병렬 계산에 할당된 특정 프로세서에서 INPUT 파일에서
      species 값을 찾지 못한다고 나오는 걸 보아, 이런 상황에 영향을 줄수 있는
      부분에 대해 살펴보시는 것이 좋을듯 합니다.

페이스북/트위트/구글 계정으로 댓글 가능합니다.

Copy Protected by Chetan's WP-Copyprotect.