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-2024.1
-
コンパイラ環境をロード
- intel:
module load intel impi - gcc:
module load gcc ompi
- intel:
-
Githubからソースをダウンロード:
git clone -b support/v2024.1 --recursive https://github.com/cp2k/cp2k.git cp2k-2024.1 -
cd cp2k-2024.1 -
git submodule update --init --recursive -
cd tool/toolchain -
補助ライブラリ等をコンパイル
- intel:
./install_cp2k_toolchain.sh --mpi-mode=intelmpi --math-mode=mkl --with-plumed=install --with-libtorch=install - gcc:
./install_cp2k_toolchain.sh --mpi-mode=openmpi --math-mode=openblas --with-plumed=install --with-libtorch=install-
--with-PKG=installで各パッケージがインストールされる。入れない場合は=no - 実際に使うかわからないけど、入れられるものは入れたほうがいい
- intelの場合、openBLASのコンパイルでWarningもしくはエラーが出る場合があるが、intel MLKのBLASを使うので問題はない
-
- intel:
-
生成されたMakefile等をコピー:
cp install/arch/* ../../arch/ -
cd ../../ -
make ARCH=local VERSION=psmp
- cp2kのバージョンやコンパイル環境で補助ライブラリがコンパイルできる・できないが変わるので注意。基本的にはBLAS, LAPACK, XSMMがあればよい。LIBXC, LIBINTも可能であればコンパイルしたい
Dockerを使う場合
- 環境: Ubuntu- 20.04-LTS (Google Cloud Platform)
sudo apt-get install curlcurl -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 cp2kbrew unlink open-mpi scalapackln -f -s /opt/homebrew/bin/gcc-13 /opt/homebrew/bin/gccln -f -s /opt/homebrew/bin/g++-13 /opt/homebrew/bin/g++ln -f -s /opt/homebrew/bin/gfortran-13 /opt/homebrew/bin/gfortrangit clone --recursive https://github.com/cp2k/cp2k.git cp2kcd cp2ksource arch/Darwin-gnu-arm64.ssmpmake -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}を使う場合もある
-