Le site officiel de CP2K décrit de manière exhaustive les tenants et les aboutissants du projet.
Malheureusement, il n'existe pas encore pour CP2K la notion de version. Le téléchargement des sources consiste donc à descendre l'arbre CVS complet sur sa machine.
sudo apt-get install cvs
En plus d'un compilateur fortran, CP2K a besoin d'un certain nombre de librairies FFTW3, MPI, Scalapack, Lapack, Blacs
sudo apt-get install gfortran libfftw3-dev liblapack-dev python-support bison flex byacc libopenmpi-dev
Le problème vient du fait que Blacs et Scalapack ne sont disponibles que pour les implémentations de LAM et MPich. L'utilisation de MPich2 dans CP2K exigeait donc quelques aménagements du système : installer les versions rétro-portées de Blacs et Scalapack fonctionnant avec OpenMPI.
Comme la librairie MPich2 n'est pas disponible dans la Debian Lenny, il est nécessaire d'installer manuellement ces paquets, après avoir purgé les autres paquets relatifs à MPich.
wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/mpi-default-bin_0.6_amd64.deb wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/mpi-default-dev_0.6_amd64.deb sudo dpkg -i mpi-default-bin_0.6_amd64.deb mpi-default-dev_0.6_amd64.deb
wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/mpi-default-bin_0.6_i386.deb wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/mpi-default-dev_0.6_i386.deb sudo dpkg -i mpi-default-bin_0.6_i386.deb mpi-default-dev_0.6_i386.deb
Les librairies Blacs et Scalapack sont disponibles dans la Debian Lenny, mais pas avec OpenMPI. Il est donc aussi nécessaire d'installer manuellement ces paquets, après avoir purgé les autres paquets relatifs à Blacs et Scalapack.
L'installation de Blacs nécessite 4 étapes :
dpkg --get-selections | grep blacs | grep install | awk '{ print $1 }' | while read DEB; do sudo apt-get -y remove --purge $DEB; done
dpkg --get-selections | grep scalapack | grep install | awk '{ print $1 }' | while read DEB; do sudo apt-get -y remove --purge $DEB; done
wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/libblacs-mpi1_1.1-28.2_amd64.deb wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/libblacs-mpi-dev_1.1-28.2_amd64.deb wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/libscalapack-mpi1_1.8.0-6_amd64.deb wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/libscalapack-mpi-dev_1.8.0-6_amd64.deb
wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/libblacs-mpi1_1.1-28.2_i386.deb wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/libblacs-mpi-dev_1.1-28.2_i386.deb wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/libscalapack-mpi1_1.8.0-6_i386.deb wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/debian/libscalapack-mpi-dev_1.8.0-6_i386.deb
sudo dpkg -i libblacs-mpi1_1.1-28.2_amd64.deb libblacs-mpi-dev_1.1-28.2_amd64.deb sudo dpkg -i libscalapack-mpi1_1.8.0-6_amd64.deb libscalapack-mpi-dev_1.8.0-6_amd64.deb
sudo dpkg -i libblacs-mpi1_1.1-28.2_amd64.deb libblacs-mpi-dev_1.1-28.2_i386.deb sudo dpkg -i libscalapack-mpi1_1.8.0-6_amd64.deb libscalapack-mpi-dev_1.8.0-6_i386.deb
Deux méthodes pour récupérer les sources de CP2K : le téléchargement via CVS et le téléchargement direct de l'archive construite quotidiennement :
touch $HOME/.cvspass cd $HOME mkdir cp2k cd cp2k cvs -d:pserver:anonymous@cvs.cp2k.berlios.de:/cvsroot/cp2k login # Taper 2 fois <entrer> cvs -z3 -d:pserver:anonymous@cvs.cp2k.berlios.de:/cvsroot/cp2k co cp2k
cd $HOME mkdir cp2k cd cp2k wget ftp://ftp.berlios.de/pub/cp2k/cp2k.tar.gz tar xzf cp2k.tar.gz
Pour s'y retrouver entre les versions de CP2K, il est raisonnable de renommer le répertoire cp2k
en le préfixant de la date du jour et de définir une variable d'environnement CP2K_HOME :
mv cp2k cp2k-$(date "+%Y%m%d") export CP2K_HOME=$HOME/cp2k/cp2k-$(date "+%Y%m%d")
Vérifier le côté récent de l'archive :
cd cp2k-$(date "+%Y%m%d") cvs update -dAP
Pour l'architecture x86-64, le Makefile
existe :
cd $CP2K_HOME/makefiles make ARCH=Linux-x86-64-gfortran VERSION=sopt
Si la machine de compilation dispose de X
coeurs, il est possible d'utiliser la primitive -jX
pour accélérer la phase de compilation. Ainsi, pour un quadri-coeur, cela représente :
cd $CP2K_HOME/makefiles make -j4 ARCH=Linux-x86-64-gfortran VERSION=sopt
Pour l'architecture i386, le Makefile
n'existe pas. Une première solution pourrait consister à copier la version x86-64 : le programme compile mais plante à l'exécution. Un méchant message d'erreur sur l'utilisation de FFTW apparaît.
Il est alors possible de télécharger directement la version pour i686, exempte de l'utilisation de FFTW :
cd $CP2K_HOME/arch wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/CP2K/Linux-i686-gfortran.sopt cd $CP2K_HOME/makefiles make ARCH=Linux-i686-gfortran VERSION=sopt
Si la machine de compilation dispose de X
coeurs, il est possible d'utiliser la primitive -jX
pour accélérer la phase de compilation. Ainsi, pour un quadri-coeur, cela représente :
cd $CP2K_HOME/makefiles make -j4 ARCH=Linux-i686-gfortran VERSION=sopt
La compilation se passe normalement sans problème
cd $CP2K_HOME/tests/ATOM/regtest-1 ls *.inp | while read INP do $CP2K_HOME/exe/Linux-x86-64-gfortran/cp2k.sopt -o $(basename $INP inp)out $INP done
cd $CP2K_HOME/tests/ATOM/regtest-1 ls *.inp | while read INP do $CP2K_HOME/exe/Linux-i686-gfortran/cp2k.sopt -o $(basename $INP inp)out $INP done
C'est ici que vont servir les paquets OpenMPI, Blacs et Scalapack.
Voici le fichier Makefile pour architecture x86-64 : $CP2K_HOME/arch/Linux-x86-64-gfortran.popt
# target: x86-64 Debian Lenny # # worked for Apple iMac i5 (EQ, Mar. 2010) # # check stack size and possibly set a sufficient stack size: # e.g. ulimit -s 256000 (or more) # CC = gcc CPP = FC = gfortran LD = gfortran AR = ar -r DFLAGS = -D__GFORTRAN -D__FFTW3 -D__parallel -D__BLACS -D__SCALAPACK CPPFLAGS = FCFLAGS = $(DFLAGS) -O2 -ffast-math -funroll-loops \ -ftree-vectorize -ffree-form -ffree-line-length-none\ -I/usr/lib/openmpi/include LDFLAGS = $(FCFLAGS) -L/usr/lib/openmpi/lib LIBS = -lscalapack-openmpi -lblacsF77init-openmpi -lblacs-openmpi \ -llapack -lfftw3 OBJECTS_ARCHITECTURE = machine_gfortran.o
Pour le télécharger et l'installer directement :
cd $CP2K_HOME/arch/ wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/CP2K/Linux-x86-64-gfortran.popt
cd $CP2K_HOME/arch/ wget http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/CP2K/Linux-i686-gfortran.popt
Pour la compilation :
cd $CP2K_HOME/makefiles make ARCH=Linux-x86-64-gfortran VERSION=popt
cd $CP2K_HOME/makefiles make ARCH=Linux-i686-gfortran VERSION=popt
Pour le compiler plus rapidement sur un système multi-coeur, il est possible d'utiliser l'option -jX
ou X
est le nombre de coeurs.
Sur un bi-quadricoeur, cela devient :
cd $CP2K_HOME/makefiles # pour la version x86-64 make -j8 ARCH=Linux-x86-64-gfortran VERSION=popt # pour la version i386 make -j8 ARCH=Linux-i686-gfortran VERSION=popt
Lancement d'un exemple :
cd $CP2K_HOME/tests/Fist orterun -np 8 $CP2K_HOME/exe/Linux-x86-64-gfortran/cp2k.popt al2o3.inp
Pour l'utiliser sur un certain nombre de noeuds, il est nécessaire de :
orterun
: orterun -np 4 $CP2K_HOME/exe/Linux-x86-64-gfortran/cp2k.popt 32H2O-md.inp
— Emmanuel Quemener 2010/12/02 14:32