QE7.0_to_Fedora36 の履歴(No.1)


Quantum-Espresso 7.0のLinux Fedora36へのインストール(2023/12/25)


Fedora36のインストール

 Fedoraのバージョンアップは続けているとそのうちどこかおかしくなったりするので、今回はクリーンインストールした。以前はイメージをDVD-ROMに書き込んでいたが、最近は容量的に無理なのでUSBメモリへ書き込んで、USBメモリからブートしてインストールしている。最新は36だった。ダウンロードにMacやWindowsを使う場合でもisoイメージをUSBメモリに書き込むソフトがFedoraのWebページからダウンロードできる。インストールはハードディスクのパーティション以外は特に問題ないと思う。パーティション部分は以前ハードディスクを使っていたかどうかで色々と変わる。要望に応じて適切な選択をする必要がある。インストールしたら、リブートして、そしてupdateをしておく。この辺りはFedora37, 38でも同じ。

gcc等のインストール

 gccはhttps://gcc.gnu.org/からソースがダウンロードできる。今回は12.1が最新だった。ミラーサイトからダウンロードする。筑波大のミラーサイトからtar.gzをダウンロードした。ダウンロード終わったら、自分のDownloadsディレクトリにgcc-12.1.0.tar.gzがあるので、右クリックでExtract Hereをクリック。Terminalを起動。Downloadsディレクトリへ移動する(cd)。なおTerminalはアプリケーションの中にある。今後よく使うのでTerminalアイコンを右クリックでPin to Dashをクリックしてダッシュボードに追加しておく。
 いくつか足りないものがあるので、以下をTerminalから実行。

./contrib/download_prerequisites

必要なものを自動でインストールしてくれる。しかし./configureを実行するとまだエラーが出る。c++がインストールされていないためのようだ。以下を実行。

> sudo dnf install gcc-c++

 実はこれ実行するとgcc自体もちょっと古いものが自動的にインストールされるが、さっきダウンロードしたバージョンのgccを以下ではコンパイルする。以前はmakeがないとのエラーも出たが、最近は出ない。これで./configureを実行すると、64bit用なら--disable-multilibのオプションを付けるように言われる。そこでこのオプションをつけて実行する。

> ./configure --disable-multilib

 今度はエラーが出ないはず。これで以下を実行する。makeは数時間くらいかかるのでしばらく放っておく。

> make

終わったら、make installで、これにはsudoが必要。

> sudo make install

 これでgcc等必要なものがコンパイルできた。それらの実行ファイルへのパスの設定が必要である。下記を実行して、

> echo $PATH

 /usr/local/bin, /usr/binがPATHに含まれていない場合は、.bashrcか.bash_profileのPATHに/usr/local/bin, /usr/binを追加する。各パスは:で区切る。また、LD_LIBRARY_PATHは.bashrcや.bash_profileには設定されてないはずなので、これも.bashrcなどに追加する。

LD_LIBRARY_PATH="/usr/local/lib64"
export LD_LIBRARY_PATH

 私は普通vi/vimを使って編集するが、GUIで編集したい方はFilesでホームディレクトをオープンして、そこでオプションでShow Hidden Filesをチェックすると.bashrcや.bash_profileが見える様になる。それらのファイルを右クリックして、Open with Text Editorをクリックするとエディタが開くのでそれで編集してセーブする。これらはライブラリへのパスで、"="の左右はスペースなし。またexportすることを忘れないこと。これを書き込んだ後で一度Terminalを終了して、再度起動すると有効になる。もし間違っている場合は起動時にエラーが出るので修正する。

openmpiのインストール

 openmpiはhttps://www.open-mpi.org/からダウンロードする。最新版は4.1.4だった。rpm, tar.gz, tar.bz2のどれかをダウンロード。多分rpmがインストールが簡単だと思うが、rpmではインストールできなかった。Fedoraのrpmでは実行時にダウンロードが禁止されているなどの制約があるそうなので、それが原因なのかもしれない。なのでいつものtar.gzをダウンロードして、解凍。openmpiは特にインストール先にこだわりがなければ以下を実行すればよい。インストール先を指定したければ./configure --prefix=/usr/local/openmpiなどと指定する(指定した場合はそれらのbin, libraryの場所をPATH, LD_LIBRARY_PATHで指定する必要あり)。

> ./configure
> make
> sudo make install

 こちらもLD_LIBRARY_PATHに/usr/local/lib/openmpi(または指定したディレクトリ)を追加する。一度Terminalを終了して、再度起動する。

