DIRAC 18.0 for LX

ウェブページ

http://www.diracprogram.org/doku.php

バージョン

18.0

ビルド環境

  • Intel Compiler 2019.1.144
    • ifort 19.0.1.144
    • icc 19.0.1.144
    • icpc 19.0.1.144
  • Intel MKL 2019.0.1
  • cmake 3.8.2

ビルドに必要なファイル

  • DIRAC-18.0-Source.tar.gz
  • openmpi-3.1.0.tar.bz2
    • (デフォルトを 8 バイト整数にするために既存のものとは別にビルド)

ビルド手順

#!/bin/sh

VERSION=18.0
INSTALL_PREFIX=/local/apl/lx/dirac180

# 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

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.0.1
module load mkl/2019.0.1
module load cmake/3.8.2

# openmpi (8-byte integer default)
cd ${WORKDIR}
if [ -d openmpi-${OMPI_VERSION} ]; then
  mv openmpi-${OMPI_VERSION} openmpi_erase
  rm -rf openmpi_erase &
fi

tar 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

# dirac
cd ${WORKDIR}
if [ -d DIRAC-${VERSION}-Source ]; then
  mv DIRAC-${VERSION}-Source DIRAC_erase
  rm -rf DIRAC_erase &
fi

export 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
./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

# serial test
export DIRAC_MPI_COMMAND="mpirun -np 1"
make test

# parallel test
export DIRAC_MPI_COMMAND="mpirun -np ${PARALLEL}"
make test

exit 0

重要な注意

DIRAC を利用した研究成果を出版する際には http://www.diracprogram.org/doku.php?id=citation で指定された引用を加える義務があります。ライセンスの詳細については /local/apl/lx/dirac180/LICENSE ファイルをご覧下さい。

メモ

  • MPI 有効、8 バイト整数をデフォルトで利用する設定です。
  • OpenMP については MKL 関数のみで利用されます。(MPI/OpenMP ハイブリッド並列は可能です)
    • http://www.diracprogram.org/doc/master/tutorials/hybrid_parallel_cc_run/hybrid_parallel_cc_run.html の情報も参考になると思います。
  • OpenMPI 4.x 系ではコード修正無しではビルド不可能(OpenMPI で obsolete とされた MPI 関数を利用しているため)
    • (追記) --enable-mpi1-compatibility を有効にすれば可能?
MPI を有効にした場合、以下のテストが Fail します。(intel17, intel18 でも同様です)
  • general_property_krci (Failed)
  • operators_mo_mtx_elements (Failed)
並列時 -np で 2 以上を指定した場合は以下のテストも追加で失敗します。ご注意下さい。
  • polprp_ph (Failed)
  • mp2_srdft_energies (Timeout)
  • lucita_short (Failed)