CPMD

i2basque(e)tik

Hona jo: nabigazioa, bilatu

CPMD uhin zapaletarako eta sasi-ahalezkoetarako dentsitate funtzionalaren teoriaren inplementazio paralelizatua da, eta, batik bat, Car-Parrinello-ren simulazioetan oinarrituriko dinamika molekularra kalkulatzeko diseinaturik dago.

CPMDren instalazioa 64 biterako

Lehenengo eta behin, programaren iturri-kodea deskargatu behar da CPMD-tik. Sisteman programa honen 3.9.2 bertsioa instalatu da.

Deskonprimatu ondoren, partxe bat instalatu behar dugu, fileopen errutinan konpondu beharreko akatsak baitaude. Partxea eta script-a deskargatu behar dira, instalazioa egiteko. Partxea iturrien direktoriotik instalatzen da (SOURCE direktorioa).

Agindurik gehienak CPMD vs. Linux-etik egokituta daude, erabiliko ditugun halako makinetarako pertsonalizatuta: Intel EM64T biprozesadoreak, MPI eta OpenMP eta errendimendu altuko liburutegi matematikoak erabiliz (Intel MKL, Math Kernel Libraries).

CPMD instalatu baino lehen, Intel MKL liburutegiak instalatu ditugu, baina LAPACK eta BLAS liburutegi matematikoak ere erabil daitezke (arkitektura desberdinetarako aldez aurretik konpilatuak), goian aipaturiko orrialdetik deskargatuta. Gure kasuan, libatlas_x86_64.a liburutegiarekin egin dugu proba, libatlas_x86_64_mt.a liburutegiarekin egin beharrean; berbera da biprozesadoreetarako, baina ez dabil; izan daiteke AMD Opteron-erako konpilaturik daudelako, Intel EM64T arkitekturarako konpilatuta egon beharrean.

Egindako probek errendimendu handiagoa adierazten dute Intel MKL liburutegia erabilita, LAPACK eta BLAS liburutegiak erabilita baino.

CPMD instalatzeko orduan, Makefile fitxategia sortuko dugu, hori beharrezkoa baita liburutegia eta programa konpilatzeko. Horretarako, SOURCE direktorioan kokatu eta hauxe jarriko dugu:

./mkconfig.sh -m -SRC=$PWD -DEST=../IFORT-AMD64-MPI/ IFORT-AMD64-MPI

Horrela, IFORT-AMD64-MPI direktorio bat sortuko dugu CPMDren erroan, Makefile fitxategia sortu ondoren, eta horrela, iturriak konpilatu ahal izango ditugu.

Iturrien bertsioan IFORT-AMD64-MPI script-a ez badator, behean adierazita dago, eta SOURCE/CONFIGURE/IFORT-AMD64-MPI-n jarri behar da

#INFO#
#INFO# Configuration to build a parallel cpmd executable for a linux machine
#INFO# with an AMD64/EM64T cpu (Opteron/AthlonFX/Athlon64/Xeon-EM64T) using 
#INFO# the Intel Fortran Compiler with EM64T extensions.
#INFO#
#INFO# For optimal performance you should use a specifically tuned BLAS/LAPACK
#INFO# library. 
#INFO#
#INFO# see http://www.theochem.ruhr-uni-bochum.de/~axel.kohlmeyer/cpmd-linux.html
#INFO# for more information on compilind and running CPMD on linux machines.
#INFO#
#INFO# NOTE: CPMD cannot be compiled with the GNU Fortran compiler.
#INFO#
    IRAT=2
    CFLAGS='-O2 -Wall -m64'
    CPP='/lib/cpp -P -C -traditional'
    CPPFLAGS='-D__Linux -D__PGI -DFFT_DEFAULT -DPOINTER8 -DLINUX_IFC \
       -DPARALLEL -DMYRINET'
    FFLAGS='-pc64  -tpp7 -O3 -unroll'
    LFLAGS='-static-libcxa -L. -latlas_x86_64'
    FFLAGS_GROMOS='-Dgood_luck'
    if [ $debug ]; then
      FC='mpif77 -c -g'
      CC='mpicc -g -Wall -m64'
      LD='mpif77 -g'
    else
      FC='mpif77 -c '
      CC='mpicc'
      LD='mpif77 '
    fi

IFORT-AMD64-MPI script-a erabiltzen da: izenak berak dioenez, Fortran ifort-en (Intel) konpilatzaileak oinarrituriko Makefile fitxategi bat egiteko da, AMD64 (EMT64ren modukoa) arkitekturarako, eta MPIrekiko erabilera paralelizatuko aukerarekin.

