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
Dernière révisionLes deux révisions suivantes
documentation:tools:cp2kmkl [2020/06/25 12:33] – suppression, as requested ltaulelldocumentation:tools:cp2kmkl [2020/08/25 15:58] – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Installations optimisées de CP2K ======
  
 +{{INLINETOC}}
 +===== Version la plus récente compilée avec compilateurs Intel et MKL sur les systèmes Debian =====
 +
 +Il s'agit de la version du dépôt de développement CP2K (la plus complète au niveau des fonctionnalités). 
 +
 +L'installation ci-dessous a été faite à l'automne 2014 (sur la dernière révision du CP2K et avec les dernières versions de la suite Intel et OpenMPI disponibles à ce moment là).
 +
 +==== Environnement de travail ====
 +
 +Il faut d'abord charger l'environnement correspondant (Debian + Intel + OpenMPI) sur l'un des serveurs de compilation Debian :
 +
 +<code bash> 
 +   $ source /usr/share/modules/init/tcsh
 +   $ module use /applis/PSMN/Modules
 +   $ module load Base/psmn
 +   $ module load openmpi/1.6.4-intel-14.0.1
 +</code>
 +
 +==== Download CP2K ====
 +
 +<code bash> 
 +   $ svn checkout svn://svn.code.sf.net/p/cp2k/code/trunk cp2k-devel-cic
 +      cp2k-devel-cic/basis_sets
 +   ...
 +      cp2k-devel-cic/potentials/mm_potentials/mathematica/FitPot.nb
 +   Révision 14631 extraite.
 +</code>
 +
 +==== Etape de "configuration" ====
 +
 +<code bash> 
 +   $ cd cp2k-devel-cic/cp2k/arch
 +</code>
 +
 +Modifier le fichier de configuration Linux-x86-64-intel-MKL.popt comme suit, afin de prendre correctement en compte les composantes BLAS, LAPACK et FFT de MKL (avec l'interface FFTW) : 
 +
 +<code bash> 
 +$ cat Linux-x86-64-intel-MKL.popt
 +#
 +#
 +CC       = cc
 +CPP      = 
 +FC       = mpif90 
 +LD       = mpif90
 +AR       = ar -r
 +
 +MKLROOT=/softs/intel/v13/mkl
 +INTEL_LIB = $(MKLROOT)/lib/intel64
 +LIBXC_DIR = /applis/PSMN/debian7/Libs/libXC/2.0.1/intel-14.0.1-avx
 +
 +CPPFLAGS =
 +DFLAGS   = -D__MKL -D__FFTW3 -D__LIBXC2 -D__parallel \
 +    -D__SCALAPACK 
 +CFLAGS   = $(DFLAGS) 
 +
 +FCFLAGS  = $(DFLAGS) -O2 -g -traceback -fpp -free \
 +           -I$(MKLROOT)/include -I$(MKLROOT)/include/fftw
 +FCFLAGS2  = $(DFLAGS) -O1 -g -traceback -fpp -free \
 +           -I$(MKLROOT)/include -I$(MKLROOT)/include/fftw
 +FCFLAGS3  = $(DFLAGS) -O0 -g -traceback -fpp -free \
 +           -I$(MKLROOT)/include -I$(MKLROOT)/include/fftw
 +
 +LDFLAGS  = $(FCFLAGS) -static-intel
 +
 +LIBS     = $(INTEL_LIB)/libmkl_scalapack_lp64.a \
 +          -L${INTEL_LIB} -lmkl_blas95_lp64 \
 +          -L${INTEL_LIB} -lmkl_lapack95_lp64 \
 + -Wl,--start-group  $(INTEL_LIB)/libmkl_intel_lp64.a \
 + $(INTEL_LIB)/libmkl_sequential.a \
 + $(INTEL_LIB)/libmkl_core.a \
 + $(INTEL_LIB)/libmkl_blacs_openmpi_lp64.a -Wl,--end-group \
 + -lpthread -lm \
 + -L$(LIBXC_DIR)/lib -lxc \
 +
 +
 +OBJECTS_ARCHITECTURE = machine_intel.o
 +
 +graphcon.o: graphcon.F
 + $(FC) -c $(FCFLAGS2) $<
 +
 +qs_vxc_atom.o: qs_vxc_atom.F
 + $(FC) -c $(FCFLAGS2) $<   
 +</code>
 +
 +==== Etape de "build" ====
 +
 +<code bash> 
 +   $ cd ../makefiles
 +   $ make -j 4 ARCH=Linux-x86-64-intel-MKL VERSION=popt
 +</code>
 +
 +Cette étape peut durer quelques dizaines de minutes (un café bien mérité est possible ...).
 +
 +Le binaire est ainsi généré : $HOME/cp2k-devel-cic/cp2k/exe/Linux-x86-64-intel-MKL/cp2k.popt
 +
 +==== Test de l'installation ====
 +
 +On peut lancer un test rapide fourni dans CP2K directement sur le serveur de compilation :
 +
 +<code bash> 
 +   $ cd ../tests/QS/
 +   $ mpirun -np 2 $HOME/cp2k-devel-cic/cp2k/exe/Linux-x86-64-intel-MKL/cp2k.popt C.inp
 +</code>
 +
 +Regarder par exemple le temps total (2.9 s pour le cas présent)
 +
 +==== Test en conditions de production ====
 +
 +Plusieurs jobs ont été exécutés sur des configurations fournies par des utilisateurs PSMN en utilisant les queues de production E5-2670. Les résultats ont montré un gain du temps de calcul par un facteur entre 5 et 6 par rapport aux installations génériques.