CP2Kとは
- 原子・分子レベルでの第一原理計算ソフトウェア
- 密度汎関数理論(density functional theory: DFT)、Hatree-Fock、Moller-Presset摂動法(MP2)などの計算ができる
- 周期境界条件(periodic boundary condition: PBC)のある場合とない場合の両方が計算可能
- 基底関数は局在基底(Gauss関数)と平面波規定の両方を使う(mixed basis set)
- 全てフリー・オープンソースで利用可能 -> メリット
- 更新が頻繁(年2,3回程度?)に行われ、新しい手法が順次追加される -> メリット
- マニュアル等が少なく、特に日本語のリソースが少ない -> デメリット
コンパイル
- 公式サイトの指示通りにすればほぼ問題なくコンパイルできる
Linuxでのコンパイル
-
環境: PRIMERGY CX2550, Intel Xeon Gold, cp2k-2023.1
-
手順
- intelコンパイラをロード:
module load intel; module load impi
- Githubからソースをダウンロード:
git clone -b support/v2023.1 --recursive https://github.com/cp2k/cp2k.git cp2k-2023.1
cd cp2k-2023.1
git submodule update --init --recursive
cd tool/toolchain
- 補助ライブラリ等をコンパイル:
./install_cp2k_toolchain.sh --mpi-mode=intelmpi --math-mode=mkl --with-elpa=install --with-pexsi=install --with-sirius=no --with-plumed=install
-
--with-PKG=install
で各パッケージがインストールされる。入れない場合は=no
。 - 実際に使うかわからないけど、入れれるものは入れたほうがいい?
- elpaは入れたほうが計算が早いような印象
- siriusはコンパイルできないことが多いのでパス
-
cd ../../
- makefileを編集
-
./arch
に対応するmakefileがあるので編集する - この場合は
Linux-intel-x86_64.psmp
-
CXX=icpc
を追加 - SIRIUS, SCOTCHなど、使っていないライブラリの
USE...
ををコメントアウト
-
make ARCH=Linux-intel-x86_64 VERSION=psmp
- intelコンパイラをロード:
-
cp2kのバージョンやコンパイル環境で補助ライブラリがコンパイルできる・できないが変わるので注意。基本的にはBLAS, LAPACK, XSMMがあればよい。LIBXC, LIBINTも可能であればコンパイルしたい。
Dockerを使う場合
- 環境: Ubuntu- 20.04-LTS (Google Cloud Platform)
sudo apt-get install curl
curl -fsSL https://get.docker.com -o get-docker.sh
-
sudo sh get-docker.sh
: ここまでdockerのインストール -
sudo usermod -aG docker your_user_name
: 権限の設定 -
docker run -it --rm -v $PWD:/mnt cp2k/cp2k:latest cp2k -i H2O-32.inp
: cp2kの実行
-
H2O-32.inp
はhttps://github.com/misteliy/cp2k/blob/master/tests/QS/benchmark/H2O-32.inp から入手可能 (一部手直し必要)
MacOSでのコンパイル
brew uninstall cp2k
brew unlink open-mpi scalapack
ln -f -s /opt/homebrew/bin/gcc-13 /opt/homebrew/bin/gcc
ln -f -s /opt/homebrew/bin/g++-13 /opt/homebrew/bin/g++
ln -f -s /opt/homebrew/bin/gfortran-13 /opt/homebrew/bin/gfortran
git clone --recursive https://github.com/cp2k/cp2k.git cp2k
cd cp2k
source arch/Darwin-gnu-arm64.ssmp
make -j ARCH=Darwin-gnu-arm64 VERSION=ssmp
バイナリの種類
- 並列計算に用いるライブラリ(OpenMP, MPI)によってcp2kバイナリファイルの種類が異なる
種類 | 並列計算の設定 |
---|---|
sdbg | OpenMP + debug settings |
sopt | OpenMP + OMP_NUM_THREADS=1 |
ssmp | OpenMP |
pdbg | MPI + OpenMP + debug settings |
popt | MPI + OpenMP + OMP_NUM_THREADS=1 |
psmp | MPI + OpenMP |
- poptはpsmpをリンクしているだけなので、実際はpsmpのみをコンパイルすればよい
プログラムの実行
serial計算
- コンパイルしたcp2kは
${HOME}/cp2k/cp2k-version/cp2k/exe/Linux-.../cp2k.sopt
とする - 実行コマンド:
cp2k.sopt -i input.inp -o output.out
parallel計算
- プロセス数をNPROCSとする
- 実行コマンド:
mpiexec -n $NPROCS cp2k.popt -i input.inp -o output.out
-
mpiexec.hydra -n ${PJM_MPI_PROC}
を使う場合もある
-