Installation de LAMMPS sur GPU sur Debian Wheezy

En construction

Lammps est disponible en version 20120615 dans la distribution Wheezy.

Lammps est également disponible dans sa version 20130503 dans la Sid au 22 mai 2013 : un rétroportage simple suffit à sa compilation.

Préparation du système

apt-get install -y gfortran g++ libquadmath0 libblas3 liblapack3 libgfortran3 liblapack-dev openmpi-bin libopenmpi-dev

Téléchargement

Toutes les commandes sont à effectuer comme root

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é :

  1. Récupération de la dernière version sur le site de Sandia :
    cd /root
    wget -m -nd http://lammps.sandia.gov/tars/lammps.tar.gz
  2. Ouverture de l'archive :
    cd /opt
    tar xzf /root/lammps.tar.gz
  3. Changement des droits :
    chown -R root.root $(tar tzf /root/lammps.tar.gz | tail -1 | awk -F'/' '{ print $1 }')
  4. Etablissement d'un lien générique :
    [ -h lammps ] && rm lammps
    ln -sf $(tar tzf /root/lammps.tar.gz | tail -1 | awk -F'/' '{ print $1 }') lammps

Par la récupération de l'arbre SVN, plutôt conseillé maintenant :

  1. Récupération de l'arbre SVN sur le site de Sandia :
    cd /opt
    svn co svn://svn.icms.temple.edu/lammps-ro/trunk lammps-$(date "+%Y%m%d")
  2. Etablissement d'un lien générique :
    [ -h lammps ] && rm lammps
    ln -sf lammps-$(date "+%Y%m%d") lammps

La suite, c'est commun :

  1. Passer dans l'archive :
    cd lammps
  2. Paramétrer une variable de racine pour Lammps :
    export LAMMPSROOT=$(pwd)
  3. Préparer le MPI local :
    cd $LAMMPSROOT/src/STUBS
    make clean
    make

Préparation des librairies connexes

  1. Compilation de la librairie MEAM:
    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
  2. Compilation de la librairie COLVAR
    cd $LAMMPSROOT/lib/colvars
    make -f Makefile.g++ clean
    make -f Makefile.g++
  3. Compilation de la librairie POEMS
    cd $LAMMPSROOT/lib/poems
    make -f Makefile.g++ clean
    make -f Makefile.g++
  4. Compilation de la librairie REAX :
    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 
  5. Compilation de la librairie AWPMD
    cd $LAMMPSROOT/lib/awpmd
    sed -i "s/mpic++/mpic++.openmpi/g" Makefile.openmpi
    make -f Makefile.openmpi clean
    make -f Makefile.openmpi

Activation des modules

Compiler les éléments indispensables pour exécuter les exemples :

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
make no-gpu

Compilation basique

Preparation de la librairie ATC couplée

cd $LAMMPSROOT/lib/atc
sed -e 's/\-O\ \-g/\-O\ \-g \-fpermissive/' -i~ Makefile.serial
make -f Makefile.serial clean
make -f Makefile.serial

Compilation sans MPI

cd $LAMMPSROOT/src
make yes-asphere
make yes-kspace
# lancer la compilation
make serial

Si la compilation est réussie, un exécutable lmp_cuda, se trouve à la racine du dossier.

Compilation avec FFTW

Installation préliminaire

sudo apt-get install -y fftw3 fftw-dev

Preparation de la librairie ATC couplée

cd $LAMMPSROOT/lib/atc
sed -e 's/\-O\ \-g/\-O\ \-g \-fpermissive/' -i~ Makefile.serial
make -f Makefile.serial clean
make -f Makefile.serial

Préparation du Makefile

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

Compilation

# lancer la compilation
make fftw

Si la compilation est réussie, un exécutable lmp_fftw, se trouve à la racine du dossier.

Compilation avec FFTW et OpenMPI

Installation préliminaire

sudo apt-get install -y libopenmpi-dev openmpi-bin libopenmpi1.3 openmpi-common
sudo apt-get install -y libfftw3-3  fftw-dev

Préparation du Makefile pour ATC

# 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++

Préparation du Makefile

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

Compilation

cd $LAMMPSROOT/src
make -j 4 openmpi

Si la compilation est réussie, un exécutable lmp_openmpi, se trouve à la racine du dossier.

Vérification de fonctionnement

La page Tools4Test et plus précisemment celle liée à Lammps détaille comment installer Lammps dans son environnement personnel (au CBP) et lancer quelques exemples.

developpement/activites/integration/lammps4wheezy.txt · Dernière modification: 2015/01/07 10:04 (modification externe)