MKL(IntelのoneAPI Math Kernel Library)のインストール

 BLAS, LAPACK, FFTWのライブラリーはQEのソースにも用意されてはいるが、MKLを使った方がIntel CPUでは実行速度が速くなるので、MKLをインストールする。AMD CPUでも使える。フリーである。現在MKLはoneAPIのBase Toolkitに入っている。https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html
 インストールの仕方は色々提供されているので、どれかを選ぶ。私はTerminalからwgetでインストールプログラムをダウンロードして、shellを実行することでインストールした。shellが実行しない場合は、chmod 755 l_mkl*.shを実行。実行するとGUI画面に変わる。Fedora36で動くかどうか分からないみたいなメッセージが出るが無視して進む。画面に従って進めばインストールができる。やはりライブラリのパスが必要になるので、LD_LIBRARY_PATHに/opt/intel/oneapi/mkl/latetst/lib/intel64を追加。なお最近インストールした時は自分のホームディレクトリにインストールされた。その場合は代わりにそのパス(/home/username/intel/oneapi/mkl/latest/lib/intel64)をLD_LIBRARY_PATHに追加する。(追記:2023/12/25に最新版インストールしたら、また/optの方に戻っていた)。Terminalを再起動するか、または > source .bashrcを実行する。

Quantum Espressoのインストール

 (libxcを使う方は先に下のlibxcのインストールを読んでください)
Quantum Espressoのウェブサイトはhttps://www.quantum-espresso.org/で、以前と違ってダウンロードには登録が必要となっている。7.0をダウンロードして、解凍して、qe-7.0フォルダーを/home/user-name/に移動した。Terminalで、qe-7.0に移動して、まず./configureを実行してみる。出力の最後の方で使うBLASライブラリ等を使うリストが出てくる。そこでMKLのライブラリが使われているかチェックする。以上の手順だとMKLが自動的に使われているはず。LAPACK, FFTでパスが設定されていないが、これは問題ない。ただしこのままだとエラーが出るので、qe-7.0のmake.incをエディタで開いて、設定を変更する。私の場合、以前からTOPDIRがいつも変になるので(多分コンパイルには関係ない)、TOPDIRのコメントを外している。さらにIFLAGSの最後のところがmklの古いディレクトリ設定のままで、このままだとエラーが生じる。最後の-I/opt/intel/mkl/includeを-I/opt/intel/oneapi/mkl/latest/includeに直す(ここも最近だと-I/home/user-name/intel/oneapi/mkl/latest/includeにする)。明らかにoneAPIのMKLに最近変わったために生じる問題である。また、DFLAGSで-D__DFTI -D__MPI -D__SCALAPACKとなっていれば、FFT, ScalapackでMKLを使うことになっているようである。これらになってない場合はLD_LIBRARY_PATHの設定が正しいかチェックする。あとは以下を実行するとQEがコンパイルされる。

> make all

