Quantum-Espresso 7.0のLinux Fedora36へのインストール(2022/06/25)
- Quantum-Espresso(QE)は、かなりポピュラーな擬ポテンシャルと平面波を使う第一原理電子状態計算プログラムである。QE7.0をCore i7 PC (OS=Fedora36) にインストールした際のメモ。gccをソースからインストールする。1つのPC内で複数のコアを並列で計算させたいのでopenmpiを使う。以下の手順はAMD CPUでもほぼ同じだが、少し追加で設定するところがある(最後)。
Fedora36のインストール
Fedoraのバージョンアップは続けているとそのうちどこかおかしくなったりするので、今回はクリーンインストールした。以前はイメージをDVD-ROMに書き込んでいたが、最近は容量的に無理なのでUSBメモリへ書き込んで、USBメモリからブートしてインストールしている。最新は36だった。ダウンロードにMacやWindowsを使う場合でもイメージをUSBメモリに書き込むソフトがFedoraのWebページからダウンロードできる。インストールはハードディスクのパーティション以外は特に問題ないと思う。パーティション部分は以前ハードディスクを使っていたかどうかで色々と変わる。要望に応じて適切な選択をする必要がある。インストールしたら、リブートして、そしてupdateをしておく。
gcc等のインストール
gccはhttps://gcc.gnu.org/からソースがダウンロードできる。今回は12.1が最新だった。ミラーサイトからダウンロードする。筑波大のミラーサイトからtar.gzをダウンロードした。ダウンロード終わったら、自分のDownloadsディレクトリにgcc-12.1.0.tar.xzがあるので、右クリックでExtract Hereをクリック。Terminalを起動。Downloadsディレクトリへ移動する(cd)。なおTerminalはアプリケーションの中にある。今後よく使うのでTerminalアイコンを右クリックでPin to Dashをクリックしてダッシュボードに追加しておく。
いくつか足りないものがあるので、以下をTerminalから実行。
./contrib/download_prerequisites
必要なものを自動でインストールしてくれる。しかし./configureを実行するとまだエラーが出る。c++がインストールされていないためのようだ。以下を実行。
> sudo dnf install gcc-c++
以前はmakeがないとのエラーも出たが、最近は出ない。これで./configureを実行すると、64bit用なら--disable-multilibのオプションを付けるように言われる。そこでこのオプションをつけて実行する。
> ./configure --disable-multilib
今度はエラーが出ないはず。これで以下を実行する。makeは2時間くらいかかるのでしばらく放っておく。
> 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を実行することでインストールした。途中からGUIに変わる。Fedora36で動くかどうか分からないみたいなメッセージが出るが無視して進む。画面に従って進めばインストールができる。やはりライブラリのパスが必要になるので、LD_LIBRARY_PATHに/opt/intel/oneapi/mkl/latetst/lib/intel64を追加。Terminalを再起動する。
**Quantum Espressoのインストール
Quantum Espressoのウェブサイトはhttps://www.quantum-espresso.org/で、以前と違ってダウンロードには登録が必要となっている。最新版はちょうど1週間前くらいに7.1がリリースされている。しかし、7.1はコンパイル時に問題があって(使っていないgpu関係のfortranソース部分でエラーが出る)、色々試したがまだ解決できてない。なので7.0をインストールした。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に直す。明らかにoneAPIのMKLに変わったために生じる問題である。また、DFLAGSで-D__DFTI -D__MPI -D__SCALAPACKとなっていれば、FFT, ScalapackでMKLを使うことになっているようである。これらになってない場合はLD_LIBRARY_PATHの設定が正しいかチェックする。あとは以下を実行するとQEがコンパイルされる。
> make all
これで必要な実行ファイルができる。実行ファイルのエイリアスがbinディレクトリに入っていて、本体はそれぞれのsrcディレクトリ内にある。途中で問題があって再コンパイルする時はmake cleanを実行しておく。
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が成功していることが前提条件。このサイトの記載通り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を作る。
VESTAのインストール
QEと直接関係ないが、QEの入力ファイルの構造部分作成のためと最適化された構造等をみるためにVESTAを使っているので、VESTAもインストールする。VESTA-3.5.7-1.x86_64.rpmをダウンロードした。これはrpmなので、右クリックで出てきたインストローラーを使ってインストールできる。この場合はアプリケーション一覧にも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に追加したら解決した。