Quantum-Espresso 6.2.1のRyzen Threadripper PCへのインストールメモ(Linux Fedora26) 2017/12/15

  • Quantum-Espresso(QE)は、擬ポテンシャルと平面波を使う第一原理電子状態計算プログラムである。最新版のQE6.2.1をAMD Ryzen Threadripper PC (OSはFedora26 X86_64) にインストールした際のメモ。
  • インストールしたPCはRyzen Threadripper 1950X (16 core)、メモリはquad-channel 8GBx4、M.2のSSD 500 GBの構成で、パソコン工房から最近購入した。コンパイラとしてはgcc, gfortranで、ライブラリーはIntelのMKLを使う。なお、その後Core i9 PCも購入して、速度の比較をしたが、i9の方がかなり速かったQE6.2_to_Core_i9

Fedora26のインストール

  • これはDesktop版をWindows PCにダウンロードして、isoファイルを右クリックして、出てきたメニューでディスクイメージの書き込みでDVDに焼いた。それを使って、PCへインストールした。後でupdateしたので、現在はFedora27になっている。

gccのインストール

  • Fedora26のDesktop版にはgccなどは付いてないので、ソースからインストールした。https://gcc.gnu.org/からダウンロード。7.2.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は非商用だとフリーで使える。Intelのサイトに行って、Linux版のMKLをゲット。ダウンロードしたMKLを解凍する。MKLのインストールは、install.shで行う。途中からrootでインストールするので、最初からsuしておいたらよい。
    >./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.1のインストール

  • ソースはhttp://qe-forge.org/gf/project/q-e/からダウンロードできる。最新は6.2.1だった。必要に応じて他の必要なコードをダウンロードする。以前一緒だったものも最近は別のところからダウンロードする必要がある。
  • 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した。エラーは出なかった。

テスト

  • 適当な入力ファイルtest.inを使って、pw.xをテストして見た。
    > mpirun -np 16 pw.x < test.in > test.out &
    QE6.1の時と同じように実行終了直後にunderflowのエラーがでることがあるが、計算本体には問題ないので無視してもよさそう。エラーメッセージが出るのが困るときはエラー出力を/dev/nullへ送る。
    > mpirun -np 16 pw.x < test.in 1> test.out 2>/dev/null &
    古いIntel Core i7 X980 6core PC (QE6.1)で同じようにGNUコンパイラ、MKLを使ったものとpw.xで比べている。条件が全く同じではないので、正確な比較ではないが、pw.xによる構造の最適化計算はi7 X980 6coreより80%くらい速くなっている(表参照)。
    CPUi7 X980ThreadripperThreadripper
    core数6core6core16core
    CPU time739 min407 min199 min
    core数の比較では、16core全部使った場合は6coreの場合の約半分の実行時間となった。トータルで古いIntel i7 PCより4倍弱速くなった。 MKLを使わない場合もMKLインストール前にちょっとやってみたが、こちらは古いCore i7よりも遅くなったので、MKLはAMDのCPUでも使うべきであるとの結論となった。
  • 先の実行では16コアを使った計算が始まる。topコマンドを使うと、pw.xが16個並列で動いていることが確認できる。ちなみにmpirunはmpiexecでもよい。どちらもリンクでorterunが本体。pw.xは最も基本の電子状態計算の実行ファイルで、scf計算や構造の最適化などができる。-np 16は使うコア数を指定している。pw.xが存在しないとエラーが出るのはパスに登録されていないから。.bashrcのパスに追加するか、パスを直接指定してやる。私の環境ではこのコマンドラインではなぜかバスがうまく通らないので、実際には相対パスで指定している(../bin/pw.xとか)。よくあるエラーは擬ポテンシャルの場所や名前の間違いである。デフォルトでは用意されている擬ポテンシャルはかなり少ないので、元素や近似の違い等に応じて、必要な擬ポテンシャルをダウンロードする必要がある。QEのウェブページのPseudopotentialのところから様々な擬ポテンシャルが得られる。計算中はtail -f test.outで計算結果をモニターできる。
  • いつの間にか構造の入力で空間群が使えるようになっているが、Wyckoff記号を入れるとか便利とはいいがたいし、私はまだうまく使えていない。

よく使う単位の変換

  • 長さ: 1 au = 0.5291772 Ang. QEで使う長さの単位はauです。
  • 圧力:1 GPa = 0.0004587425 Ry/Ang^3 これは高圧下のエンタルピーを計算する際のPV項のために必要です。なお、Quantum-Espressoの出力のエンタルピーにはPV項は既に入ってますので、補正の必要はありません。

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