QE7.2/7.3_to_Fedora39 の履歴(No.4)


Quantum-Espresso 7.2/7.3のLinux Fedora39へのインストール(2024/1/12)


Fedora39のインストール

 USBメモリへ書き込んで、USBメモリからブートしてインストールした。ダウンロードにMacやWindowsを使う場合でもisoイメージをUSBメモリに書き込むソフトがFedoraのWebページからダウンロードできる。インストールはハードディスクのパーティションを適切に行う以外は特に問題ないと思う。パーティション部分は以前ハードディスクを使っていたかどうかで色々と変わる。要望に応じて適切な選択をする必要がある。インストールしたら、リブートして、そしてupdateをしておく。

gcc等のインストール

 gccはhttps://gcc.gnu.org/からソースがダウンロードできる。ミラーサイトからダウンロードする。筑波大のミラーサイトからtar.gzをダウンロードした。ダウンロード終わったら、自分のDownloadsディレクトリにgcc-*.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/ からダウンロードする。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画面に変わる。Fedora39で動くかどうか分からないみたいなメッセージが出るが無視して進む。画面に従って進めばインストールができる。やはりライブラリのパスが必要になるので、LD_LIBRARY_PATHに/opt/intel/oneapi/mkl/latetst/lib/intel64を追加。なお昨年の時点でインストールした時は自分のホームディレクトリにインストールされた。もしその場合は代わりにそのパス(/home/username/intel/oneapi/mkl/latest/lib/intel64)をLD_LIBRARY_PATHに追加する。

Quantum Espressoのインストール

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

これで必要な実行ファイルができるはずであるが、現状7.2と7.3では"device_fbuff_m.mod"が見つからないエラーが出る。device_fbuff_m.modはQEディレクトリの中にあるexternal/devxlib/src中に本来make中に出来ているはずのファイルですが、どうも出来る前に呼ばれたためにエラーが出ているようだ。フォーラムを探したが、うまい解決法は見つからなかった。そこで色々と試して、少なくとも私の環境では以下の方法で対処できるようになった(QE7.3についてはwannier90でエラーが出る問題があって、これはまだ未解決)。
 make allでエラーが出た後なら、まずはmake cleanをする。external/devxlibに移動して、ここで以下を実行する。

% ./configure
% make all

 そうするとエラーの元となったdevice_fbuff_m.modなどがsrc内に出来る。この後でmake cleanすると折角作ったmodなどが消去されるので、このタイミングではmake cleanはしない。QEの親ディレクトリに戻って、本来のmake allを実行する。今回はdevice_fbuff_m.modが既にあるので、エラーは出ずにmake allが無事終了した。ただし現状7.3ではmake allの最後の方でwannier90のところでエラーがでます。これはgitからダウンロードしようとするみたいだが、Fedoraがそれを許さないので、エラーになるようだ。この点はまだ未解決。7.2ではこのエラーは生じない。しかし、ほとんどの実行ファイル(pw.x, ph.xなど)は既に出来ていて、それらは問題なく使える。
 さらにQEのbinディレクトリー(/home/user-name/qe-7.3/binも.bashrcのPATHに追加しておく。いちいちpw.x, ph.xをパス付きで書く必要がなくなる。
 いくつか7.2と7.3で同じ計算をして比べてみた(pw, ph)。もちろん計算結果は変わらないが、実行時間は7.3の方が速くなっていた。7.2は7.0よりもちょっと遅くなっていたので、改善されたのかも。特にphは2倍近く速くなっている。

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つ削除した(これは上の./configureのetsf/の最後のスラッシュが不要なのに付けたため)。これでmake allしたらエラーなく終了。これでSCANを使っても計算できるようになった。なお、"device_fbuff_m.mod"のエラーが出る時は上記の対応をする。
 なお、これでmake allした時にgipaw.xがbinから消去されたので、またコピーした。昔gipawもmake allでコンパイルしていた時の名残か?

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.2なら、gipawも7.2のtar.gzをダウンロードする。それを解凍して、中身をqeのexternal/qe-gipawに入れる。Terminalでexternal/qe-gipawへ移動。そこで以下を実行。./configureではQE本体のディレクトリを指定する必要がある。今の場合、2つ上のディレクトリなので../..と指定している。

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

でgipawがコンパイルできた。srcにgipaw.x実行ファイルがあるので、QEのbinフォルダーへコピーするか、linkを作る。なお、binにあるのはリンクで、実行ファイル本体はsrcにある。

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に追加したら解決した。

Anacondaのmpirun

 anacondaをインストールした後で、mpirunを実行するとsingle coreしか動かない現象があった。which mpirunとすると、anacondaのmpirunのパスが示されたので、mpirunのパスがanacondaのインストールで変わってしまったようだった。パスを直すと解決した。