OUOperatingGrant.png

Quantum-Espresso 6.2のIntel Core i9 PCへのインストールメモ(Linux Fedora26) 2018/02/16

  • Quantum-Espresso(QE)は、擬ポテンシャルと平面波を使う第一原理電子状態計算プログラムである。QE6.2をCore i9 PC (OSはFedora26 X86_64) にインストールした際のメモ。
  • インストールしたPCはi9 7980XE (18 core)、メモリはquad-channel 16 GBx4、M.2のSSD 500 GBの構成で、パソコン工房から数日前に到着。とりあえず、コンパイラとしてはgcc, gfortranで、ライブラリーはIntelのMKLを使う。

QE6.3について追記(2018/08/09)

  • 下記と同じ要領で最新のQE6.3をインストールできました。OS updateしたので、Fedora 28となっていた。実際にはgccなどの環境はいじらず、QEのインストールのところから始めた。QE-GIPAWも6.3になっており、何の問題もなくインストールできました。6.2の時に出た最後のエラーも出なかった。ただ、できたgipaw.xはQEのbinにコピーするかリンクを張る必要がある。

Fedora26のインストール

  • これはDesktop版をWindows PCにダウンロードして、isoファイルを右クリックして、出てきたメニューでディスクイメージの書き込みでDVDに焼いた。それを使って、PCへインストールした。これはしばらく前にダウンロードしたもの。現在の最新版はFedora27だが、Intel Composerのインストール予定もあり、それがFedora26までしか対応してなかったので、念のため26にした。後でupdateして、現在はFedora27になっている。

gccのインストール

  • Fedora26のDesktop版にはgccなどは付いてないので、ソースからインストールした。https://gcc.gnu.org/からダウンロード。7.3.0が最新だった。tar xzfで解凍。色々と足りないのですぐにconfigureはできないので、まず必要なものをインストールする。これには以下のコマンドを実行すればよい。
    $ ./contrib/download_prerequisites
    これで不足分のコードをインストールするが、cppは入ってないようで後でmake時にエラーが出るので、以下のようにg++をインストールした。
    $ su
    # dnf install gcc-c++
    gcc-c++であって、g++やgnu-c++ではないので注意。これでやっとconfigureできる。
    $ ./configure --disable-multilib
    とする。OSが64bit用なので、--disable-multilibをつけている。ないとエラーが生じる。これでmake, make installできる。
    $ make
    $ su
    # make install
    コンパイルできた。なお、makeにはかなり時間がかかる。コンパイル後は、.bashrc or .bash_profileに、PATHに/usr/local/binと/usr/bin、LD_LIBRARY_PATHに/usr/local/lib64を追加する。PATHを設定した後は、一度ターミナルをログアウトする。なぜか、LD_LIBRARY_PATHを.bashrcに登録しても認識されていないようなので、直接以下を入力しておいた。以下でも同様。
    $ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64; export LD_LIBRARY_PATH
    再起動した後でみたら、/bashrcの内容のLD_LIBRARY_PATHが正しく登録されていた。

openmpiのインストール

  • www.open-mpi.orgからソースをダウンロード(最新版はver.3.0.0だった)。なおconfigure時にprefixで/usr/local/openmpiと指定した。これはインストール先の指定。
    $ ./configure ―prefix=/usr/local/openmpi
    $ make
    $ su
    # 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を使った方が速いので、それをインストールする。現在、MKLは非商用だとフリーで使える。私の理解では、Linux用のifortなどは個人使用ならばフリーで使えるが、大学での研究目的の場合はアカデミックライセンスを取る必要がある。Intelのサイトに行って、Linux版のMKLをゲット。ダウンロードしたMKLを解凍する。MKLのインストールは、install.shで行う。途中で、rootになるか、sudoをする必要がある。
    $ ./install.sh
  • fftwについてはなぜか別途コンパイルする必要があるようなので、次にMKLのfftw3をコンパイル。/opt/intel/mkl/interfaces/fftw3xfにソースがあるので、ここでrootでmakeする。64bit版の場合は、
    # make libintel64 compiler=gnu
    でいいようだ。できたlibfftw3xf_gnu.aを/opt/intel/mkl/lib/intel64/に移す。これでMKLを使ったQEのインストールができるようになった。LD_LIBRARY_PATHに/opt/intel/mkl/lib/intel64を追記した。
    $ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/intel64; export LD_LIBRARY_PATH