IFORT-AMD64-MPI direktorioan sartuko gara; CPMDren iturrien errotik esekita dago eta sorberria da. Fitxategi hori editatu eta honako aldaketa hauek egingo ditugu:

#----------------------------------------------------------------------------
# Makefile for cpmd.x (plane wave electronic calculation)
# Configuration: IFORT-AMD64-MPI
# Creation of Makefile: Aug 23 2006
# on Linux vit1.grid.i2bask.net 2.6.8-10-em64t-p4-smp #1 SMP Fri Jan 28 05:39:41 CET 2005 x86_64 GNU/Linux
# Author: ridruejo
#----------------------------------------------------------------------------
#
SHELL = /bin/sh
#
#--------------- Default Configuration for IFORT-AMD64-MPI ---------------
SRC  = .
DEST = .
BIN  = .
#QMMM_FLAGS = -D__QMECHCOUPL
#QMMM_LIBS  = -L. -lmm
FFLAGS = -pc64  -tpp7 -O3 -unroll -fpp -openmp
LFLAGS = -Xlinker -lsvml -L. \
 -L/opt/mkl/8.0.1/lib/em64t -lmkl_lapack -lmkl_em64t \
 -lguide -Vaxlib

CFLAGS = -O2 -Wall -m64
CPP = /lib/cpp -P -C -traditional
CPPFLAGS = -D__Linux -D__PGI -DFFT_DEFAULT -DPOINTER8 -DLINUX_IFC \
        -DPARALLEL -DMYRINET
NOOPT_FLAG =
CC = /opt/mpich-cpmd64/bin/mpicc
FC = /opt/mpich-cpmd64/bin/mpif77 -c
LD = /opt/mpich-cpmd64/bin/mpif77
AR = ar

#----------------------------------------------------------------------------

#----------------------------------------------------------------------------
# Personal Configuration
#----------------------------------------------------------------------------
SRC = /home/julen/instalation_files/CPMD-3.9.2/SOURCE
FC = /opt/mpich-cpmd64/bin/mpif77 -c  -I. -I$(SRC)
#----------------------------------------------------------------------------
# End of Personal Configuration
#----------------------------------------------------------------------------
CFGDEST = ../IFORT-AMD64-MPI/
CFGMACH = IFORT-AMD64-MPI
#
#  LIST OF FILES
#.......................
#.......................
#.......................
################## SIGUE EL FICHERO Makefile SIN MODIFICACIONES #############

Goiko testuan cyan-en azpimarraturiko aldaketak ikusten dira. FFLAGS aldaera aldatu egin da OpenMP-rekin erabiltzeko (-fpp –openmp). LFLAGS aldagaia aldatu egin da, Intel MKL liburutegiarekin erabiltzeko, eta CC, FC eta LD aldaerak aldatu egin dira MPICHen inplementazioan erabiltzeko (CPMDrekin erabiltzeko berariaz konpilatuta).

Aldaketa egin ostean, make egin eta itxaron egin behar da konpilazioak azkenean akatsa eman arte, IZAMAX funtzioaren bikoiztasunaren eraginez, hori util-f fitxategian eta Intel MKL liburutegian baitago; ikusi Error IZAMAX. Nahikoa da direktorio honetan sortu den util.f fitxategia aldatzea eta bertan dauden IZAMAX funtzioaren lerro guztiak komentatzea, Intel MKL liburutegian dagoen IZAMAX funtzioa bakarrik erabiltzeko. Funtzioa komentatu ondoren, make egin behar da berriro.

Exekutagarria honako honetan dago:

/opt/mpich-cpmd64/bin/cpmd64.x

CPMDren 32 biteko bertsioa ere instalatu da:

/opt/mpich-cpmd32/bin/cpmd.x

La línea de configuración es:

./mkconfig.sh -m -SRC=$PWD -DEST=../PC-IFC-P4-MPI/ PC-IFC-P4-MPI

32 biteko bertsioaren Makefile fitxategia:

