GPAWを東京大学物性研究所システムB (ohtaka) へ導入する/した際の導入手順です。GPAWはprojector augmented wave (PAW) 法をpythonなどを用いて実装された第一原理プログラムで密度汎関数理論に加えて多体摂動論に基づく計算が可能なプログラムです。波動関数は平面波基底、実空間グリッド、あるいはLCAOを用いて記述することが可能です。GPAWはAtomic simulation environment (ASE)に基づいて実装されています。
この記事では最新版のGPAW (24.1.0) をインストールした手順を記述します。
準備
ASEのインストール
過去の記事を参照して下さい。
以下の作業は仮想環境が$(HOME)/ASE/ase_oneapi_2023.0.0
に作成されているとし、以下を実行してから始めます。
source ~/ASE/ase_oneapi_2023.0.0/bin/activate
libxcのインストール
libxcをビルド、インストールしておきます。tddft.org
は現在(2024.04.13)時点で使用されていないようです。最新版 (6.2.2) は以下のようにgitlabから入手することが可能です。
作業ディレクトリで以下を実行します。
wget https://gitlab.com/libxc/libxc/-/archive/6.2.2/libxc-6.2.2.tar.gz
次にlibxc-6.2.2.tar.gz
を展開、libxc-6.2.2
ディレクトリに移動してconfigure
、make
の実行を行います(libxc
はホーム(${HOME})のlocal以下にインストールすると仮定)。
./configure CC=icc CFLAGS="-O2 -fPIC" --enable-shared --prefix=${HOME}/local
makeを実行します。
make
問題無くビルドできれば、チェックした後にインストールを実行します
make check
make check
の結果
============================================================================
Testsuite summary for libxc 6.2.2
============================================================================
# TOTAL: 1
# PASS: 1
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================
最後にmake install
を実行し、今の場合は${HOME}/local/lib
にlibxc
をインストールします。
make install
GPAWのインストール
GPAWのソースを入手します。
wget https://pypi.org/packages/source/g/gpaw/gpaw-24.1.0.tar.gz
GPAWを展開、ディレクトリに移動します。
tar xf gpaw-24.1.0.tar.gz
cd gpaw-24.1.0
次にsiteconfig.py
を編集します。以下のようになりました。
# MPI:
mpi = True
if mpi:
compiler = 'mpicc'
# openmp
extra_compile_args += ['-fopenmp','-fPIC','-O2','-march=core-avx2']
extra_link_args += ['-fopenmp']
extra_link_args += ['-fPIC', '-O2','-march=core-avx2']
# FFTW3:
fftw = True
if fftw:
include_dirs += ['/opt/intel/oneapi/mkl/2023.1.0/include/fftw/']
# ScaLAPACK (version 2.0.1+ required):
scalapack = True
if scalapack:
libraries += ['mkl_scalapack_lp64', 'mkl_blacs_intelmpi_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'iomp5', 'pthread', 'm']
# - dynamic linking (requires rpath or setting LD_LIBRARY_PATH at runtime):
if 0:
xc = '/home/k0472/k047203/local/'
include_dirs += [xc + 'include/']
library_dirs += [xc + 'lib/']
# You can use rpath to avoid changing LD_LIBRARY_PATH:
runtime_library_dirs += [xc + 'lib']
if 'xc' not in libraries:
libraries.append('xc')
if 1:
xc = '/home/k0472/k047203/local/'
include_dirs += [xc + 'include']
library_dirs += [xc + 'lib']
extra_link_args += ['-Wl,-rpath={xc}lib'.format(xc=xc)]
そしてビルドを行います。
python setup.py build
問題無ければ、最後にインストールを行います。
python setup.py install
gpawのテスト
gpaw info
を実行してチェックを行いますが、フロントエンドで直接は実行できないので、以下のようにジョブスクリプトを作成してバッチジョブとして実行します。
#!/bin/sh
#SBATCH -J gpaw_info
#SBATCH -p i8cpu
#SBATCH -N 1
#SBATCH -n 1
module purge
module load oneapi_compiler/2023.0.0 oneapi_mkl/2023.0.0 oneapi_mpi/2023.0.0
source ${HOME}/ASE/ase_oneapi_2023.0.0/bin/activate
srun gpaw info > gpaw_info.log
バッチジョブの投入:
sbatch run_gpaw_info.sh
実行結果:
----------------------------------------------------------------------------------------------------------------------------------
| python-3.8.17 /home/k0472/k047203/ASE/ase_oneapi_2023.0.0/bin/python |
| gpaw-24.1.0 /home/k0472/k047203/ASE/ase_oneapi_2023.0.0/lib64/python3.8/site-packages/gpaw/ |
| ase-3.22.1 /home/k0472/k047203/ASE/ase_oneapi_2023.0.0/lib64/python3.8/site-packages/ase/ |
| numpy-1.24.4 /home/k0472/k047203/ASE/ase_oneapi_2023.0.0/lib64/python3.8/site-packages/numpy/ |
| scipy-1.10.1 /home/k0472/k047203/ASE/ase_oneapi_2023.0.0/lib64/python3.8/site-packages/scipy/ |
| libxc-5.2.3 yes |
| _gpaw /home/k0472/k047203/ASE/ase_oneapi_2023.0.0/lib64/python3.8/site-packages/_gpaw.cpython-38-x86_64-linux-gnu.so |
| MPI enabled yes |
| OpenMP enabled yes |
| GPU enabled no |
| GPU-aware MPI no |
| CUPY /home/k0472/k047203/ASE/ase_oneapi_2023.0.0/lib64/python3.8/site-packages/gpaw/gpu/cpupy/__init__.py |
| scalapack yes |
| Elpa no |
| FFTW yes |
| libvdwxc no |
| PAW-datasets (1) /home/k0472/k047203/ASE/gpaw-setups-0.9.20000 |
----------------------------------------------------------------------------------------------------------------------------------
次にpytest
を実行します。こちらも同様に以下のジョブスクリプトの作成、バッチジョブとして投入する必要があります。時間がかかるのでデバッグ用パーティションの制限時間内では終わらないのでF1cpuのパーティションを使用します。
#!/bin/sh
#SBATCH -J pytest
#SBATCH -p F1cpu
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -c 128
#SBATCH -t 12:00:00
module purge
module load oneapi_compiler/2023.0.0 oneapi_mkl/2023.0.0 oneapi_mpi/2023.0.0
source ${HOME}/ASE/ase_oneapi_2023.0.0/bin/activate
srun pytest -v > pytest.log
バッチジョブの投入:
sbatch run_pytest.sh
pytest.log
を見ると多くのテストはパスしていますが、以下のように幾つかのテストはうまくいっていないようでした。
FAILED gpaw/test/test_ibz2bz.py::test_ibz2bz[fe_pw] - assert False
FAILED gpaw/test/test_ibz2bz.py::test_ibz2bz[srvo3_pw] - RuntimeError: GPW fi...
FAILED gpaw/test/response/test_chiks.py::test_chiks[system8-0.25-True] - Asse...
FAILED gpaw/test/response/test_chiks.py::test_chiks[system9-0.25-False] - Ass...
FAILED gpaw/test/response/test_chiks.py::test_chiks[system10-0.5-True] - Asse...
FAILED gpaw/test/response/test_chiks.py::test_chiks[system11-0.5-False] - Ass...
FAILED gpaw/test/response/test_chiks.py::test_chiks[system12-0.0-True] - Asse...
FAILED gpaw/test/response/test_chiks.py::test_chiks[system13-0.0-False] - Ass...
FAILED gpaw/test/response/test_chiks.py::test_chiks[system14-0.25-True] - Ass...
FAILED gpaw/test/response/test_chiks.py::test_chiks[system15-0.25-False] - As...
FAILED gpaw/test/response/test_chiks.py::test_chiks[system16-0.5-True] - Asse...
FAILED gpaw/test/response/test_chiks.py::test_chiks[system17-0.5-False] - Ass...
FAILED gpaw/test/response/test_chiks.py::test_chiks_vs_chi0[system4-0.25] - A...
FAILED gpaw/test/response/test_chiks.py::test_chiks_vs_chi0[system5-0.5] - As...
FAILED gpaw/test/response/test_chiks.py::test_chiks_vs_chi0[system10-0.25] - ...
FAILED gpaw/test/response/test_response_band_cutoff.py::test_response_band_cutoff[srvo3_pw]
ERROR gpaw/test/test_generate_gpwfiles.py::test_generate_gpwfiles[srvo3_pw]
今後より実用的なテストを行って報告しようと思います。