Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

developpement:activites:integration:cp2k4squeeze [2013/03/22 16:19]
sbarends créée
developpement:activites:integration:cp2k4squeeze [2015/01/07 10:04]
Ligne 1: Ligne 1:
-====== Compilation et exécution de CP2K sous Debian Squeeze ====== 
- 
-<note important>​Il est maintenant possible d'​utiliser OpenMPI pour exploiter la version parallèle de CP2K. La version parallèle montre des gains de 4x pour une distribution sur 8 coeurs.</​note>​ 
- 
-===== Introduction à CP2K ===== 
- 
-Le [[http://​cp2k.berlios.de|site officiel]] de CP2K décrit de manière exhaustive les tenants et les aboutissants du projet. 
- 
-===== Récupération de l'​environnement de compilation ===== 
- 
-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. 
- 
-<​code>​sudo apt-get install cvs</​code>​ 
- 
-En plus d'un compilateur fortran, CP2K a besoin d'un certain nombre de librairies FFTW3, MPI, Scalapack, Lapack, Blacs 
-<​code>​sudo apt-get install gfortran libfftw3-dev liblapack-dev python-support bison flex byacc libopenmpi-dev mpi-default-bin mpi-default-dev</​code>​ 
- 
-==== Installation de Blacs et Scalapack ==== 
- 
-<​code>​sudo apt-get install libblacs-mpi1 libblacs-mpi-dev libscalapack-mpi1 libscalapack-mpi-dev</​code>​ 
- 
-===== Compilation de CP2K ===== 
- 
-==== Récupération des sources ==== 
- 
-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 ​ : 
- 
-  - Téléchargement par CVS :<​code>​ 
-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 
-</​code>​ 
-  - Téléchargement de l'​archive quotidienne :<​code>​ 
-cd $HOME 
-mkdir cp2k 
-cd cp2k 
-wget ftp://​ftp.berlios.de/​pub/​cp2k/​cp2k.tar.gz 
-tar xzf cp2k.tar.gz 
-</​code>​ 
-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 :<​code>​mv cp2k cp2k-$(date "​+%Y%m%d"​) 
-export CP2K_HOME=$HOME/​cp2k/​cp2k-$(date "​+%Y%m%d"​)</​code>​ 
- 
-Vérifier le côté récent de l'​archive : 
-<​code>​ 
-cd cp2k-$(date "​+%Y%m%d"​) 
-cvs update -dAP 
-</​code>​ 
- 
-==== Compilation et exécution en mode "​Série"​ ==== 
- 
-=== Compilation en mode série === 
- 
-Pour l'​architecture x86-64, le ''​Makefile''​ existe : 
-<​code>​ 
-cd $CP2K_HOME/​makefiles 
-make ARCH=Linux-x86-64-gfortran VERSION=sopt ​ 
-</​code>​ 
-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 : <​code>​cd $CP2K_HOME/​makefiles 
-make -j4 ARCH=Linux-x86-64-gfortran VERSION=sopt </​code>​ 
- 
-Pour l'​architecture i386, le ''​Makefile''​ n'​existe pas. Visiblement,​ la version FFTW fonctionne désormais. Il suffit donc de copier la version x86-64. 
- 
-Il est alors possible de télécharger directement la version pour i686, exempte de l'​utilisation de FFTW : 
-<​code>​ 
-cd $CP2K_HOME/​arch 
-cp Linux-x86-64-gfortran.sopt Linux-i686-gfortran.sopt 
-cd $CP2K_HOME/​makefiles 
-make ARCH=Linux-i686-gfortran VERSION=sopt ​ 
-</​code>​ 
-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 : <​code>​cd $CP2K_HOME/​makefiles 
-make -j4 ARCH=Linux-i686-gfortran VERSION=sopt </​code>​ 
- 
-La compilation se passe normalement sans problème 
- 
-=== Exécution en mode série === 
- 
-  * Pour une architecture x86-64 :<​code>​ 
-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 
-</​code>​ 
-  * Pour une architecture i686 :<​code>​ 
-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 
-</​code>​ 
- 
-==== Compilation et exécution en mode parallèle sous MPI ==== 
- 
-=== Compilation en mode MPI === 
- 
-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''​ 
-<​code>​ 
-# 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 
-</​code>​ 
- 
-Pour le télécharger et l'​installer directement : 
-  * pour la version x86-64 : <​code>​cd $CP2K_HOME/​arch/​ 
-wget http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​software/​CP2K/​Linux-x86-64-gfortran.popt 
-</​code>​ 
-  * pour la version i386 : <​code>​cd $CP2K_HOME/​arch/​ 
-wget http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​software/​CP2K/​Linux-i686-gfortran.popt 
-</​code>​ 
- 
-Pour la compilation :  
-  * pour la version x86-64 :<​code>​cd $CP2K_HOME/​makefiles 
-make ARCH=Linux-x86-64-gfortran VERSION=popt</​code>​ 
-  * pour la version i386 :<​code>​cd $CP2K_HOME/​makefiles 
-make ARCH=Linux-i686-gfortran VERSION=popt</​code>​ 
- 
-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 : <​code>​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</​code>​ 
- 
-=== Exécution d'un exemple en mode MPI === 
- 
-Lancement d'un exemple : <​code>​ 
-cd $CP2K_HOME/​tests/​Fist 
-orterun -np 8 $CP2K_HOME/​exe/​Linux-x86-64-gfortran/​cp2k.popt al2o3.inp 
-</​code>​ 
- 
-Pour l'​utiliser sur un certain nombre de noeuds, il est nécessaire de : 
-  * vérifier qu'il est possible de se connecter directement par SSH sur chaque noeud 
-  * lancer CP2K avec ''​orterun''​ : ''​orterun -np 4 $CP2K_HOME/​exe/​Linux-x86-64-gfortran/​cp2k.popt 32H2O-md.inp''​ 
- 
- --- //​[[emmanuel.quemener@ens-lyon.fr|Emmanuel Quemener]] 2011/05/27 06:57// 
  
developpement/activites/integration/cp2k4squeeze.txt · Dernière modification: 2015/01/07 10:04 (modification externe)