Ubuntu上でORCAを使って量子化学計算を始める

こんな(高性能な)マシン買って何をするのかだって?こんなマシンでさえもQCではオモチャに過ぎないのサ

色々と便利な量子化学計算のソフトが世に出回っている今日この頃ですが、最近人気?のUbuntu上で量子化学計算ソフトの1つであるORCAをどれぐらい簡単に(並列で)走らせることができるか確かめてみようという目的で始まったこの企画、はてさて結果はいかに?

Ubuntu Desktop 9.10 (karmic) 64bitをインストールする場合

# ORCAはバイナリとして提供されており、OpenMPI等を使った並列計算は
# Linuxのみで提供されている。のでUbuntuをインストールしようってわけ。
# Ubuntu好きなもんで。
# そうそう、始める前にWindowsのRestore DVDを忘れずに作っておこう!

今回は、WindowsマシンでUbuntuとのデュアルブート環境を構築したかったので、こことかを参考にしました: https://wiki.ubuntulinux.jp/UbuntuTips/Install/InstallDualBoot

今回インストールするUbuntuはDesktop 9.10 (karmic) 64bit。インストール自体は簡単だったけど、Windowsも残しておきたいので、 1つだけ注意しなければならない点が。それは、HDDのパーティションをどう分けるかということです。インストール時に訊かれるインストール先の領域の設 定画面で、「手動で設定する」を選び、Ubuntu用のパーティションとスワップ用のパーティションを確保します。今回は以下のように設定しました。

 /dev/sda
 - /dev/sda1 (System, 105MB)
 - /dev/sda2 (HP, 451GB)
 - /dev/sda5 (/, 500GB)
 - /dev/sda6 (swap, 8GB)
 - /dev/sda4 (Factory_image, 12GB)

"/"と"swap"がUbuntuのための領域とスワップ領域になります。最終設定画面で、右下の拡張(だったかな?)で、UbuntuのブートローダGRUBを上書きするのを忘れずに。

以上でとりあえずUbuntuのデスクトップ画面が拝めるのですが、量子化学計算以前の問題が幾つかありました...。それは画面の解像度で、利用できるモニタの解像度がなんとXGAしかないという...。色々ネットを調べてみると、まだ一般的な解法が無い様子(初心者がつまずくUbuntu: 10の問題点)。

例えば: https://forums.ubuntulinux.jp/viewtopic.php?id=2221

幸い、NVIDIAの場合はEnvyNGというソフトをインストールすることにより、無事適切に設定することができます。EnvyNGは、 Synapticパッケージマネージャから簡単にインストールすることができます(envyng-qt)。インストールできたらEnvyNGを起動して適 切なドライバをインストールさせて、再起動、システム>システム管理>NVIDIA X Server Settingから設定することができます。

# もし、コンピュータがファイヤーウォール内にあるのであれば、
# 少なくともHTTPプロキシをUbuntuが利用するよう設定する必要がある。
# それは、システム>システム管理>ネットワークのプロキシで。
# あと言語(日本語)も追加する必要がある(だったかな?)
# もしそうなら、システム>システム管理>言語サポートで。

Ubuntu Desktop 20.04.6をインストールする場合

Ubuntu 20では、上記のUbuntu 9.10の様な問題は全て解消されています。もちろん、Windowsマシンでデュアルブート環境を構築したい場合は、上記の記事を参考にしてください。

ORCA 2.7.0(pre 2.8.0)の場合(下準備)

# Ubuntu 10.04 LTS (Lucid)からOpenMPI 1.4.1が利用できるようになったようです!(May22,10追記)

実は、Ubuntu 9.10で標準のSynapticでインストールできるOpenMPIは1.3.2であるという罠が存在します。1.3.2は最新の1.4.1と比較して プロセス間の通信が不安定になるという問題が報告されています。ORCA 2.8.0(pre)では、1.3.2でもとりあえず使用できますが、やはり意図せず終了するといったことがありました(確認済み)。なのでやはり入れま しょう。ちょっと面倒ですが。

まずOpenMPI公式ページでOpenMPI 1.4.1のソースコードを入手します: http://www.open-mpi.org/software/ompi/v1.4/

そして、適当な場所に展開します(ここでは/home/your-name/openmpi-1.4.1):

$ tar xvzf openmpi-1.4.1.tar.gz

で、

$ ./configure

すればOpenMPIライブラリのビルドの準備が整うわけですが、もしあなたのシステムで、

which c++
which g++

とした時に適切なパスが返ってこなければSynapticパッケージマネージャで、

g++
g++-4.4

をシステムにインストールしてから、./configureしてください。もし問題を特定するために、例えば:

$ ./configure > c.out 2>&1

