DIRAC 19.0
Webpage
http://www.diracprogram.org/doku.php

Version19.0

Build EnvironmentIntel Compiler 19.1.2
ifort 19.1.2
icc 19.1.2
icpc 19.1.2
Intel MKL 2020.0.2
cmake 3.16.3

Files Required
DIRAC-19.0-Source.tar.gz
openmpi-3.1.0.tar.bz2(8-byte integer version; built during the procedure below)
diff_memcon (see /local/apl/lx/dirac190/patches/diff_memcon)
to increase available memory amount

Build Procedure#!/bin/sh
VERSION=19.0
INSTALL_PREFIX=/local/apl/lx/dirac190# openmpi (8-byte integer)
OMPI_VERSION=3.1.0
OMPI_INSTALL_PREFIX=${INSTALL_PREFIX}/openmpi310_i8
OMPI_TARBALL=/home/users/${USER}/Software/OpenMPI/${OMPI_VERSION}/openmpi-${OMPI_VERSION}.tar.bz2
PBSROOT=/local/apl/lx/pbs14# dirac
BASEDIR=/home/users/${USER}/Software/DIRAC/${VERSION}TARBALL=${BASEDIR}/DIRAC-${VERSION}-Source.tar.gz
PATCH_README=${BASEDIR}/README.patch
PATCH_MEMCONTROL=${BASEDIR}/diff_memcon
WORKDIR=/work/users/${USER}PARALLEL=8#------------------------------------------------------------------------umask 0022
export LC_ALL=C
export LANG=C
export OMP_NUM_THREADS=1
ulimit -s unlimited
module purge
module load intel/19.1.2
module load mkl/2020.0.2
module load cmake/3.16.3

# openmpi (8-byte integer default)
cd ${WORKDIR}
if [ -d openmpi-${OMPI_VERSION} ]; then
mv openmpi-${OMPI_VERSION} openmpi_erase
rm -rf openmpi_erase &fitar jxf ${OMPI_TARBALL}
cd openmpi-${OMPI_VERSION}
mkdir rccs-i8 && cd rccs-i8
CC=icc CXX=icpc FC=ifort FCFLAGS=-i8 CFLAGS=-m64 CXXFLAGS=-m64 \../configure --prefix=${OMPI_INSTALL_PREFIX} \--with-tm=${PBSROOT} \--enable-mpi-cxx \--with-psm2
make -j ${PARALLEL} && make install && make check# diraccd ${WORKDIR}
if [ -d DIRAC-${VERSION}-Source ]; then
mv DIRAC-${VERSION}-Source DIRAC_erase
rm -rf DIRAC_erase &fiexport PATH="${OMPI_INSTALL_PREFIX}/bin:$PATH"
export LIBRARY_PATH="${OMPI_INSTALL_PREFIX}/lib:$LIBRARY_PATH"
export LD_LIBRARY_PATH="${OMPI_INSTALL_PREFIX}/lib:$LD_LIBRARY_PATH"
export DIRAC_TMPDIR=${WORKDIR}
tar zxf ${TARBALL}
cd DIRAC-${VERSION}-Source
patch -p0 < ${PATCH_MEMCONTROL}./setup --mpi \--fc=mpif90 \--cc=mpicc \--cxx=mpicxx \--mkl=parallel \--int64 \--extra-fc-flags="-xHost -I${OMPI_INSTALL_PREFIX}/lib" \--extra-cc-flags="-xHost" \--extra-cxx-flags="-xHost" \--prefix=${INSTALL_PREFIX} \build.rccs
cd build.rccs
make -j ${PARALLEL} && make install# copy license and patch files
cp -f ../LICENSE ${INSTALL_PREFIX}
cp -f ${PATCH_README} ${INSTALL_PREFIX}
mkdir ${INSTALL_PREFIX}/patches
cp -f ${PATCH_MEMCONTROL} ${INSTALL_PREFIX}/patches# store test results
mkdir ${INSTALL_PREFIX}/test_results
mkdir ${INSTALL_PREFIX}/test_results/serial
mkdir ${INSTALL_PREFIX}/test_results/parallel# serial test
export DIRAC_MPI_COMMAND="mpirun -np 1"
make test
cp Testing/Temporary/LastTest.log ${INSTALL_PREFIX}/test_results/serial
if [ -f Testing/Temporary/LastTestsFailed.log ]; thencp Testing/Temporary/LastTestsFailed.log ${INSTALL_PREFIX}/test_results/serialfi# parallel test
export DIRAC_MPI_COMMAND="mpirun -np ${PARALLEL}"
make test
cp Testing/Temporary/LastTest.log ${INSTALL_PREFIX}/test_results/parallel
if [ -f Testing/Temporary/LastTestsFailed.log ]; thencp Testing/Temporary/LastTestsFailed.log ${INSTALL_PREFIX}/test_results/parallelfiexit 0

Test results
List of failed tests: serial version (mpirun -np 1)
20 - eomcc
65 - eedm_mhyp_ensps_krci
73 - bss_energy
74 - pam_test
129 - operators_mo_mtx_elements
131 - spinrot

List of failed tests: parallel version (mpirun -np 8)
18 - polprp_ph
46 - fscc_restart65 - eedm_mhyp_ensps_krci
73 - bss_energy
74 - pam_test
95 - mp2_srdft_energies (Timeout)
111 - lucita_short
129 - operators_mo_mtx_elements
131 - spinrot

Notes
Test results are available at /local/apl/lx/dirac190/test_resutls. (The output files for each test are not available.)Intel compiler version shows somewhat better performance than GCC one.
OpenMPI 4.0.2 built failes on 71 - basis_input_scripted test additionally (reason "Timeout"). We thus employ
OpenMPI 3.x.
Test 18 (polprp_ph): Always failed for parallel runs.
Test 20 (eomcc): Only serial test of int64 build always fails. (Numerical error). This happens both for Intel Compiler
and GCC.
Test 46 (fscc_restart): Always failed for parallel runs.
Test 65 (eedm_mhyp_ensps_krci): Minor numerical error? Happens regardless of compiler type (intel/gnu).
Test 73 (bss_energy): Due to the int64 specification?
Test 74 (pam_test) Unknown error.
Test 95 (mp2_srdft_energies) It always failed with "Timeout" for a parallel execution.
Test 111 (lucita_short): Due to int64 specification? This error does not happen for serial run.
Test 129 (operators_mo_mtx_elements): Another unknown error regardless of compiler type.
Test 131 (spinrot): Only in case of Intel Compiler, some of values have been swapped.