QE-6.2のインストール

  • ソースはhttp://qe-forge.org/gf/project/q-e/からダウンロードできる。最新は6.2.1だが、qe-gipawもインストール必要があるので、6.2を選択した。必要に応じて他の必要なコードをダウンロードする。
  • tar.gz版をホームディレクトリーにダウンロードした。tar xzfでアーカイブを展開する。QEのディレクトリに移動して、まず何も指定せずにconfigureしてみる。
    $ ./configure
    出力の最後の方を見て、ライブラリーなどにMKLが指定されているかをチェック。今回もBLASはMKLが自動で選ばれていたが、LAPACKとFFTには指定がなかった。仕方ないので直接
    $ ./configure LAPACK_LIBS="/opt/intel/mkl/lib/intel64/libmkl_lapack95_lp64.a"
    続き 
    FFT_LIBS="/opt/intel/mkl/lib/intel64/libfftw3xf_gnu.a"
    とライブラリーを指定してやる。そしてmake allした。エラーは出なかった。

QE-GIPAW 6.2のインストール

  • ソースはhttps://github.com/dceresoli/qe-gipawからダウンロードできる。最新は6.2である。他でも書いたが、Quentaum-Espresso本体が最新版6.2.1だとコンパイル中にエラーが出た。Quentaum-Espresso 6.2だと、エラーなくコンパイルできたので、このPCのQEは6.2にしている。
  • QEのディレクトリにソースをコピーして、tar zxvfで解凍する。qe-gipaw-6.2内のディレクトリに移動する。READMEにconfigureの仕方が書いてある。それによると、QE自体をコンパイルした時の情報(ライブラリーとか)を必要とするので、QEのディレクトリにqe-gipaw-6.2がある場合は、以下のように..と指定すればよい。
    $ ./configure --with-qe-source=..
    他の場所にある場合は、最後のディレクトリ指定部分を変更する。これでエラーが出なければ、qe-gipaw-6.2のディレクトリでmakeとタイプするとgipaw.xができる。
  • 私の環境ではmakeの最後でエラーが出ていたが、これはgipaw.x自体は問題なくできたが、それをqe-6.2のbinにlinkするところで失敗しただけで、qe-6.2/binへcpするか、リンクを作ってやれば解決した。
  • topコマンドで、18コア使ってpw.x計算をしているところを見たところ。
    i9-18core.png

Threadripper 1950Xとの比較

  • やはり気になるので、i9 7980XE (18 core) PCとThreadripper 1950X (16 core) PCの速度比較のための計算を1つ行ってみた。pw.x(vc-relax)の計算時間(数時間かかる計算)で比較した。どちらも同じgcc, openmpi, MKL, QE6.2を使っている。全部のcoreを使っての計算。結果はi9 7980XE (18 core)の方が2.5倍ほど速かった。これは1つの計算結果だけなので、計算内容によっても変わるかもしれない。core数はi9の方が少し多く、MKLは当然Intel CPUに有利なことも影響しているかもしれない。また、Threadripper PCの方が安いので、どちらを選べばいいかは微妙である。

restartのやり方

  • 以前は計算途中で強制的に終了(kill)しても、restart_mode='restart'で計算が続けられたと思うが、最近はこれはダメなようだ。途中終了させる場合は、outdirで指定されたディレクトリで、prefixで指定した名前"prefix".EXITというファイルを作ってやると終了してくれる。なので、以下のようにすればよい。touchは内容のないファイルを作ってくれる。
    $ touch outdir/prefix.EXIT # outdir, prefixにはinput fileで設定した値を入れる
    これを実行後、すぐに計算が終了する。この場合は、restart_mode='restart'で再開できる。

Intelコンパイラ

  • その後、OSを再インストールして、入手したIntelのコンパイラで試したのだが、なぜかgnuコンパイラより遅くなってしまった。openmpiもIntelのコンパイラを使った。理由がよくわからない。現在までのところ、gnu+mklが最速だった。

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-02-16 (金) 13:51:01 (396d)