mirror of https://gitlab.com/QEF/q-e.git
c374d873d6
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@10459 c92efa57-630b-4861-b058-cf58834340f0 |
||
---|---|---|
.. | ||
Make.BGP | ||
Make.BGP-openMP | ||
Make.BGP-openMP+FFTW | ||
Make.CRAY-XK7 | ||
Make.altix | ||
Makefile_iotk | ||
Makefile_lapack | ||
Makefile_lapack_testing_lin | ||
README.CINECA_fermi | ||
README.CRAY-XC30 | ||
README.CRAY-XE6 | ||
README.CRAY-XK7 | ||
README.IBM-INTEL.IDRIS_ada | ||
clean.sh | ||
config.guess | ||
config.sub | ||
configure | ||
configure.ac | ||
configure.msg.in | ||
extlibs_makefile | ||
includedep.sh | ||
install-sh | ||
iotk_config.h | ||
make.sys.in | ||
make_blas.inc.in | ||
make_lapack.inc.in | ||
make_wannier90.sys.in | ||
makedeps.sh | ||
moduledep.sh | ||
namedep.sh | ||
plugins_list | ||
plugins_makefile | ||
update_version |
README.IBM-INTEL.IDRIS_ada
Info by Lorenzo Paulatto http://www-int.impmc.upmc.fr/~paulatto/ Dec. 2012, valid for QE 5.0.2 and 4.3.2 on ADA machine of French computing center IDRIS: http://www.idris.fr/ada/ Configuration: IBM + Intel MKL Until a pre-compiled version of Intel MKL FFTW3 is made available you will have to compile the interface yourself: MKLBASE=$(cd $(dirname $(which ifort))/../../mkl; pwd) cp -r $MKLBASE/interfaces/fftw3xf/ $HOME/ cd $HOME/fftw3xf/ make libintel64 these steps will create an Intel FFTW3 library in "$HOME/fftw3xf/". It is not clear if this library is any faster than stock FFTW3 but at least it does no harm. You can also ignore this part and not set FFT_LIBS, using internal FFTW3 instead. Proceed with configure: export AR=xiar export MPIF90=mpiifort export FFT_LIBS="-L$HOME/fftw3xf -lfftw3xf_intel" export SCALAPACK_LIBS="-mkl=cluster" export BLAS_LIBS="-mkl=cluster" export LAPACK_LIBS="-mkl=cluster" ./configure Then proceed with make as usual. Notes: * setting AR=xiar is only needed if you want to enable multi-file optimisation (i.e. with -fast) however, I never found this optimisation to be any effective, it does not hurt to try but compilation time will increase a lot. * currently, the mkl variables are not properly set in the computing nodes, you should add something like this at the beginning of your job script or in your .bashrc: . /gpfs4l/smplocal/opt/intel/composer_xe_2011_sp1.6.233/mkl/bin/mklvars.sh intel64 do not forget the "." at the beginning! I'm confident this will be fixed soon anyway. * just setting SCALAPACK_LIBS="-mkl=cluster" is enough to compile, but leaving BLAS_LIBS or LAPACK_LIBS empty will pull in MKL libraries linked with the wrong MPI implementation. * alternatively, if you do not want scalapack, you can set --without-scalapack and set BLAS_LIBS="-mkl=sequential" and LAPACK_LIBS="-mkl=sequential". Below is the my working make.sys file. If you use it, do not forget to edit FFT_LIBS and TOPDIR according to your path. ################################################################### # make.sys. Generated from make.sys.in by configure. # compilation rules .SUFFIXES : .SUFFIXES : .o .c .f .f90 # most fortran compilers can directly preprocess c-like directives: use # $(MPIF90) $(F90FLAGS) -c $< # if explicit preprocessing by the C preprocessor is needed, use: # $(CPP) $(CPPFLAGS) $< -o $*.F90 # $(MPIF90) $(F90FLAGS) -c $*.F90 -o $*.o # remember the tabulator in the first column !!! .f90.o: $(MPIF90) $(F90FLAGS) -c $< # .f.o and .c.o: do not modify .f.o: $(F77) $(FFLAGS) -c $< .c.o: $(CC) $(CFLAGS) -c $< # DFLAGS = precompilation options (possible arguments to -D and -U) # used by the C compiler and preprocessor # FDFLAGS = as DFLAGS, for the f90 compiler # See include/defs.h.README for a list of options and their meaning # With the exception of IBM xlf, FDFLAGS = $(DFLAGS) # For IBM xlf, FDFLAGS is the same as DFLAGS with separating commas MANUAL_DFLAGS = DFLAGS = -D__INTEL -D__FFTW3 -D__MPI -D__PARA -D__SCALAPACK $(MANUAL_DFLAGS) FDFLAGS = $(DFLAGS) # IFLAGS = how to locate directories where files to be included are # In most cases, IFLAGS = -I../include IFLAGS = -I../include # MOD_FLAGS = flag used by f90 compiler to locate modules # Each Makefile defines the list of needed modules in MODFLAGS MOD_FLAG = -I # Compilers: fortran-90, fortran-77, C # If a parallel compilation is desired, MPIF90 should be a fortran-90 # compiler that produces executables for parallel execution using MPI # (such as for instance mpif90, mpf90, mpxlf90,...); # otherwise, an ordinary fortran-90 compiler (f90, g95, xlf90, ifort,...) # If you have a parallel machine but no suitable candidate for MPIF90, # try to specify the directory containing "mpif.h" in IFLAGS # and to specify the location of MPI libraries in MPI_LIBS MPIF90 = mpiifort #F90 = ifort CC = icc F77 = ifort # C preprocessor and preprocessing flags - for explicit preprocessing, # if needed (see the compilation rules above) # preprocessing flags must include DFLAGS and IFLAGS CPP = cpp CPPFLAGS = -P -traditional $(DFLAGS) $(IFLAGS) # compiler flags: C, F90, F77 # C flags must include DFLAGS and IFLAGS # F90 flags must include MODFLAGS, IFLAGS, and FDFLAGS with appropriate syntax CFLAGS = -O3 $(DFLAGS) $(IFLAGS) F90FLAGS = $(FFLAGS) -nomodule -fpp $(FDFLAGS) $(IFLAGS) $(MODFLAGS) FFLAGS = -O2 -assume byterecl -g -traceback -par-report0 -vec-report0 # compiler flags without optimization for fortran-77 # the latter is NEEDED to properly compile dlamch.f, used by lapack FFLAGS_NOOPT = -O0 -assume byterecl -g -traceback # compiler flag needed by some compilers when the main is not fortran # Currently used for Yambo FFLAGS_NOMAIN = -nofor_main # Linker, linker-specific flags (if any) # Typically LD coincides with F90 or MPIF90, LD_LIBS is empty LD = mpiifort LDFLAGS = LD_LIBS = # External Libraries (if any) : blas, lapack, fft, MPI # If you have nothing better, use the local copy : # BLAS_LIBS = /your/path/to/espresso/BLAS/blas.a # BLAS_LIBS_SWITCH = internal BLAS_LIBS = -mkl=cluster BLAS_LIBS_SWITCH = external # If you have nothing better, use the local copy : # LAPACK_LIBS = /your/path/to/espresso/lapack-3.2/lapack.a # LAPACK_LIBS_SWITCH = internal # For IBM machines with essl (-D__ESSL): load essl BEFORE lapack ! # remember that LAPACK_LIBS precedes BLAS_LIBS in loading order LAPACK_LIBS = -mkl=cluster LAPACK_LIBS_SWITCH = external ELPA_LIBS_SWITCH = disabled SCALAPACK_LIBS = -mkl=cluster # nothing needed here if the the internal copy of FFTW is compiled # (needs -D__FFTW in DFLAGS) FFT_LIBS = -L/smphome/rech/vad/rvad010/fftw3xf -lfftw3xf_intel # For parallel execution, the correct path to MPI libraries must # be specified in MPI_LIBS (except for IBM if you use mpxlf) MPI_LIBS = # IBM-specific: MASS libraries, if available and if -D__MASS is defined in FDFLAGS MASS_LIBS = # ar command and flags - for most architectures: AR = ar, ARFLAGS = ruv AR = xiar ARFLAGS = ruv # ranlib command. If ranlib is not needed (it isn't in most cases) use # RANLIB = echo RANLIB = ranlib # all internal and external libraries - do not modify FLIB_TARGETS = all LIBOBJS = ../flib/ptools.a ../flib/flib.a ../clib/clib.a ../iotk/src/libiotk.a LIBS = $(SCALAPACK_LIBS) $(LAPACK_LIBS) $(FFT_LIBS) $(BLAS_LIBS) $(MPI_LIBS) $(MASS_LIBS) $(LD_LIBS) # wget or curl - useful to download from network WGET = wget -O # topdir for linking espresso libs with plugins TOPDIR = /smphome/rech/vad/rvad010/espresso-fast