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édentes Révision précédente
Prochaine révision
Révision précédente
developpement:activites:integration:lammpsgpu4wheezy [2013/11/07 14:50]
equemene [Compilation avec FFTW et OpenMPI]
developpement:activites:integration:lammpsgpu4wheezy [2015/01/07 10:04] (Version actuelle)
Ligne 69: 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 163: 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 196: 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 202: 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 216: 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 227: 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.1383832247.txt.gz · Dernière modification: 2015/01/07 10:04 (modification externe)