QE6.5_to_Fedora32

OUOperatingGrant.png

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も以下でインストール。
    > 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