<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hello everybody,<div class=""><br class=""></div><div class="">in QE v6.0, we support ELPA version 2016.05.003 [1]. This version of ELPA has the ability to deliver better performance than plain ScaLAPACK but it has also have a different API that the former versions or the early legacy ELPA we ship as part of the QE distribution.</div><div class=""><br class=""></div><div class="">A new released version of ELPA is available publicly which support KNL and GPU (2016.11.001_pre [2]). However the API have changed again. We reaised this issue to the ELPA developers but until hey fix and stabilize the library API, some changes need to be made in the source code to support 2016.11.001_pre.</div><div class=""><br class=""></div><div class="">Here a short guide how to compile ELPA first and QE with ELPA.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""># Prerequisites</div><div class=""><br class=""></div><div class="">You need ScaLAPACK (and so, BLACS) installed correctly in your system. You can find them in the Intel MKL / Intel MPI bundles or you have to download source codes and install by yourself. My suggestion is to use Intel MKL.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""># Download and compile ELPA</div><div class=""><br class=""></div><div class="">ELPA 2016.11.001_pre is available here = <a href="https://elpa.mpcdf.mpg.de/html/Releases/2016.11.001.pre/elpa-2016.11.001.pre.tar.gz" class="">https://elpa.mpcdf.mpg.de/html/Releases/2016.11.001.pre/elpa-2016.11.001.pre.tar.gz</a></div><div class=""><br class=""></div><div class="">To compile simply run the configure and then "make". You need to check that $MKLROOT points where the MKL are installed. You can chose to enable OpenMP (--enable-openmp) or not (--disable-openmp). $SCALAPACK_FCFLAGS and $SCALAPACK_LDFLAGS will have to chance accordingly in order to link the correct math libraries.</div><div class=""><br class=""></div><div class=""><font face="Andale Mono" class="">./configure --enable-openmp --prefix=$PREFIX SCALAPACK_LDFLAGS="-L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -lpthread -lm" SCALAPACK_FCFLAGS="-L${MKLROOT}/include"<br class=""></font></div><div class=""><br class=""></div><div class="">$PREFIX is where you want to deploy the library (e.g. a central folder in a cluster or your home directory).</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""># Export ELPA environment variables:</div><div class=""><br class=""></div><div class="">In ELPA the way "make install" operates does create an additional directory under "include/" which confuses current autoconf. To avoid failing over and over, we made the configure relying on the user who has to specify where the right headers are located. Assuming $PREFIX points to the directory where you installed ELPA by doing "make install", here how to export some environment variables that we will use later with QE</div><div class=""><br class=""></div><div class=""><font face="Andale Mono" class="">export ELPA_HOME=$PREFIX</font></div><div class=""><font face="Andale Mono" class=""><br class=""></font></div><div class=""><font face="Andale Mono" class="">X=`ls -1 $ELPA_HOME/lib/pkgconfig/`<br class="">export ELPA_VERSION=`echo "${X%.*}"`</font></div><div class=""><font face="Andale Mono" class=""><br class=""></font></div><div class=""><font face="Andale Mono" class="">export ELPA_LIBS=$ELPA_HOME/lib<br class="">export ELPA_C_INCLUDE=$ELPA_HOME/include/$ELPA_VERSION/elpa<br class="">export ELPA_FORTRAN_INCLUDE=$ELPA_HOME/include/$ELPA_VERSION/modules<br class=""><br class="">export PATH=$ELPA_HOME/bin:$PATH</font></div><div class=""><font face="Andale Mono" class="">export LD_LIBRARY_PATH=$ELPA_LIB:$LD_LIBRARY_PATH</font></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""># Compile QE with ELPA pre-compiled (this works only for r13250)</div><div class=""><br class=""></div><div class="">Example with MPI and OpenMP both enabled, ELPA linked statically:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Andale Mono" class="">./configure --enable-openmp --enable-parallel --with-scalapack=intel --with-elpa-lib=$ELPA_LIBS/libelpa_openmp.a --with-elpa-include=$ELPA_FORTRAN_INCLUDE</font></div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">My personal hope is to see ELPA API fixed (or stabilized) by the time a new QE release is created. In the meanwhile, we will continue to monitor ELPA changes. Ideally, we do not want to support too many versions that have different or broken API. </div><div class=""><br class=""></div><div class="">HTH</div><div class=""><br class=""></div><div class="">Cheers</div><div class=""><br class=""></div><div class="">[1] <a href="https://elpa.mpcdf.mpg.de/html/Releases/2016.05.003/" class="">https://elpa.mpcdf.mpg.de/html/Releases/2016.05.003/</a></div><div class="">[2] <a href="https://elpa.mpcdf.mpg.de/html/Releases/2016.11.001.pre/" class="">https://elpa.mpcdf.mpg.de/html/Releases/2016.11.001.pre/</a></div><div class=""><br class=""><div class="">--<br class="">Filippo SPIGA ~ Quantum ESPRESSO Foundation ~ <a href="http://www.quantum-espresso.org" class="">http://www.quantum-espresso.org</a><br class=""></div><br class=""></div></body></html>