Différences

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

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
developpement:activites:integration:lammpsgpu4wheezy [2013/11/07 10:09] – [Téléchargement] equemenedeveloppement:activites:integration:lammpsgpu4wheezy [2013/11/08 08:14] (Version actuelle) – [Compilation avec FFTW et OpenMPI] equemene
Ligne 36: Ligne 36:
   - Récupération de l'arbre SVN sur le site de Sandia : <code>cd /opt   - 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> 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>+  - 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 : La suite, c'est commun :
Ligne 68: Ligne 69:
 ln -s Makefile.lammps.gfortran Makefile.lammps </code> ln -s Makefile.lammps.gfortran Makefile.lammps </code>
   - Compilation de la librairie AWPMD<code>cd $LAMMPSROOT/lib/awpmd   - Compilation de la librairie AWPMD<code>cd $LAMMPSROOT/lib/awpmd
 +sed -i "s/mpic++/mpic++.openmpi/g" Makefile.openmpi
 make -f Makefile.openmpi clean make -f Makefile.openmpi clean
 make -f Makefile.openmpi make -f Makefile.openmpi
Ligne 86: Ligne 88:
 # suspension d'un module très specifique # suspension d'un module très specifique
 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
 </code> </code>
 ===== Compilation basique===== ===== Compilation basique=====
Ligne 161: Ligne 164:
 <code>cd $LAMMPSROOT/src/MAKE <code>cd $LAMMPSROOT/src/MAKE
 cp Makefile.serial Makefile.cuda_fftw 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.cuda_fftw 
-sed -i "s/FFT_LIB\ =/FFT_LIB\ =\ -lfftw3/g" Makefile.fftw+sed -i "s/FFT_LIB\ =/FFT_LIB\ =\ -lfftw3/g" Makefile.cuda_fftw
 cd $LAMMPSROOT/src cd $LAMMPSROOT/src
 make yes-asphere make yes-asphere
Ligne 184: Ligne 187:
 <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>
  
Ligne 194: Ligne 197:
 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++
Ligne 200: Ligne 202:
  
 === Préparation du Makefile pour GPU === === Préparation du Makefile pour GPU ===
 +
 +La librairie GPU doit être compilée en fonction du GPU à disposition : Nvidia fournit un tableau dans sa [[https://www.clear.rice.edu/comp422/resources/cuda/html/cuda-compiler-driver-nvcc/index.html|documentation]] permettant de choisir en fonction de sa carte. Le fichier à modifier est ''$LAMMPSROOT/lib/gpu/Makefile.linux''.
 +
 +Ce qu'il faut retenir :
 +  * Pour une carte Tesla
 +    * sm_10 : basique
 +    * sm_11 : opérations atomiques en mémoire globale
 +    * sm_12 : opérations atomiques en mémoire partagée
 +    * sm_13 : support de la double précision
 +  * Pour une carte Fermi :
 +    * sm_20
 +    * sm_21
 +  * Pour une carte Kepler :
 +    * sm_30
 +    * sm_35
 +
 +Par exemple, une carte GTX Titan est équipé d'un circuit Kepler. Nous avons donc :<code>CUDA_ARCH = -arch=sm_30
 +</code>
  
 Si les composants sont ceux des paquets Debian Wheezy, bindés dans ''/tmp/cuda'' Si les composants sont ceux des paquets Debian Wheezy, bindés dans ''/tmp/cuda''
 <code> <code>
 cd $LAMMPSROOT/lib/gpu cd $LAMMPSROOT/lib/gpu
 +# Modification de la racine de CUDA
 sed -i 's/^CUDA_HOME/CUDA_HOME\ = \/tmp\/cuda\n#CUDA_HOME/g' Makefile.linux sed -i 's/^CUDA_HOME/CUDA_HOME\ = \/tmp\/cuda\n#CUDA_HOME/g' Makefile.linux
 +# Modification de l'architecture (ici une Kepler)
 +sed -i 's/^CUDA_ARCH/# Kepler CUDA\nCUDA_ARCH\ =\ \-arch\=sm_30\n#CUDA_ARCH/g' Makefile.linux
 +# Modification du compilateur mpic++ (force a OpenMPI)
 +sed -i "s/mpic++/mpic++.openmpi/g" Makefile.linux
 make -f Makefile.linux clean make -f Makefile.linux clean
-make -f Makefile.linux+make -j 4 -f Makefile.linux
 ./nvc_get_devices ./nvc_get_devices
 </code> </code>
Ligne 214: Ligne 239:
 <code>cd $LAMMPSROOT/src/MAKE <code>cd $LAMMPSROOT/src/MAKE
 cp Makefile.openmpi Makefile.cuda_openmpi cp Makefile.openmpi Makefile.cuda_openmpi
-sed -i "s/FFT_INC\ =/FFT_INC\ =\ -DFFT_FFTW3/g" Makefile.fftw +sed -i "s/mpic++/mpic++.openmpi/g" Makefile.cuda_openmpi 
-sed -i "s/FFT_LIB\ =/FFT_LIB\ =\ -lfftw3/g" Makefile.fftw+sed -i "s/FFT_INC\ =/FFT_INC\ =\ -DFFT_FFTW3/g" Makefile.cuda_openmpi 
 +sed -i "s/FFT_LIB\ =/FFT_LIB\ =\ -lfftw3/g" Makefile.cuda_openmpi
 cd $LAMMPSROOT/src cd $LAMMPSROOT/src
 make yes-asphere make yes-asphere
Ligne 225: Ligne 251:
    
 <code>cd $LAMMPSROOT/src <code>cd $LAMMPSROOT/src
-make cuda_openmpi</code>+make -j 4 cuda_openmpi</code>
  
 Si la compilation est réussie, un exécutable ''lmp_cuda_openmpi'', se trouve à la racine du dossier. Si la compilation est réussie, un exécutable ''lmp_cuda_openmpi'', se trouve à la racine du dossier.
developpement/activites/integration/lammpsgpu4wheezy.1383818975.txt.gz · Dernière modification : (modification externe)