とするとよいでしょう。問題なければ、

$ sudo make all install

します(sudoは忘れないように)。この後、/etc/ld.so.confにOpenMPIライブラリへのパスを以下のように追加します:

/usr/local/lib
/usr/local/lib/openmpi

そして忘れずに、ldconfigを実行してシステムに反映させましょう。これでOpenMPI 1.4.1のインストール完了です。

ORCA 2.7.0(pre 2.8.0)の場合(動かしてみよう!)

やっとここまできました。あとは簡単です。まずORCA公式サイトからAMD用のバイナリ(orca_amd64_exe_2.7.0.tbz)を入手して、お好みの場所に展開(tar xvjf)してください(ここでは/home/your-name/orca1730): http://www.thch.uni-bonn.de/tc/orca/

その後、~/.bashrcに

PATH="$PATH":/home/your-name/orca1730

を追加しておきます。これですべての準備が整いました!いよいよORCAの実行です。適当な入力ファイルを作成し(ここではtest.orca)、ターミナル上で以下のように実行させます:

$ /home/your-name/orca1730/orca test.orca > test.orca.out&

どうでしょうか?あとは、目的の系を計算するだけです。

# ってそれが難しいんです orz
# それは、以下のようなORCAの出力メッセージでも存分に味わえる 。

the calculation is a CASSCF calculation -I'm leaving here GOOD LUCK!!!

ではここいらで: I'm also leaving here GOOD LUCK!!!

ORCA 5.0.4の場合(下準備)

まずOpenMPI公式ページでOpenMPI 4.1.1のソースコードを入手します(バージョンはORCAで使用しているOpenMPIのものと合わせること): https://www.open-mpi.org/software/ompi/v4.1/

そして、適当な場所に展開します(ここでは/home/your-name/):

$ tar xvzf openmpi-4.1.1.tar.gz

で、

$ ./configure

すればOpenMPIライブラリのビルドの準備が整うわけですが、もしあなたのシステムで、

which c++
which g++

とした時に適切なパスが返ってこなければ、

$ sudo apt install build-essentials

として、OpenMPIのビルドに必要なソフトウェアを先にシステムに導入してから、./configureしてください。ただし、ORCAで使用する関係上、以下のようにオプションを付けて実行してください。一つ目のオプションは、OpenMPIをローカル環境にインストールするために必要で、2つ目はORCAとの兼ね合いで必要です(無いとORCAが時々計算途中でhang upすることが報告されている)。

$ ./configure --prefix=/home/your-name/openmpi-4.1.1 --disable-builtin-atomics

とするとよいでしょう。問題なければ、

$ make all install

します。

ORCA 5.0.4の場合(動かしてみよう!)

やっとここまできました。あとは簡単です。まずORCA公式サイトからLinux用のバイナリ(共有ライブラリ使用バージョン:orca_5_0_4_linux_x86-64_shared_openmpi411.tar.xz)を入手して、お好みの場所に展開(tar xvJf)してください(ここでは/home/your-name/): ORCA公式フォーラム

その後、~/.bashrcに

PATH=~/orca_5_0_4_linux_x86-64_shared_openmpi411/pal:~/orca_5_0_4_linux_x86-64_shared_openmpi411:"$PATH"

を追加しておきます。これですべての準備が整いました!いよいよORCAの実行です。上記のORCA 2.7.0の例では、/etc/ld.so.confにOpenMPIライブラリへのパスを通しましたが、sudoを実行する権限がない場合はこのようなことはできません。代わりにローカル環境でORCAを実行させるためには、以下の様なシェルスクリプトを使用してください。

#!/bin/bash

OPENMPI="openmpi-4.1.1"
ORCA="orca_5_0_4_linux_x86-64_shared_openmpi411"

PATH=/home/${USER}/${OPENMPI}/bin:/home/${USER}/${ORCA}:"$PATH"

LD_LIBRARY_PATH=/home/${USER}/${OPENMPI}/lib/openmpi:/home/${USER}/${OPENMPI}/lib:/home/${USER}/${ORCA}:/usr/local/lib; export LD_LIBRARY_PATH

LD_RUN_PATH=/home/${USER}/${OPENMPI}/lib/openmpi:/home/${USER}/${OPENMPI}/lib:/home/${USER}/${ORCA}:/usr/local/lib; export LD_RUN_PATH

echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH; /home/${USER}/${ORCA}/orca $1 > $1.out 2> $1.error" | batch

