Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
developpement:activites:integration:lammps4wheezy [2013/05/23 11:47] equemene [Preparation de la librairie ATC couplée] |
developpement:activites:integration:lammps4wheezy [2015/01/07 10:04] (Version actuelle) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
* [[developpement:activites:integration|Integration]] | * [[developpement:activites:integration|Integration]] | ||
- | ====== Installation de LAMMPS sur Debian Wheezy ====== | + | ====== Installation de LAMMPS sur GPU sur Debian Wheezy ====== |
+ | |||
+ | <note important>En construction</note> | ||
Lammps est disponible en [[http://packages.debian.org/stable/main/lammps|version 20120615]] dans la distribution Wheezy. | Lammps est disponible en [[http://packages.debian.org/stable/main/lammps|version 20120615]] dans la distribution Wheezy. | ||
Lammps est également disponible dans sa [[http://packages.debian.org/unstable/main/lammps|version 20130503]] dans la Sid au 22 mai 2013 : un rétroportage simple suffit à sa compilation. | Lammps est également disponible dans sa [[http://packages.debian.org/unstable/main/lammps|version 20130503]] dans la Sid au 22 mai 2013 : un rétroportage simple suffit à sa compilation. | ||
- | |||
- | Il peut cependant être nécessaire de le recompiler soi-même pour dans le cadre d'applications très spécifiques. | ||
===== Préparation du système ===== | ===== Préparation du système ===== | ||
<code> | <code> | ||
- | apt-get install gfortran g++ libquadmath0 libblas3 liblapack3 libgfortran3 liblapack-dev | + | apt-get install -y gfortran g++ libquadmath0 libblas3 liblapack3 libgfortran3 liblapack-dev openmpi-bin libopenmpi-dev |
</code> | </code> | ||
- | ===== Téléchargement & préparation ===== | + | |
+ | ===== Téléchargement ===== | ||
<note important>Toutes les commandes sont à effectuer comme ''root''</note> | <note important>Toutes les commandes sont à effectuer comme ''root''</note> | ||
+ | Alors, à l'origine, c'était plus simple de récupérer l'archive et de compiler LAMMPS à partir des sources récupérées dans ce bloc... Mais la version du 30 septembre archivée ne COMPILE PAS DU TOUT ! | ||
+ | |||
+ | Par la récupération de l'archive directement, plutôt déconseillé : | ||
- Récupération de la [[http://lammps.sandia.gov/download.html|dernière version]] sur le site de Sandia : <code>cd /root | - Récupération de la [[http://lammps.sandia.gov/download.html|dernière version]] sur le site de Sandia : <code>cd /root | ||
wget -m -nd http://lammps.sandia.gov/tars/lammps.tar.gz</code> | wget -m -nd http://lammps.sandia.gov/tars/lammps.tar.gz</code> | ||
- Ouverture de l'archive :<code>cd /opt | - Ouverture de l'archive :<code>cd /opt | ||
- | tar xvf /root/lammps.tar.gz</code> | + | tar xzf /root/lammps.tar.gz</code> |
- | - Changement des droits : <code>chown -R root.root lammps-*</code> | + | - Changement des droits : <code>chown -R root.root $(tar tzf /root/lammps.tar.gz | tail -1 | awk -F'/' '{ print $1 }')</code> |
- | - Etablissement d'un lien générique : <code>ln -s $(tar tzf /root/lammps.tar.gz | tail -1 | awk -F'/' '{ print $1 }') lammps</code> | + | - Etablissement d'un lien générique : <code>[ -h lammps ] && rm lammps |
- | - Passer dans l'archive :<code>cd $(tar tzf /root/lammps.tar.gz | tail -1 | awk -F'/' '{ print $1 }')</code> | + | ln -sf $(tar tzf /root/lammps.tar.gz | tail -1 | awk -F'/' '{ print $1 }') lammps</code> |
+ | |||
+ | |||
+ | Par la récupération de l'arbre SVN, plutôt conseillé maintenant : | ||
+ | - Récupération de l'arbre SVN sur le site de Sandia : <code>cd /opt | ||
+ | svn co svn://svn.icms.temple.edu/lammps-ro/trunk lammps-$(date "+%Y%m%d")</code> | ||
+ | - Etablissement d'un lien générique : <code>[ -h lammps ] && rm lammps | ||
+ | ln -sf lammps-$(date "+%Y%m%d") lammps</code> | ||
+ | |||
+ | La suite, c'est commun : | ||
+ | - Passer dans l'archive :<code>cd lammps</code> | ||
- Paramétrer une variable de racine pour Lammps : <code>export LAMMPSROOT=$(pwd)</code> | - Paramétrer une variable de racine pour Lammps : <code>export LAMMPSROOT=$(pwd)</code> | ||
- Préparer le MPI local :<code>cd $LAMMPSROOT/src/STUBS | - Préparer le MPI local :<code>cd $LAMMPSROOT/src/STUBS | ||
Ligne 30: | Ligne 44: | ||
make | make | ||
</code> | </code> | ||
- | - Préparer les librairies complémentaires :<code> | + | ===== Préparation des librairies connexes ===== |
- | # Compilation de la librairie MEAM | + | |
+ | - Compilation de la librairie MEAM:<code> | ||
cd $LAMMPSROOT/lib/meam | cd $LAMMPSROOT/lib/meam | ||
make -f Makefile.gfortran clean | make -f Makefile.gfortran clean | ||
make -f Makefile.gfortran | make -f Makefile.gfortran | ||
mv Makefile.lammps Makefile.lammps.intel | mv Makefile.lammps Makefile.lammps.intel | ||
- | ln -s Makefile.lammps.gfortran Makefile.lammps | + | ln -s Makefile.lammps.gfortran Makefile.lammps</code> |
- | + | - Compilation de la librairie COLVAR<code> | |
- | # Compilation de la librairie COLVARS | + | |
cd $LAMMPSROOT/lib/colvars | cd $LAMMPSROOT/lib/colvars | ||
make -f Makefile.g++ clean | make -f Makefile.g++ clean | ||
- | make -f Makefile.g++ | + | make -f Makefile.g++</code> |
- | + | - Compilation de la librairie POEMS<code> | |
- | # Compilation de la librairie POEMS | + | |
cd $LAMMPSROOT/lib/poems | cd $LAMMPSROOT/lib/poems | ||
make -f Makefile.g++ clean | make -f Makefile.g++ clean | ||
- | make -f Makefile.g++ | + | make -f Makefile.g++</code> |
- | + | - Compilation de la librairie REAX :<code> | |
- | # Compilation de la librairie REAX | + | |
cd $LAMMPSROOT/lib/reax | cd $LAMMPSROOT/lib/reax | ||
make -f Makefile.gfortran clean | make -f Makefile.gfortran clean | ||
make -f Makefile.gfortran | make -f Makefile.gfortran | ||
mv Makefile.lammps Makefile.lammps.intel | mv Makefile.lammps Makefile.lammps.intel | ||
- | ln -s Makefile.lammps.gfortran Makefile.lammps | + | ln -s Makefile.lammps.gfortran Makefile.lammps </code> |
- | + | - Compilation de la librairie AWPMD<code>cd $LAMMPSROOT/lib/awpmd | |
- | # Compilation de la librairie AWPMD | + | sed -i "s/mpic++/mpic++.openmpi/g" Makefile.openmpi |
- | cd $LAMMPSROOT/lib/awpmd | + | |
make -f Makefile.openmpi clean | make -f Makefile.openmpi clean | ||
make -f Makefile.openmpi | make -f Makefile.openmpi | ||
- | |||
</code> | </code> | ||
- | - Compiler les éléments indispensables pour exécuter les exemples :<code>cd $LAMMPSROOT/src | + | |
+ | ===== Activation des modules ===== | ||
+ | |||
+ | Compiler les éléments indispensables pour exécuter les exemples :<code>cd $LAMMPSROOT/src | ||
# activation de tous les modules | # activation de tous les modules | ||
make yes-all | make yes-all | ||
# suspension d'un module très specifique | # suspension d'un module très specifique | ||
- | make no-gpu | ||
make no-user-cuda | make no-user-cuda | ||
- | # suspension d'un module qui necessite une librairie supplementaire | + | # suspension des modules qui font peter la compilation :-\ |
make no-voronoi | make no-voronoi | ||
make no-user-reaxc | make no-user-reaxc | ||
make no-kim | make no-kim | ||
+ | make no-user-omp | ||
+ | make no-gpu | ||
</code> | </code> | ||
Ligne 78: | Ligne 92: | ||
<code> | <code> | ||
- | |||
cd $LAMMPSROOT/lib/atc | cd $LAMMPSROOT/lib/atc | ||
sed -e 's/\-O\ \-g/\-O\ \-g \-fpermissive/' -i~ Makefile.serial | sed -e 's/\-O\ \-g/\-O\ \-g \-fpermissive/' -i~ Makefile.serial | ||
Ligne 85: | Ligne 98: | ||
</code> | </code> | ||
- | === Compilation avec MPI === | + | === Compilation sans MPI === |
<code> | <code> | ||
cd $LAMMPSROOT/src | cd $LAMMPSROOT/src | ||
+ | make yes-asphere | ||
+ | make yes-kspace | ||
# lancer la compilation | # lancer la compilation | ||
make serial | make serial | ||
</code> | </code> | ||
- | Si la compilation est réussie, un exécutable statique ''lmp_serial'', se trouve à la racine du dossier. | + | Si la compilation est réussie, un exécutable ''lmp_cuda'', se trouve à la racine du dossier. |
===== Compilation avec FFTW ===== | ===== Compilation avec FFTW ===== | ||
- | Installation préliminaire | + | === Installation préliminaire === |
<code> | <code> | ||
sudo apt-get install -y fftw3 fftw-dev | sudo apt-get install -y fftw3 fftw-dev | ||
</code> | </code> | ||
- | Importation du Makefile [[http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/LAMMPS/Makefile.fftw|Makefile.fftw]] dans le répertoire $LAMMPSROOT/src/MAKE :<code>cd $LAMMPSROOT/src/MAKE | + | |
- | cp Makefile.serial Makefile.fftw | + | === Preparation de la librairie ATC couplée === |
+ | |||
+ | <code> | ||
+ | cd $LAMMPSROOT/lib/atc | ||
+ | sed -e 's/\-O\ \-g/\-O\ \-g \-fpermissive/' -i~ Makefile.serial | ||
+ | make -f Makefile.serial clean | ||
+ | make -f Makefile.serial | ||
+ | </code> | ||
+ | |||
+ | === Préparation du Makefile === | ||
+ | |||
+ | <code>cd $LAMMPSROOT/src/MAKE | ||
+ | cp Makefile.serial Makefile.cuda_fftw | ||
sed -i "s/FFT_INC\ =/FFT_INC\ =\ -DFFT_FFTW3/g" Makefile.fftw | sed -i "s/FFT_INC\ =/FFT_INC\ =\ -DFFT_FFTW3/g" Makefile.fftw | ||
sed -i "s/FFT_LIB\ =/FFT_LIB\ =\ -lfftw3/g" Makefile.fftw | sed -i "s/FFT_LIB\ =/FFT_LIB\ =\ -lfftw3/g" Makefile.fftw | ||
+ | cd $LAMMPSROOT/src | ||
+ | make yes-asphere | ||
+ | make yes-kspace | ||
</code> | </code> | ||
- | Compilation | + | === Compilation === |
- | <code>cd $LAMMPSROOT/src | + | |
- | make fftw</code> | + | <code> |
+ | # lancer la compilation | ||
+ | make fftw | ||
+ | </code> | ||
+ | |||
+ | Si la compilation est réussie, un exécutable ''lmp_fftw'', se trouve à la racine du dossier. | ||
- | Si la compilation est réussie, un exécutable statique ''lmp_fftw'', se trouve à la racine du dossier. | ||
===== Compilation avec FFTW et OpenMPI ===== | ===== Compilation avec FFTW et OpenMPI ===== | ||
- | Installation préliminaire | + | === Installation préliminaire === |
<code> | <code> | ||
sudo apt-get install -y libopenmpi-dev openmpi-bin libopenmpi1.3 openmpi-common | sudo apt-get install -y libopenmpi-dev openmpi-bin libopenmpi1.3 openmpi-common | ||
- | sudo apt-get install -y fftw3 fftw-dev | + | sudo apt-get install -y libfftw3-3 fftw-dev |
</code> | </code> | ||
- | Importation du Makefile pour ATC et compilation [[http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/LAMMPS/Makefile.mpic++|Makefile.mpic++]] dans le répertoire ''$LAMMPSROOT/lib/atc'' :<code># Preparation de la librairie ATC complée avec MPI | + | === Préparation du Makefile pour ATC === |
+ | |||
+ | <code># Preparation de la librairie ATC couplée avec MPI | ||
cd $LAMMPSROOT/lib/atc | cd $LAMMPSROOT/lib/atc | ||
cp Makefile.serial Makefile.mpic++ | cp Makefile.serial Makefile.mpic++ | ||
sed -i "s/g++/mpic++.openmpi/g" Makefile.mpic++ | sed -i "s/g++/mpic++.openmpi/g" Makefile.mpic++ | ||
sed -i "s/\-fpermissive/-fpermissive\ \-DMPICH_IGNORE_CXX_SEEK/g" Makefile.mpic++ | sed -i "s/\-fpermissive/-fpermissive\ \-DMPICH_IGNORE_CXX_SEEK/g" Makefile.mpic++ | ||
- | |||
make -f Makefile.mpic++ clean | make -f Makefile.mpic++ clean | ||
make -f Makefile.mpic++ | make -f Makefile.mpic++ | ||
</code> | </code> | ||
- | Importation du Makefile [[http://www.cbp.ens-lyon.fr/emmanuel.quemener/software/LAMMPS/Makefile.openmpi|Makefile.openmpi]] dans le répertoire ''$LAMMPSROOT/src/MAKE'' :<code>cd $LAMMPSROOT/src/MAKE | + | === Préparation du Makefile === |
- | sed -i "s/\-lfftw/\-lfftw3/g" Makefile.openmpi</code> | + | |
- | Compilation | + | <code>cd $LAMMPSROOT/src/MAKE |
+ | sed -i "s/mpic++/mpic++.openmpi/g" Makefile.openmpi | ||
+ | sed -i "s/FFT_INC\ =/FFT_INC\ =\ -DFFT_FFTW3/g" Makefile.openmpi | ||
+ | sed -i "s/FFT_LIB\ =/FFT_LIB\ =\ -lfftw3/g" Makefile.openmpi | ||
+ | cd $LAMMPSROOT/src | ||
+ | make yes-asphere | ||
+ | make yes-kspace | ||
+ | </code> | ||
+ | |||
+ | === Compilation === | ||
+ | |||
<code>cd $LAMMPSROOT/src | <code>cd $LAMMPSROOT/src | ||
- | make openmpi</code> | + | make -j 4 openmpi</code> |
+ | |||
+ | Si la compilation est réussie, un exécutable ''lmp_openmpi'', se trouve à la racine du dossier. | ||
- | Si la compilation est réussie, un exécutable statique ''lmp_openmpi'', se trouve à la racine du dossier. | ||
===== Vérification de fonctionnement ===== | ===== Vérification de fonctionnement ===== | ||