Workstation
On a vanilla Linux machine, simply ./configure
and then make
if successfully. You just need gfortran, mpi, fftw and lapack. Check make.sys to make sure BLAS_LIBS = -lblas, LAPACK_LIBS = -llapack and FFT_LIBS = -lfftw3.
If configuration is unsuccessful, bug someone for a make.sys. That’s the only thing the configuration script generates.
For 90% of the things I do, make ld1 pw ph pp is sufficient. ld1 is 1D DFT for atoms used to generate pseudopotentials. pw is the most popular package Pwscf, which runs DFT for solids in plane-wave basis. pp is the post-processing tool which can be used to plot band structure, charge density and many other exciting stuff. ph is from the Phonon package.
If you have intel compilers installed (especially parallel studio), follow Intel’s guide to compile with offload or native MIC. There will be some (fixable) problems with FFT. A more recent thread can be found in Intel Developer Zone here.
Just to quickly summarize the minimum one has to specify in order to configure espresso-5.3.0 with parallel studio 15.0.6 (remember to source psxevars). First:
./configure CC=mpiicc MPIF90=mpiifort F77=mpiifort --with-scalapack=intel --with-hdf5
You will notice that the configure script fails to locate Intel’s fftw3 package. Next, open make.sys
and add -I$(MKLROOT)/include/fftw
to IFLAGS
, and make sure -D__FFTW3
is used instead of -D__FFTW
(internal copy). Finally, Remove -par-report0 and -vec-report0
to silence deprecation warnings. You should now have a working make.sys
If modded by QMCPACK, add: --with-hdf5 HDF5_DIR=$HDF5_HOME
OpenMP support seems experimental for now.
update 2019-01-22: qe-6.3 converter may require a bit more tweaking to get HDF5 to work properly, because it assumes hdf5 is compiled from source and installed in a stand-alone folder. If you have hdf5 compiled in `/usr/local/hdf5` for example, the following command is supposed to work
./configure CC=mpiicc MPIF90=mpiifort F77=mpiifort --with-scalapack=intel --with-hdf5=/usr/local/hdf5
If HDF5_LIBS not picked up, then manually edit the generated make.inc file.
DFLAGS = -D__DFTI -D__MPI -D__SCALAPACK -D__HDF5_C -DH5_USE_16_API
HDF5_LIB = -L/lib64 -lhdf5 -lhdf5_fortran -lhdf5_hl
Also check CFLAGS and FFLAGS to make sure -O3 exists for optimal performance.
hdf5-1.10.3 can compile correct after dos2unix.
Hint: To silence the compiler warnings, change -openmp to -qopenmp and remove -par-report0 and -vec-report0 in make.sys. To speed up the compilation process, use -j flag of make. This will get you 75% of the way then fail, but now make pw
doesn’t take nearly as long.
If you keep failing, download a clean espresso tarball for your sanity.
So far I haven’t been able to get QE 5.3.0 to work with intel 16.0.2 compiler. Parallel execution gets stuck for no reason.
Supercomputer
Taub/Golub
As of 2016/09/19, Parallel Studio 2015 is available on University of Illinois Urbana-Champaign campus cluster, thus the same instructions above still works.
Update 2018/05/21, module load python
automatically loads intel/17.0
and gcc/6.2.0
. We should now have icc
and ifort
(check using which ifort
for example). We want to use intel FFT and SCALAPACK for optimal performance. One can either export environment variables before ./configure
, or give definitions directly to ./configure
. I prefer the latter because it does not contaminate user environment after build. See Glenn K. Lockwood’s blog for a good reference.
./configure \
CC=icc \
CXX=icpc \
FC=ifort \
F77=ifort \
BLAS_LIBS="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core" \
SCALAPACK_LIBS="-lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64" \
FFT_LIBS="-lmkl_intel_lp64 -lmkl_sequential -lmkl_core"
Make sure -D__DFTI
and -D__SCALAPACK
are in your DFLAGS
in make.sys
. Last but not least, to enable wavefunction conversion for QMCPACK, edit make.sys
. Add -D__HDF5_C -DH5_USE_16_API
to DFLAGS
, and add -L/lib -lhdf5_hl -lhdf5
to HDF5_LIB
.
Finally, make pw -j16
; make pp -j16
.
I have gone through the above procedure and produced binaries in `/projects/physics/apps/qe-6.2.1/bin`. Please feel free to use them, but do double check their correctness for your application.
Titan
To compile on Titan at Oak Ridge, follow instructions in install/Make.CRAY-XK7.[your choice].
module load cray-hdf5
./configure --enable-parallel --enable-openmp --with-scalapack --with-hdf5 ARCH=crayxt
I used PrgEnv-pgi and had to change make.sys:
- Update TOPDIR
- Update /opt/cray/libsci/[version] (module display cray-libsci)
- Disable Scalapack (this is bad, but better than not compiled)