LAMMPS 16Mar18 (stable release) for LX

ウェブページ

http://lammps.sandia.gov/

バージョン

16Mar18

ビルド環境

  • Intel Compiler 2018.2.199
  • Intel MKL 2018 Update 2
  • Intel MPI 2018.2.199
  • libjpeg-turbo 1.2.90

ビルドに必要なファイル

  • lammps-stable.tar.gz (16Mar18)
  • (一部ファイルは以下スクリプト中で取得)

ビルド手順

#!/bin/sh

VERSION=16Mar18
INSTALL_PREFIX=/local/apl/lx/lammps16Mar18

BASEDIR=/home/users/${USER}
LAMMPS_TARBALL=${BASEDIR}/lammps-stable.tar.gz
WORKDIR=/work/users/${USER}

PARALLEL=12

#-- libs

VMD_PLUGIN_INC=`echo /local/apl/lx/vmd193/lib/plugins/include | sed -e 's/\//\\\\\//g'` # molfile
VORO_VER=0.4.6 # voronoi
VORO=http://math.lbl.gov/voro++/download/dir/voro++-${VORO_VER}.tar.gz

#------------------------------------------------------------------
umask 0022

cd ${WORKDIR}
if [ -d lammps-${VERSION} ]; then
  mv lammps-${VERSION} lammps_erase
  rm -rf lammps_erase &
fi

tar zxf ${LAMMPS_TARBALL}
cd lammps-${VERSION}

# setup makefiles, libraries, and external resources
## main
sed -e "/intel_cpu_intelmpi/s/.*/# rccs = USER-INTEL package, Intel MPI, MKL FFT/" src/MAKE/OPTIONS/Makefile.intel_cpu > src/MAKE/MINE/Makefile.rccs
## atc
( cd lib/atc && \
  sed -e s/icc/mpiicc/ -e s/lammps.installed/lammps.empty/ Makefile.icc > Makefile.rccs && \
  make -f Makefile.rccs -j ${PARALLEL} && \
  cd ../../ )
## awpmd
( cd lib/awpmd && \
  sed -e s/linalg/empty/ -e s/mpicxx/mpiicc/ Makefile.mpi > Makefile.rccs && \
  make -f Makefile.rccs -j ${PARALLEL} && \
  cd ../../ )
## colvars
( cd lib/colvars && \
  sed -e s/mpicxx/mpiicc/ -e s/-funroll-loops/-unroll/ Makefile.mpi > Makefile.rccs && \
  make -f Makefile.rccs -j ${PARALLEL} && \
  cd ../../ )
## h5md
( cd lib/h5md && \
  make -f Makefile.mpi -j ${PARALLEL} && \
  cd ../../ )
## meam
( cd lib/meam && \
  sed -e s/mpifort/mpiifort/ -e s/mpicc/mpiicc/ -e s/mpicxx/mpiicpc/ Makefile.mpi > Makefile.rccs && \
  make -f Makefile.rccs -j ${PARALLEL} && \
  cd ../../ )
### molfile
( cd lib/molfile && \
  sed -i -e "s/molfile_SYSINC.*/molfile_SYSINC =-I$VMD_PLUGIN_INC/" Makefile.lammps && \
  cd ../../ )
## poems
( cd lib/poems && \
  make -f Makefile.icc -j ${PARALLEL} && \
  cd ../../ )
## reax
( cd lib/reax && \
  make -f Makefile.ifort -j ${PARALLEL} && \
  cd ../../ )
## voronoi
( cd lib/voronoi && \
  wget ${VORO} && \
  tar zxf voro++-${VORO_VER}.tar.gz && \
    cd voro++-${VORO_VER} && \
    sed -i -e "s/^CXX=.*/CXX=icpc/" -e "s/^CFLAGS=.*/CFLAGS=-Wall -O3 -fPIC/" config.mk && \
    make -j ${PARALLEL} && \
    cd ../ && \
  ln -s voro++-${VORO_VER}/src includelink && \
  ln -s voro++-${VORO_VER}/src liblink && \
  cd ../../ )

#----

# now make lammps
cd src
make yes-all no-ext
make no-KOKKOS \
     no-GPU \
     no-LATTE \
     yes-VORONOI \
     yes-USER-H5MD \
     yes-USER-MOLFILE \
     yes-USER-NETCDF
make -j ${PARALLEL} rccs
make -j ${PARALLEL} rccs mode=shlib
cd ../

