UCL-RITS / rcps-buildscripts

Scripts to automate package builds on RC Platforms
MIT License
39 stars 27 forks source link

Install request: DFTB+ 17.1 #113

Closed ikirker closed 6 years ago

ikirker commented 7 years ago

(IN:02543102)

From: http://www.dftbplus.org/download/

OpenMP only, needs BLAS and ARPACK-NG.

Looks like it'll need a new build of ARPACK-NG for compatibility: lib change between Intel 2015 vs 2017, giving the following error during compilation:

/shared/ucl/apps/intel/2017.Update4/compilers_and_libraries_2017.4.196/linux/daal/../compiler/lib/intel64_lin/libifport.so.5: undefined reference to `for_ifcore_version'

Currently working it through, but it looks like this should work:

module purge
module load gcc-libs
module load compilers/intel/2017
module load mpi/intel/2017
module load arpack-ng
wget https://github.com/dftbplus/dftbplus/archive/17.1.tar.gz
tar -xzf 17.1.tar.gz
cd dftbplus-17.1
cp sys/make.x86_64-linux-intel ./make.arch
./utils/get_opt_externals dftd3
./utils/get_opt_externals slakos
make LIB_BLAS=-mkl MKL_LIBDIR= OTHERLIBS= LNOPT=
ikirker commented 7 years ago

Okay, so, installed new version of arpack-ng.

module purge
module load gcc-libs
module load compilers/intel/2017
module load mpi/intel/2017
module load arpack-ng
wget https://github.com/dftbplus/dftbplus/archive/17.1.tar.gz
tar -xzf 17.1.tar.gz
cd dftbplus-17.1
cp sys/make.x86_64-linux-intel ./make.arch
./utils/get_opt_externals dftd3
./utils/get_opt_externals slakos
make LIB_BLAS=-mkl MKL_LIBDIR= OTHERLIBS=-qopenmp LNOPT=
make test

Hmmm. One of the tests fails as incomplete, with some FPU warnings.

In /dftbplus-17.1/_build/prog/dftb+/_autotest/spinorbit/As4S4/stderror.log:

forrtl: warning (525): IEEE_DIVIDE_BY_ZERO is signaling
forrtl: warning (526): IEEE_INVALID is signaling
forrtl: warning (527): IEEE_OVERFLOW is signaling
forrtl: warning (528): IEEE_UNDERFLOW is signaling
16.34user 1.98system 0:02.53elapsed 724%CPU (0avgtext+0avgdata 24028maxresident)k
8inputs+544outputs (0major+9188minor)pagefaults 0swaps

In dftbplus-17.1/_build/prog/dftb+/_autotest/spinorbit/As4S4/output:

***  Geometry step: 0

  iSCC Total electronic   Diff electronic      SCC error
    1   -0.16934620E+02    0.00000000E+00    0.61570042E+00
    2   -0.16926831E+02    0.77892704E-02    0.63517628E+00
    3   -0.16967559E+02   -0.40728812E-01    0.36731560E+00
    4   -0.16987855E+02   -0.20295601E-01    0.91602230E-02
    5   -0.16987866E+02   -0.11133467E-04    0.45408560E-02
    6   -0.16987866E+02   -0.12033076E-06    0.16752061E-02
ERROR!
-> Failure in ZHEEVR      1
ikirker commented 7 years ago

Setting OMP_NUM_THREADS to 1 and trying again, just to make sure it's not a weird parallelism problem.

...

Succeeds at 1, 4, 8, 10, 11 threads. Fails at 12, 13, 24 threads.

:man_facepalming:

ikirker commented 7 years ago

I think this might be chip-code-path-specific, too. Failed only on Legion's login nodes, succeeded on U-type nodes at same and higher thread counts. Since it was requested on Thomas, I'm testing it there now.

ikirker commented 7 years ago

Okay, so all the implemented tests pass on Thomas on 24 threads. I had to remove the unimplemented tests from the list, because otherwise they're marked as failed :roll_eyes: and the tests all fail. Once you remove them, everything completes successfully, and then it moves onto another test step, which uses Python and numpy, which passes if you load the Python module.

I think I can sed out the unimplemented tests in the buildscript to make this work. The relevant file is: dftbplus-17.1/test/prog/dftb+/tests, the relevant tests are sockets/H2O and sockets/diamond.

ikirker commented 7 years ago

Ah, and the install prefix is set in make.config but can be set on the command line, so something like this:

wget https://github.com/dftbplus/dftbplus/archive/17.1.tar.gz
module purge
module load gcc-libs
module load compilers/intel/2017
module load mpi/intel/2017
module load arpack-ng
module load python2
tar -xzf 17.1.tar.gz
cd dftbplus-17.1
cp sys/make.x86_64-linux-intel ./make.arch
./utils/get_opt_externals dftd3
./utils/get_opt_externals slakos
make LIB_BLAS=-mkl MKL_LIBDIR= OTHERLIBS=-qopenmp LNOPT= INSTALLDIR=$install_prefix
sed -i -e '/^sockets\/H2O/d' -e '/^sockets\/diamond/d' test/prog/dftb+/tests
make test
make INSTALLDIR=$install_prefix install

Have plugged into proper build script and installed on Thomas.

ikirker commented 7 years ago

Checked back with originator of IN.

ikirker commented 6 years ago

No response from INO, closing.