このスクリプトにchmodで実行権限を与えて、ORCAのディレクトリに配置し、ターミナル上で以下のように実行させれば、ORCAによる計算を走らせることができます(ここでは、test.orcaが適当なORCA用の入力ファイルです)。In-Core並列計算も(入力ファイルで%pal nprocsキーワードを設定することにより)既にできるようになっています。このスクリプトでは、batchコマンドでキュー管理させていますので、実況状況を把握したい場合にはatqなどのコマンドを使用してください。

$ run-orca test.orca

gOpenMolも入れて計算結果を可視化する

# Ubuntu 10.10ではデフォルトではlib32がインストールされないので自前でia32-libsを入れること。さもないと、bin/tclshがない、と か、gopenmol: no such file or directoryとかで停まってしまう。(これはAMD系の話?なのでIntel系はどうするのだ?)(Oct. 26,10追記)

# gOpenMolは、32bit版のlibxmuにも依存しているので、パッケージ管理コマンド aptでinstallする時に、"sudo apt install libxmu:i386"としてインストールする必要がある。

# 以前からgOpenMolの公式サイトで「もう利用できなくなるかも...」というメッセージが残されていたが、遂にできなくなったようだ。しかし、Internet Archivesの記録よりまだ入手可能です!(May. 3, 23追記)

ORCAの計算結果を手っ取り早く可視化するには、ORCAのマニュアルでも説明があるように、gOpenMol 3.00 (Date: 23.09.2005)を使用するのがよい。公式サイトからLinux用のgopenmol-3.00-linux.tar.gzを入手し、公式サイトの"Installation of gOpenMol"の通りに従って展開し、./installする。その後、binディレクトリの"rungOpenMol"スクリプトを実行すればよい。

$ ./rungOpenMol

# えー./install後はgOpenMol関連のディレクトリの名前を変えないように。

Wineを導入してWinmostarを使う

Synapticパッケージマネージャ経由

まず、Synapticパッケージマネージャで"wine1.2"を導入します。そうするとアプリケーションメニューに"Wine"という項目が表示され、例えばNotepadなんかが起動できるようになりますが、日本語フォントが正常に表示されません。そこでUbuntu 9.04 に Wine をインストールの方法に従い:

$ ln -s /usr/share/fonts/truetype/sazanami/sazanami-mincho.ttf ~/.wine/drive_c/windows/Fonts/

とすると、正常に表示されるようになります。ゴシックをお好みの場合は、Synapticパッケージマネージャで"ttf-sazanami-gothic"を導入して同様にするとよいでしょう。

で、Winmostar公式ページからバイナリインストールファイルを入手しまして、そうですね、デスクトップからダブルクリック(!)で実行。何も問題なければ、すんなりとWinmostarが起動します!(当方Winmostar 3.80fで確認しました)

# これにはびっくりしました。隔世の感が...。インストール後にWinmostar.lnkがデスクトップに置かれるのには笑ってしまった。 winmostar

PlayOnLinux経由

  1. PlayOnLinuxの"Tools > Manage Wine Versions”より、64bit (マシンのbit数)のWineを導入する。
  2. Winetricksで日本語フォントの(cjkfont)インストールをすると日本語表示が正常になる。

小技

スワップ領域は、ORCAの総メモリ使用量が実メモリを超えるような時に使用されますが、場合によってはスワップ領域は一切つかって欲しくない計算もあるかと。そんなときには:

$ sudo swapoff -a

でスワップ領域を一時的に無効にすることができます。復活させるには:

$ sudo swapon -a

で。再起動しても無効にしておきたい場合、/etc/fstabを編集する必要があります。

/dev/hda3     swap            swap    defaults        0 0

というような項目がfstab内にあるのでこれを削除すればOK(もしくはコメントアウトか)。これの意味については、/etc/fstabに記述されている数字の意味@ITが参考になります。

さて、Ubuntuにも慣れてくると、GUI環境ではなくCUI環境でORCAを走らせたいと思うようになるかもしれません(できるだけメモリとCPUをORCAのために使いたいとかね)。その場合、ログイン方法の変更はできませんか。@Ubuntu日本語フォーラムが参考になります。具体的には(Ubuntu 9.10以降):

  1. /etc/inittabで"id:3:initdefault:"などと書いて、デフォルトランレベルを3に設定
  2. /etc/init/gdm.confのstop on runlevel行を"stop on runlevel [0136]"に設定
  3. Ctrl + Alt + F1でtty1に切り替え

もしくは:

  1. /etc/rc.local内のexit 0の手前に/etc/init.d/gdm stopを挿入

と書きましたが、今ではGRUBのブートオプションに"text"を追加するのが好ましいとされているようで。/etc/default/grub内で、GRUB_CMDLINE_LINUX_DEFALUT="quiet splash text"とする様子。10.04LTSにてservice gdm stopでフリーズしてしまう@Ubuntu日本語フォーラムが参考になるかと。