#----------------------------------------------------------------------------
# Makefile for cpmd.x (plane wave electronic calculation)
# Configuration: PC-IFC-P4-MPI
# Creation of Makefile: Jan 11 2006
# on Linux don1.grid.i2bask.net 2.6.10-1-686-smp #1 SMP Fri Mar 11 01:49:45 EST 2005 i686 GNU/Linux
# Author: ridruejo
#----------------------------------------------------------------------------
#
SHELL = /bin/sh
#
#--------------- Default Configuration for PC-IFC-P4-MPI ---------------
SRC  = .
DEST = .
BIN  = .
#QMMM_FLAGS = -D__QMECHCOUPL
#QMMM_LIBS  = -L. -lmm
FFLAGS = -c -w90 -w95 -O2 -unroll -pc64 -tpp7 -cm -fpp -openmp
#LFLAGS = -llapack-ifc -lblas-ifc -latlas-ifc -Vaxlib $(QMMM_LIBS)
#LFLAGS = -L. -latlas -Vaxlib $(QMMM_LIBS)
LFLAGS =  -static-libcxa -Xlinker -Bstatic -lsvml         \
 -L/opt/mkl/8.0.1/lib/32 -lmkl_lapack -lmkl_ia32 \
 -lguide -Vaxlib -Xlinker -Bdynamic -lpthread
CFLAGS = -c -O2 -Wall
CPP = /lib/cpp -P -C -traditional
CPPFLAGS = -D__Linux -D__PGI -DFFT_DEFAULT \
               -DPARALLEL -DMYRINET -DLINUX_IFC  
NOOPT_FLAG = 
CC = /opt/mpich-cpmd/bin/mpicc 
FC = /opt/mpich-cpmd/bin/mpif77 
LD = /opt/mpich-cpmd/bin/mpif77
AR = ar
#----------------------------------------------------------------------------
  
#----------------------------------------------------------------------------
# Personal Configuration
#----------------------------------------------------------------------------
SRC = /home/julen/CPMD-3.9.2/SOURCE
FC = /opt/mpich-cpmd/bin/mpif77 -fpp -openmp -I. -I$(SRC)
#----------------------------------------------------------------------------
# End of Personal Configuration
#----------------------------------------------------------------------------
CFGDEST = ../cpmd-pc-ifc-p4-mpi/
CFGMACH = PC-IFC-P4-MPI
#
#  LIST OF FILES
#.......................
#.......................
#.......................
################## SIGUE EL FICHERO Makefile SIN MODIFICACIONES #############

Otro ejemplo de Makefile para 64 bits sin MPI pero con soporte OpenMP, con las Intel MKL en un Core 2 Duo de Intel y con la versión de CPMD 3.11:

#----------------------------------------------------------------------------
# Makefile for cpmd.x (plane wave electronic calculation)
# Configuration: IFORT-AMD64
# Creation of Makefile: Nov 24 2006
# on Linux nubo.localdomain 2.6.18-1.2849.fc6 #1 SMP Fri Nov 10 12:34:46 EST 2006 x86_64 x86_64 x86_64 GNU/Linux
# Author: root
#----------------------------------------------------------------------------
#
SHELL = /bin/sh
#
#--------------- Default Configuration for IFORT-AMD64 ---------------
SRC  = .
DEST = .
BIN  = .
FFLAGS = -pc64  -tpp6 -O2 -unroll -fpp -openmp 
LFLAGS =  -L. -L/opt/intel/mkl/8.1/lib/em64t -lmkl_lapack \
          -lmkl_em64t -lguide -lpthread
CFLAGS = -O2 -Wall -m64
CPP = /lib/cpp -P -C -traditional
CPPFLAGS = -D__Linux -D__PGI -DFFT_DEFAULT -DPOINTER8 -DLINUX_IFC  
NOOPT_FLAG = 
CC = gcc
FC = /opt/intel/fce/9.1.036/bin/ifort -c 
LD = /opt/intel/fce/9.1.036/bin/ifort -i-static
AR = ar
#----------------------------------------------------------------------------
# Personal Configuration
#----------------------------------------------------------------------------
SRC = /home/julen/Gauzak/Programak/CPMD/CPMD-3.11.1/SOURCE
FC = /opt/intel/fce/9.1.036/bin/ifort -c  -I. -I$(SRC)
#----------------------------------------------------------------------------
# End of Personal Configuration
#----------------------------------------------------------------------------
CFGDEST = ../IFORT-AMD64/
CFGMACH = IFORT-AMD64
CFGQMMM = 
# 
#  LIST OF FILES
#.......................
#.......................
#.......................
################## SIGUE EL FICHERO Makefile SIN MODIFICACIONES #############

Itzuli i2BASKen GRID eskuliburura

Tresna pertsonalak
Beste hizkuntzetan