Quantum-Espresso 6.5のLinux Fedora32へのインストール(2020/07/27) †
- Quantum-Espresso(QE)は、擬ポテンシャル(PAWも使える)と平面波を使う第一原理電子状態計算プログラムである。QE6.5をCore i5 PC (OSはFedora32 X86_64) にインストールした際のメモ。
- インストールしたPCはi5 8500 (6 core)、メモリは8 GB、M.2のSSD 256 GBの構成で、パソコン工房で昨年買った。本当はAR sandbox用に買ったが、グラフィックスボードとの相性が悪いので、計算用に使うようにした。計算目的でなかったので、メモリ、SSDがちょっと小さい。コンパイラとしてはgcc, gfortranで、ライブラリーはIntelのMKLを使う。
- (20200814)その後、i9, Theadripper PCにもインストールしたが、特に問題なかった。ただ、これらはクリーンインストールではなかったので、クリーンインストールでは起きるであろう問題に対応してなかったので、その分を追加した。
Fedora32へのアップデート †
- 既にFedora31をインストールしているので、ソフトウエアのアップデートでOSを更新することができる。Fedora32自体へのアップデートも適用しておく。この辺りはGUI(ActivitiesのSoftware)で全てできる。以下>はterminalのプロンプト。
gccのインストール †
- まずはgccのインストールをする。https://gcc.gnu.org/からダウンロード。10.2が最新だった。解凍する。色々と足りないのですぐにconfigureはできないので、まず必要なものをインストールする。これには以下のコマンドを実行すればよい。
> ./contrib/download_prerequisites
これで不足分のソフトをインストールしてくれるが、クリーンインストールの場合は、cppがない事によるエラーがmakeで出るので、make前に以下を実施する。> sudo dnf install gcc-c++
クリーンインストールの場合、そもそもmakeがないはずなので(これそうでない場合もあるので一度makeとタイプしてみて入ってない場合は)、makeを以下でインストール。> sudo dnf install make > ./configure --disable-multilib
とする。OSが64bit用なので、--disable-multilibをつけている。ないとエラーが生じる。これでmake, make installできる。> make > sudo make install
これでgccをインストールできた。なお、makeにはかなり時間がかかるので、1時間以上放っておく。コンパイル後は、.bashrc or .bash_profileに、PATHに/usr/local/binと/usr/bin、LD_LIBRARY_PATHに/usr/local/lib64を追加する。PATHを設定した後は、一度ターミナルをログアウトする。設定が変わらない場合は、再起動してみる。
openmpiのインストール †
- www.open-mpi.orgからソースをダウンロード(今回最新版はver.4.0.4だった)。なおconfigure時にprefixで/usr/local/openmpiと指定した。これはインストール先の指定。
> ./configure ―prefix=/usr/local/openmpi > make > sudo make install
コンパイル後、PATHに/usr/local/openmpi/binを、LD_LIBRARY_PATHに/usr/local/openmpi/libを追記した。これらがシステムにちゃんと認識されていないと、並列用の実行ファイルにならないので、> echo $PATH > echo $LD_LIBRARY_PATH
で設定されている内容を確認しておくこと。この状態でもQEをコンパイルすることができるが、このままでは遅いので、その前にMKLをインストールする。
MKL(Intelのmath kernel library)のインストール †
- BLAS, LAPACK, FFTWのライブラリーはQEにも用意されているが、MKLを使った方がIntel CPUでは速くなるので、MKLをインストールする。現在、MKLは非商用だとフリーで使える。私の理解では、Linux用のifortなどはコンパイラについては、個人使用ならばフリーで使えるが、私のように大学での研究目的の場合はアカデミックライセンス(有償)を取る必要がある。一方、MKLは完全にフリーである。Intelのサイトに行って、Linux版のMKLをダウンロードする。ダウンロードしたMKLを解凍する。MKLのインストールは、install.shで行う。MKLのディレクトリに入って、
> ./install.sh
- aptでインストールもできるようで、Qittaに記事があった。また、ちょっと調べたら、どうも今後MKLはoneAPIの中のoneMKLとなるようだ。しかしまだベータ版だった。
- 以前は/opt/intelにデフォルトでインストールされていたはずだが、今回はhome/masami/intel以下にインストールされていた(ここでmasamiはユーザー名で変えて下さい。以下同様)。
- fftwについてはなぜか別途コンパイルする必要があるようなので、次にMKLのfftw3をコンパイル。/home/masami/intel/mkl/interfaces/fftw3xf/にソースがあるので、ここでmakeする。64bit版の場合は、
> make libintel64 compiler=gnu
でいいようだ。できたlibfftw3xf_gnu.aを/home/masami/intel/mkl/lib/intel64/に移す。これでMKLを使ったQEのインストールができるようになった。LD_LIBRARY_PATHに/home/masami/intel/mkl/lib/intel64を追加した。
QEのインストールの前にすること †
- gcc10.2では型を厳密に調べるようになったせいで、このままQEをコンパイルすると、以前は出なかった型のエラーで止ってしまった。これを回避するには以下のフラグを設定する必要がある。これはStackoverflowやgithubのFortranフォーラムで既に指摘されている。なので、以下の2つをインストール前に実行しておく。たぶんQE側でも今後対応されると思う(QE 6.6, 6.7.0でこの問題はなかった)。
> export FCFLAGS="-w -fallow-argument-mismatch -O2" > export FFLAGS="-w -fallow-argument-mismatch -O2"
QE-6.5のインストール †
- ソースはhttps://github.com/QEF/q-e/releasesからダウンロードできる。最新は6.5。この版ではrVV10, vdW-DFで予めテーブルを作っておく必要がなくなったそうだ。
- 私はtar.gz版をホームディレクトリー(/home/masami)にダウンロードした。tar xzfでアーカイブを展開する。QEのディレクトリに移動して、まず何も指定せずにconfigureしてみる。
> ./configure
出力の最後の方を見て、ライブラリーなどにMKLが正しく指定されているかをチェック。今回もBLASはMKLが自動で選ばれていたが、LAPACKとFFTには指定がなかった。このままmake allすると、LAPACK, FFTについてはデフォルトの遅いライブラリーがリンクされてしまう。仕方ないので直接> ./configure LAPACK_LIBS="/home/masami/intel/mkl/lib/intel64/libmkl_lapack95_lp64.a" 続き FFT_LIBS="/home/masami/intel/mkl/lib/intel64/libfftw3xf_gnu.a"
とライブラリーを指定してやる。これはmake.incの対応するところに書き込んでもよい。そしてmake allした。 - 私の場合はここで、includeのパスがおかしいwarningが出ていて、その後エラーで止まった。そのため、make.incの中を見て、IFLAGSで、mklのパスが/opt/以下になっているのを実際に合わせて変更した(私の場合は/home/masami/intel/mkl/include)。またqe6.5の存在するパスでも/が2つ重なることでwarningが出ているのが見られたので、TOPDIRのところのコメントアウトを外して、directoryを正しくこちらで設定。それで再度make allして、先ほどのwarningが消え(まだ出るものも残るがシリアスではない)、エラー出ることなくコンパイルができた。
- なお、この辺りで色々とトラブった場合には、一度make cleanをして、configureから再開する(make.incも再編集)。また私が混乱したのは、warningでFoXというdirectoryが出てくるのだが、調べるとそのようなdirectoryがあったり、なかったりした。これはFoXというdirectoryは解凍直後にはなくて、インストール途中で作成されるからだった。
- 私の場合は、型の問題のエラーもあったので、途中色々と調べたり、試行錯誤が必要だったが、最初から2つのフラグを設定しておけばスムーズにインストールできるはず。色々問題があって、make途中で止まったなどでスタックした場合は、make cleanを実行してみる。
- 最後に最近使ったpentadiamondの入力ファイルを使って、6 coreを使ったvc-relax計算をしてみた。15分くらいで最適化された(これは空間群を使っている。使ってないともっと時間がかかる)。topまたはpsで見ると確かに6 core全部使われていることが確認できる。計算の進捗状況を見るには、tail -f hoge.outで出力ファイルを逐次表示させる。
- 確かに入力ファイルにrVV10を指定するだけで計算ができた。以前のバージョンでは事前にTableを作る必要があった。
QE-GIPAW 6.5のインストール(20200729追加) †
- ソースはhttps://github.com/dceresoli/qe-gipawからダウンロードできる。最新は6.5で、QE本体と同じ版を使う。QEのディレクトリにソースをコピーして、解凍する。qe-gipaw-6.5内のディレクトリに移動する。READMEにconfigureの仕方が書いてある。それによると、QE自体をコンパイルした時の情報(ライブラリーとか)を必要とするので、QEのディレクトリ内にqe-gipaw-6.5をコピーした場合は、以下のように..(1つ上のディレクトリ)を指定すればよいだけ。
> ./configure --with-qe-source=..
他の場所にある場合は、最後の部分を変更する。これでエラーが出なければ、qe-gipaw-6.5のディレクトリでmakeとタイプするとgipaw.xができる。これのエイリアスまたは本体を1つ上のqe-6.5本体のbinに移動しておく。なお本体(binary)はsrcディレクトリ内にある。 - なおgipaw計算ではPAWポテンシャルを使う必要がある(実際にはpw.xの時にPAWポテンシャルを指定する)。
- 最近のバージョンでは、GIPAWをQEのディレクトリに入れておくと、make allの時に同時にコンパイルしてくれるようだ。ただ、GIPAW自体は別途ダウンロードするところは上記の通り。
追記(2021/03/18) QE-6.6 and QE-6.7.0のインストール (to Fedora33)
- 上記の方法と大体のところ同じだが、make allの時にFFTLibに関係してエラーで止まってしまった。これはconfigureの時に指定したMKLのFFT_LIBSの指定と関係しているようだ。1つのエラー回避法は、configureの時にFFT_LIBSでMKLのライブラリーを指定することを止めることであり、そうするとQEのFFTライブラリーを自動的に使うことになる。これだとエラーが消えた。実行速度が気になるところだが、QE6.5の時のpw.x計算を比べたが、2~3割遅いくらいだった。色々と試したが、今のところMKLのFFTW3が使えていない。この現象はFedora34へQE6.7.0をインストールした時にはなかった(MKLはoneAPIのBase toolkitのもの)。
追記(2021/03/18) AMD CPUに関して
- 最新のユーザーガイドには、AMD CPUを使う場合のいくつかの有用な情報が載っている。次の環境変数をconfigureする前に定義しておくと、速くなるそうである。
export MKL_DEBUG_CPU_TYPE=5
RYZEN Threadripperで試してみると、確かに2~3割速くなった。もっと前に知りたかった… - MKLのFFTWとAMD CPUと起こる問題が次の環境変数で防げるそうである。私の場合、そもそもエラーが出るので(上記)、使っても意味がなかった。
export MKL_CBWR=AUTO
- AMDもライブラリーを提供しているが、QEではあまりうまくいってないようだ。現状、MKLを使って、上の環境変数を設定することが推奨されている。
Last-modified: 2020-12-07 (月) 15:56:38