OpenMXという第一原理計算ソフトがあります。第一原理計算とは、固体の位置情報から電子状態を計算する枠組みです。密度汎関数理論に従い、多体の電子状態が原理的には求まります。ただし、実際の計算では近似を色々かけているので、人によっては第一原理計算とは呼ばない人もいるかもしれません(化学分野の人は特に)。ともかく、ここでは第一原理計算ソフトと呼ぶことにします。
このソフトをUbuntu 18.04.5 LTSにインストールしようとしたら思いのほかはまりましたので、解決方法をシェアすべくここに書きたいと思います。
まず、日本語マニュアルのmakefileの例はgfortranの場合には間違っているので、気をつけてください。
[注]mpirunで2並列にしたら落ちましたので、もしかしたらまだ間違っているかもしれません。誰か知っている方ご協力していただけると助かります。
VirtualBoxを用意して、まっさらなUbuntu 18.04.5 LTSに対してOpenMXをインストールした時の作業記録をここに残します。
以下はターミナルで実行したコマンドです。
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
sudo sh -c 'echo deb https://apt.repos.intel.com/mkl all main > /etc/apt/sources.list.d/intel-mkl.list'
sudo apt-get update
sudo apt-get install intel-mkl-2020.0-088
sudo apt install gfortran
sudo apt install emacs
sudo apt install openmpi-doc openmpi-bin libopenmpi-dev
echo "source /opt/intel/mkl/bin/mklvars.sh intel64" | cat >> ~/.bashrc
sudo apt install libfftw3-3 libfftw3-dev libfftw3-doc
wget http://t-ozaki.issp.u-tokyo.ac.jp/openmx3.9.tar.gz
wget http://www.openmx-square.org/bugfixed/20Feb11/patch3.9.2.tar.gz
tar -xvf openmx3.9.tar.gz
cp ./patch3.9.2.tar.gz openmx3.9/source/
cd openmx3.9/source
tar zxvf patch3.9.2.tar.gz
mv kpoint.in ../work/
何をしたかと言いますと、
- MKLのインストール
- gfortranのインストール
- emacsのインストール
- openmpiのインストール
- FFTW3のインストール
- OpenMXのダウンロード
- OpenMXのパッチを当てる
です。
次に、Makefileをいじります。
emacs makefile &
makefileは
MKLROOT = /opt/intel/mkl
CC = mpicc -O3 -fopenmp
FC = mpif90 -O3 -fopenmp
LIB = -lgfortran -lmpi_mpifh -L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_scalapack_lp64 -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lmkl_blacs_intelmpi_lp64 -lgomp -lpthread -lm -ldl -lfftw3
しておけばOKです。
このままだとmakeがインストールされていないので、
sudo apt install make
をします。
そして、
make all
をします。
このmakeですが、Ubuntu特有なのか面白いことが起きます。
途中で、
`sqrt' に対する定義されていない参照です
みたいなエラーを吐いて落ちます。
どこで落ちたかみてみると、
mpicc -O3 -fopenmp -I./elpa-2018.05.001 -g gcube2oned.c -o gcube2oned
でです。
sqrtが定義されていない、というエラーはmathのライブラリーがリンクされていない時に起こります。
ですので、-lmオプションをつければ良いのですが、Ubuntuの場合、なぜか最後尾に-lmをつけないと同じエラーが出ます。
したがって、
mpicc -O3 -fopenmp -I./elpa-2018.05.001 -g gcube2oned.c -o gcube2oned -lm
make all
としましょう。
これで、この部分だけちゃんと-lmでコンパイルし、その続きをmake allでできます。
最後に、
make install
します。
動作確認には、
cd ../work
mpirun -np 1 openmx Methane.dat -nt 1 > met.std
cat met.std
をして、
The calculation was normally finished.
が出ていれば大丈夫でしょう。