これで必要な実行ファイルができる。実行ファイルのエイリアスがbinディレクトリに入っていて、本体はそれぞれのsrcディレクトリ内にある。途中で問題があって再make allする時はmake cleanを実行しておく。
 さらにQEのbinディレクトリー(/home/user-name/qe-7.2/binも.bashrcのPATHに追加しておきます。いちいちpw.x, ph.xをパス付きで書く必要がなくなります。

libxcのインストール

 普段使っている擬ポテンシャルでは全然必要ないですが、私の場合はSCAN(meta-GGAの一種)を使おうとした時にlibxcを使うようにエラーメッセージが出ました。なのでlibxcを入れます。libxcはこちらからダウンロードできます。解凍して、./configure, make, sudo make installで問題なくインストールできました。デフォルトでは/opt/etsfにインストールされます。
 次にQuantum Espressoのconfigure時に、以下のオプションを追加します。やり方はQuantum Espressoのここに書かれています。make.incを直接編集する方法ではエラーが出てしまったので、configureからやることに。私の場合は以下のようにしました。

./configure --with-libxc --with-libxc-prefix='/opt/etsf/'

ただこのままでmake allするとまだエラーが出ます。上で書いたのと同様にmake.incをエディタで開いて、私の場合は、TOPDIRのコメントアウトを外して、IFLAGSのmklのパスを正しくして、libxcも/opt/etsf//includeとなっていたので、/を1つ削除しました。これでmake allしたらエラーなく終了。これでSCANを使っても計算できるようになりました。
 なお、これでmake allした時にgipaw.xがbinから消去されてしまいました。昔gipawもmake allでコンパイルしていた時の名残でしょうか?全然関係ないBaderは消去されてませんでした。

AMD CPU PCへのインストール

 AMD CPUの場合も同様にしてインストールできる。ユーザーガイドによると、QEのconfigureする前に次の2つを設定しておくとよいらしい。前者でAMD CPUでの実行速度が少し速くなるそうだ。試すと数%速くはなるが、前ほどは(QE6.5でやった時は20%くらい)速くはならなかった。後者はFFTWにおける問題回避のため。

> export MKL_DEBUG_CPU_TYPE=5
> export MKL_CBWR=AUTO

qe-gipawのインストール

 NMR,ESR関係の計算を行うプログラムで、昔はQE本体と一緒だったが、現在はhttps://github.com/dceresoli/qe-gipawで配布している。QE本体のmake allが成功していることが前提条件。基本、QEと同じバージョンを使う。このサイトの記載通りgitを使ってやってもいいし、https://github.com/dceresoli/qe-gipaw/releasesの方からファイルを落としてもよい。本体が7.0なので、gipawも7.0のtar.gzをダウンロードした。それを解凍して、qe-7.0に移動。Terminalでqe-gipaw-7.0へ移動。そこで以下を実行。./configureではQE本体のディレクトリを指定する必要がある。私の場合は1つ上のディレクトリなので..と指定している。

> ./configure --with-qe-source=..
> make

でgipawがコンパイルできた。srcにgipaw.x実行ファイルがあるので、QEのbinフォルダーへコピーするか、linkを作る。なお、binにあるのはリンクで、実行ファイル本体はsrcにある。
 最近気づいたのですが、externalの中にqe-gipawのディレクトリが予め用意されているので(中身は空)、そこに置けばいいようです(置いておいてもmake allでコンパイルはされませんが、Makefileをいじれば可能でしょう)。その場合は、configureは以下のようになります。

> ./configure --with-qe-source=../..

VESTAのインストール

 QEと直接関係ないが、QEの入力ファイルの構造部分作成のためと最適化された構造等をみるためにVESTAを使っているので、VESTAもインストールする。VESTA-3.5.7-1.x86_64.rpmをダウンロードした。これはrpmなので、右クリックで出てきた""Open With Software Install"を使ってインストールできる。この場合はアプリケーション一覧にもVESTAが出てくる。今回これで問題なく動いた。
 別のPCではrpmでインストールうまくできず、その時はVESTA-gtk3.tar.bz2をダウンロードした。解凍してTerminalから実行すると、libGLU.so.1がないとエラーが出る。この場合は、https://rpmfind.net/linux/rpm2html/でlibGLUを探して、Fedora36, x86_64用を見つけて、それをインストールすれば解決する。同じくVESTA-gtk3で別のエラーで起動できなかったケースもあった。この場合は、LibVESTA.soが見つからないエラーだった。LibVESTA.so自体はVESTA-gtk3に入っているのだが、パスが切ってないので見つけられないためらしい。この場合はLD_LIBRARY_PATHにVESTA-gtk3を.bashrcに追加したら解決した。

USBメモリによるwifiへの干渉

 うちのPCの場合、KIOXIAのUSBメモリーを差した時にwifiアダプタ(これもUSB使用)と干渉して、wifiが使えなくなりました。mpirunする時に問題になります。

i9-13900Kのパーフォーマンス

 i9-13900Kは13世代のインテルのCPUで、パーフォーマンスコア(P core)が8個で、エフィシェンシーコア(E core)が16個搭載されているが、2種のコアがある場合の並列計算の速度がどうなるかが気になった。最近入手したので簡易に比べてみた。qe-7.0のpw.xで結晶構造を最適化させた。並列で8, 16, 24コアを使う3種の計算を行った。

8coreを使った計算103分
16coreを使った計算162分
24coreを使った計算126分

 8coreを使った計算が一番速くなった。これは8coreを指定すると速度の速いP core8個が優先的に使われるが、8より多い並列計算だと遅いE coreも使われるためにそれに引きづられて遅くなったと考えられる。今使っているPCだと11世代i7-11700と比較したら、i9-13900Kの方が50%くらい速かった(同じ8core並列で比較)。さらにAMDのRyzen Threadripper 1950 X (16core)と比較したら(この場合Threadripperは16core並列で)、i9-13900Kの方が約2倍速かった。しかし、Intelが今後もこの手のCPUを続けて、AMDの64 coreの価格が高いままなら、GPUを使う方向に行くしかないのかも。しかしQuantum Espressoで使えるGPUは特殊なものに限られているようである。
 そう考えると、最新の14700(i7)や14900(i9)もP coreは8個のままなので、速度増加はほとんど期待できない。もっと安いi7 13700 (これもP core8個)がIntel i7&i9で現状もっともQEのコスパがいいかも。本体15万弱で買える。iXは入手できなくなっているし。