OpenMX
オープンソースの第一原理計算アプリケーションソフトウェアです。原子局在基底と擬ポテンシャルを用いて、結晶・界面・溶液などの広範な物理系に対して電子状態計算を行います。公式サイトはこちらをご参照ください。
環境
Ubuntu on WSL2を前提とします。
Ver. 3.9.9です。
最初に必要なパッケージを準備する
sudo apt update
sudo apt upgrade -y
sudo apt install build-essential
OpenMXのインストール準備
OpenMXをダウンロード、解凍して当該ディレクトリへ移動
任意の場所にDFT用のディレクトリを作成する。例えば「DFT」という名称のディレクトリを作る。その後、作成したディレクトリに移動する。
mkdir DFT
cd DFT
OpenMXのWebサイトのDownloadの「openmx3.9」で右クリックしてリンクのアドレスをコピー。
そのあとWSLのコマンドラインに戻って、wgetと入力した後右クリックして貼り付けしてEnter。ダウンロードされる(2022/9/22時点では以下)。
wget http://t-ozaki.issp.u-tokyo.ac.jp/openmx3.9.tar.gz
同様に、「+patch」で右クリックしてリンクのアドレスをコピー。
wget入力して貼り付けしてEnter。ダウンロードされる(2022/9/22時点では以下)。
wget http://www.openmx-square.org/bugfixed/21Oct17/patch3.9.9.tar.gz
次に、解凍。
tar xvfz openmx3.9.tar.gz
ディレクトリに入る。
cd openmx3.9
中には以下のディレクトリが見つかるはず。
ls
- DFT_DATA19 ← 基底関数&擬ポテンシャル
- source ← プログラムのソースファイル
- work ← サンプルファイル
ソースにパッチを適用する
もともとのsourceディレクトリ(Ver.3.9用)にパッチを適用した、source3.9.9を作成する。
mkdir patch
mv ../patch3.9.9.tar.gz ./patch/
cp -rp source source3.9.9
cd source3.9.9
tar xvfz ../patch/patch3.9.9.tar.gz
mv kpoint.in ../work/
OpenMXのコンパイル(方法1: ストレージ容量に余裕のある場合, recommended)
インストールで必要なパッケージをIntel oneAPI Toolkitsで入手する
cd
Windows上でIntel oneAPI Toolkitsにアクセスして、Intel oneAPI Base ToolkitとIntel oneAPI HPC Toolkitを以下の通りインストールする。
まず、Intel oneAPI Base Toolkitのダウンロードをクリック。
- Operating system: Linux
- Select distribution: Online
を選択して、表示される'Command Line Download'に記載のコードをUbuntu上で実行する。
すると、インストール画面が別ウインドウで立ち上がるので、画面の指示に従ってインストールする。
(カスタムインストールを選択する場合は、Math Carnel Libraryを必ずインストールすること)
続いて、Intel oneAPI HPC Toolkitのダウンロードをクリック。上と同様にインストールする。
カスタムインストールにて、DPC++/C++ Compiler, MPI Library, Fortran Compilerをインストールする。
Intel oneapiで入手したコンパイラのPATHを通す
cd
vim .bashrc
で開いて、最後に行を追加して以下を入力して保存する。
source /opt/intel/oneapi/setvars.sh
そして、以下のコマンドでPATHを反映させる。
source .bashrc
ちゃんとインストールできたか確認する。バージョンとか表示されればOK。
icc -v
makefileを編集する
cd DFT/openmx3.9/source3.9.9
vim makefile
openmx3.9.9/source/makefileを次のように編集する。
MKLROOT = /opt/intel/oneapi/mkl/latest
CC = mpiicc -O3 -ip -no-prec-div -qopenmp -I$(MKLROOT)/include/fftw
FC = mpiifort -O3 -ip -no-prec-div -qopenmp
LIB= -L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lifcore
makeする
make -j
エラーが出たら何回も繰り返す。
最後に、以下で終わり。
make install
OpenMXのコンパイル(方法2: ストレージ容量に余裕のない場合)
インストールで必要なパッケージをUbuntuのaptで入手したあと、makefileを作成する
こちらを参照。
makeする
make -j
エラーが出たら何回も繰り返す。
最後に、以下で終わり。
make install
OpenMXの実行テスト
cd ~/DFT/openmx3.9/work/
に移動して、以下を実行する
mpirun -np 8 ./openmx -runtest -nt 2 > log.txt & # 最後に&をつけることでバックグラウンド実行されます
# -np X (並列数), -nt Y (並列数)
※もしIntelMPIのmpirunでバックグラウンドで実行したときに勝手に計算が止まるようなら、以下のようにするといいかも。
mpirun -np 8 ./openmx -runtest -nt 2 </dev/null>& log.txt &
実行状況は以下で確認、停止、再開できます。
jobs # 状況確認
bg XXXX # jobsで確認した停止中のジョブ番号XXXXを再開する
kill XXXX # jobsで確認した実行中のジョブ番号XXXXを停止する
OpenMXの実行
コンパイルして作成したファイル(openmx)と、インプットファイル(xx.dat)を同一ディレクトリに格納したうえで、
mpirun -np 8 ./openmx xx.dat -nt 2 </dev/null>& log.txt &
# CPU実行コア数 8とか2とかは環境に応じて
を実行する。
実行中のlog.txtファイルを見たいときは
tail -F log.txt