# mkdir and install files
mkdir -p ${INSTALL_PREFIX}/src
cp src/lmp_rccs src/liblammps_rccs.so src/*.h ${INSTALL_PREFIX}/src
ln -s ${INSTALL_PREFIX}/src/liblammps_rccs.so ${INSTALL_PREFIX}/src/liblammps.so
cp -r LICENSE \
      README \
      bench/ \
      doc/ \
      examples/ \
      potentials/ \
      python/ \
      tools/ \
   ${INSTALL_PREFIX}

パッケージリスト

ASPHERE, BODY, CLASS2, COLLOID, COMPRESS, CORESHELL, DIPOLE, GRANULAR
KSPACE, MANYBODY, MC, MEAM, MISC, MOLECULE, MPIIO, OPT, PERI, POEMS
PYTHON, QEQ, REAX, REPLICA, RIGID, SHOCK, SNAP, SRD, VORONOI

USER-ATC, USER-AWPMD, USER-CGDNA, USER-CGSDK, USER-COLVARS,
USER-DIFFRACTION, USER-DPD, USER-DRUDE, USER-EFF, USER-FEP,
USER-H5MD, USER-INTEL, USER-LB, USER-MANIFOLD, USER-MEAMC,
USER-MESO, USER-MGPT, USER-MISC, USER-MOLFILE, USER-NETCDF,
USER-OMP, USER-PHONON, USER-QTB, USER-REAXC, USER-SMTBQ,
USER-SPH, USER-TALLY, USER-UEF

テスト

  • シリアルのテスト(via run_tests.py) については通過(legacyテストは除く)
  • 並列テストについては、以下のような操作を手動実行。一部テストは意図的に除外 or 個別に実行(条件が合わないため)

VERSION=16Mar18
WORKDIR=/work/users/${USER}
LAMMPSDIR=${WORKDIR}/lammps-${VERSION}
LAMMPSTESTS=${WORKDIR}/lammps-testing-master
LAMMPSDIR_EXC=`echo $LAMMPSDIR | sed -e 's/\//\\\\\//g'`

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${LAMMPSDIR}/src"
export PYTHONPATH="${PYTHONPATH}:${LAMMPSDIR}/python"

NPROCS=4
JOBNAME=mpi_4
LOGFILE=tests_mpi4_all
EXCLUDES="tad neb mscg USER/quip kim gcmc USER/misc/imd USER/lb USER/atc USER/misc/pimd USER/misc/i-pi USER/misc/grem USER/eff/Li-dendritic COUPLE ASPHERE/tri ASPHERE/poly ASPHERE/line USER/dpd/dpdrx-shardlow"

sed -i -e "s/^read_data.*/read_data       ${LAMMPSDIR_EXC}\/bench\/data.rhodo/" tests/examples/accelerate/in.rhodo
sed -i -e "s/^  pair_coeff.*/  pair_coeff        * * ${LAMMPSDIR_EXC}\/potentials\/Cu_mishin1.eam.alloy Cu/" tests/examples/USER/misc/ti/in.ti_spring
cp /home/users/qf7/ramdisk/lammps-16Mar18/potentials/{CC.KC,CH.airebo} tests/examples/USER/misc/kolmogorov-crespi

python \
    lammps_testing/regression.py \
    ${JOBNAME} \
    "mpirun -np ${NPROCS} ${LAMMPSDIR}/src/lmp_rccs" \
    ${LAMMPSTESTS}/tests/examples/ \
    -exclude ${EXCLUDES}  >& ${LOGFILE}

注意

  • ファイルは /local/apl/lx/lammps16Mar18/ 以下にあります
  • 実行バイナリ(lmp_rccs)とライブラリは src/ 以下にあります。(bin/ というシンボリックリンクからもアクセスできます)
  • サンプルは samples/ ディレクトリに置いてあります。
  • pythonのファイルについてもpython/以下にコピーしました
  • lammpsの src/ 内にあったヘッダファイルはまとめて src/ 以下にコピーしてあります。
並列テストに関するコメント(gcc版と同様のエラーが出るものについては太字で表記)
  • balance/balance.var.dynamics: 軽微な(?)数値エラー(TotEng(4.9e-6), Press(1.93e-5)他)
  • balance/balance.neigh.rcb: 途中でフリーズ
  • balance/balance.kspace: 数値エラー(TotEng(0.21), Press(0.83)他)
  • balance/balance.clock.dynamic: 軽微な(?)数値エラー(TotEng(1.16e-5), Press(4.56e-5))
  • balance/balance.bond.slow: 途中でフリーズ
  • balance/balance.bond.fast: 途中でフリーズ
  • balance/balance: 途中でフリーズ
  • VICOSITY/nemd.2d: 数値エラー(TotEng(0.0; エラー無し), Press(0.36), v_visc(3.82)他)
  • USER/eff/ECP/Si2H6/Si2H6.ang: 途中でフリーズ
  • USER/eff/CH4/ch4_ionized.dynamics: 途中でフリーズ
その他テスト関連(未実行テスト、エラーが発生するテスト、個別テストに関して)
  • mscg: パッケージ未導入
  • USER/quip: パッケージ未導入
  • kim: パッケージ未導入
  • gcmc: パッケージ未導入
  • tad/tad: 動作方法別。実際に実行しても動かず。(4バイト変数と8バイト変数のやりとりに関するエラー)
  • neb: 動作方法別。パラメータ変更すれば動作する。(動作はするものの数値が完全には一致していないようにみえる?)
  • dpd/dpdrx-shardlow: 動作方法別。動作はするものの、数値がずれている?
  • imd, USER/lb: 時間がかかりすぎるのでスキップ
  • COUPLE, USER/misc/i-pi, USER/misc/grem: スキップ (COUPLE/multiple だけは正常動作確認。他は未検証)
  • ASPHERE/tri: ERROR: Illegal neigh_modify command
  • ASPHERE/line: ERROR: Illegal neigh_modify command
  • ASPHERE/poly: ERROR on proc 0: Neighbor list overflow, boost neigh_modify one
  • USER/eff/Li-dendritic: ファイル足りず? 動作させられず
  • USER/atc: ファイル足りず
  • USER/misc/pimd: 要ディレクトリ作成+検証方法が不明(?)
その他
  • latteはlammpsと組み合わせたものが正常に動作しなかったので導入せず
  • vmd molfile plugin の実体は /local/apl/lx/vmd193/lib/plugins/LINUXAMD64/molfile ディレクトリにあります