Différences

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

Lien vers cette vue comparative

developpement:activites:integration:lammpsgpu4wheezy [2013/11/07 14:50]
equemene [Compilation avec FFTW et OpenMPI]
developpement:activites:integration:lammpsgpu4wheezy [2015/01/07 10:04]
Ligne 1: Ligne 1:
-  * [[developpement:​activites:​integration|Integration]] 
- 
-====== 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 é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. 
- 
-Pour cependant disposer d'une version exploitant les GPU, il est nécessaire de le recompiler soi-même pour dans le cadre d'​applications très spécifiques. 
- 
-===== Préparation du système ===== 
- 
-<​code>​ 
-apt-get install -y gfortran g++ libquadmath0 libblas3 liblapack3 libgfortran3 liblapack-dev openmpi-bin libopenmpi-dev 
-</​code>​ 
- 
-===== Téléchargement ​ ===== 
- 
-<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 
-wget -m -nd http://​lammps.sandia.gov/​tars/​lammps.tar.gz</​code>​ 
-  - Ouverture de l'​archive :<​code>​cd /opt 
-tar xzf /​root/​lammps.tar.gz</​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>​[ -h lammps ] && rm lammps 
-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>​ 
-  - Préparer le MPI local :<​code>​cd $LAMMPSROOT/​src/​STUBS 
-make clean 
-make 
-</​code>​ 
-===== Préparation des librairies connexes ​ ===== 
- 
-  - Compilation de la librairie MEAM:<​code>​ 
-cd $LAMMPSROOT/​lib/​meam 
-make -f Makefile.gfortran clean 
-make -f Makefile.gfortran 
-mv Makefile.lammps Makefile.lammps.intel 
-ln -s Makefile.lammps.gfortran Makefile.lammps</​code>​ 
-  - Compilation de la librairie COLVAR<​code>​ 
-cd $LAMMPSROOT/​lib/​colvars 
-make -f Makefile.g++ clean 
-make -f Makefile.g++</​code>​ 
-  - Compilation de la librairie POEMS<​code>​ 
-cd $LAMMPSROOT/​lib/​poems 
-make -f Makefile.g++ clean 
-make -f Makefile.g++</​code>​ 
-  - Compilation de la librairie REAX :<​code>​ 
-cd $LAMMPSROOT/​lib/​reax 
-make -f Makefile.gfortran clean 
-make -f Makefile.gfortran 
-mv Makefile.lammps Makefile.lammps.intel 
-ln -s Makefile.lammps.gfortran Makefile.lammps </​code>​ 
-  - Compilation de la librairie AWPMD<​code>​cd $LAMMPSROOT/​lib/​awpmd 
-make -f Makefile.openmpi clean 
-make -f Makefile.openmpi 
-</​code>​ 
- 
-Généralement,​ les librairies Cuda manuellement installées le sont dans ''/​opt/​cuda''​. Sur Debian Wheezy, les composants de Cuda (librairies,​ prototypes et binaires) sont installés respectivement dans les dossiers ''/​usr/​lib/​x86_64-linux-gnu'',​ ''/​usr/​include'',​ ''/​usr/​bin''​. Pour simplifier la modification,​ nous allons créer un dossier ''/​tmp/​cuda''​ pointant vers ces trois composants : 
-<​code>​ 
-mkdir /tmp/cuda 
-ln -s /​usr/​lib/​x86_64-linux-gnu /​tmp/​cuda/​lib64 
-ln -s /​usr/​include/​ /​tmp/​cuda/​include 
-ln -s /usr/bin /​tmp/​cuda/​bin 
-</​code>​ 
-===== Activation des modules ===== 
- 
-Compiler les éléments indispensables pour exécuter les exemples :<​code>​cd $LAMMPSROOT/​src 
-# activation de tous les modules 
-make yes-all 
-# suspension d'un module très specifique 
-make no-user-cuda 
-# suspension des modules qui font peter la compilation :-\ 
-make no-voronoi 
-make no-user-reaxc 
-make no-kim 
-make no-user-omp 
-</​code>​ 
-===== Compilation basique===== 
- 
-=== 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>​ 
- 
-=== Preparation de la librairie GPU couplée ​ === 
- 
-Si les composants sont ceux des paquets Debian Wheezy, bindés dans ''/​tmp/​cuda''​ 
-<​code>​ 
-cd $LAMMPSROOT/​lib/​gpu 
-sed -i '​s/​^CUDA_HOME/​CUDA_HOME\ = \/​tmp\/​cuda\n#​CUDA_HOME/​g'​ Makefile.serial 
-make -f Makefile.serial clean 
-make -f Makefile.serial 
-./​nvc_get_devices 
-</​code>​ 
- 
-=== Compilation sans MPI === 
- 
-<​code>​ 
-cd $LAMMPSROOT/​src/​MAKE 
-cp Makefile.serial Makefile.cuda 
-cd $LAMMPSROOT/​src 
-make yes-asphere 
-make yes-kspace 
-make yes-gpu 
-# lancer la compilation 
-make cuda 
-</​code>​ 
- 
-Si la compilation est réussie, un exécutable ''​lmp_cuda'',​ se trouve à la racine du dossier. 
- 
-===== Compilation avec FFTW  ===== 
- 
-=== Installation préliminaire === 
- 
-<​code>​ 
-sudo apt-get install -y fftw3 fftw-dev 
-</​code>​ 
- 
- 
-=== 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>​ 
- 
-=== Preparation de la librairie GPU couplée ​ === 
- 
-Si les composants sont ceux des paquets Debian Wheezy, bindés dans ''/​tmp/​cuda''​ 
-<​code>​ 
-cd $LAMMPSROOT/​lib/​gpu 
-sed -i '​s/​^CUDA_HOME/​CUDA_HOME\ = \/​tmp\/​cuda\n#​CUDA_HOME/​g'​ Makefile.serial 
-make -f Makefile.serial clean 
-make -f Makefile.serial 
-./​nvc_get_devices 
-</​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_LIB\ =/FFT_LIB\ =\ -lfftw3/​g"​ Makefile.fftw 
-cd $LAMMPSROOT/​src 
-make yes-asphere 
-make yes-kspace 
-make yes-gpu 
-</​code>​ 
- 
-=== Compilation === 
- 
-<​code>​ 
-# lancer la compilation 
-make cuda_fftw 
-</​code>​ 
- 
-Si la compilation est réussie, un exécutable ''​lmp_cuda_fftw'',​ se trouve à la racine du dossier. 
- 
-===== Compilation avec FFTW et OpenMPI ===== 
- 
-=== Installation préliminaire === 
- 
-<​code>​ 
-sudo apt-get install -y libopenmpi-dev openmpi-bin libopenmpi1.3 openmpi-common 
-sudo apt-get install -y libfftw3-3 ​ fftw-dev 
-</​code>​ 
- 
-=== Préparation du Makefile pour ATC === 
- 
-<​code>#​ Preparation de la librairie ATC couplée avec MPI 
-cd $LAMMPSROOT/​lib/​atc 
-cp Makefile.serial Makefile.mpic++ 
-sed -i "​s/​g++/​mpic++.openmpi/​g"​ Makefile.mpic++ 
-sed -i "​s/​\-fpermissive/​-fpermissive\ \-DMPICH_IGNORE_CXX_SEEK/​g"​ Makefile.mpic++ 
- 
-make -f Makefile.mpic++ clean 
-make -f Makefile.mpic++ 
-</​code>​ 
- 
-=== Préparation du Makefile pour GPU === 
- 
-Si les composants sont ceux des paquets Debian Wheezy, bindés dans ''/​tmp/​cuda''​ 
-<​code>​ 
-cd $LAMMPSROOT/​lib/​gpu 
-sed -i '​s/​^CUDA_HOME/​CUDA_HOME\ = \/​tmp\/​cuda\n#​CUDA_HOME/​g'​ Makefile.linux 
-make -f Makefile.linux clean 
-make -f Makefile.linux 
-./​nvc_get_devices 
-</​code>​ 
- 
-=== Préparation du Makefile === 
- 
-<​code>​cd $LAMMPSROOT/​src/​MAKE 
-cp Makefile.openmpi Makefile.cuda_openmpi 
-sed -i "​s/​FFT_INC\ =/FFT_INC\ =\ -DFFT_FFTW3/​g"​ Makefile.fftw 
-sed -i "​s/​FFT_LIB\ =/FFT_LIB\ =\ -lfftw3/​g"​ Makefile.fftw 
-cd $LAMMPSROOT/​src 
-make yes-asphere 
-make yes-kspace 
-make yes-gpu 
-</​code>​ 
- 
-=== Compilation === 
-  
-<​code>​cd $LAMMPSROOT/​src 
-make cuda_openmpi</​code>​ 
- 
-Si la compilation est réussie, un exécutable ''​lmp_cuda_openmpi'',​ se trouve à la racine du dossier. 
-===== Vérification de fonctionnement ===== 
- 
-La page [[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​dokuwiki/​doku.php?​id=tools4test|Tools4Test]] ​ et plus précisemment celle liée à  
-[[http://​www.cbp.ens-lyon.fr/​emmanuel.quemener/​dokuwiki/​doku.php?​id=tools4test#​lammps|Lammps]] détaille comment installer Lammps dans son environnement personnel (au CBP) et lancer quelques exemples. 
- 
  
developpement/activites/integration/lammpsgpu4wheezy.txt · Dernière modification: 2015/01/07 10:04 (modification externe)