材料シミュレーションに役立つ優れたオープンソースソフトウェアが多数公開されています。これらソフトウェアの多くは、ソースコードのみが配布されていて、利用するには事前のコンパイルが必要です。特にMPI並列を利用するソフトウェアは、その実行形式ファイルがMPI実行環境に依存するため、実行形式ファイルでの配布が難しいことが、この背景にあります。そこでコンパイル(プログラム開発)環境を整えようとするのですが、科学技術計算では現在でもFortranが用いられることが多く、そのコンパイラとMPI開発環境を用意することは、不慣れな方には難しいかもしれません。
そこで、できるだけ簡単に、再配布可能なソフトウェアのみを用いて、FortranコンパイラとMPI開発環境を含む、プログラム開発環境を整える方法をご紹介します。この目的を達成するためには、WindowsではなくLinuxを利用した方が圧倒的に容易です。各ソフトウェアは、執筆時点の最新版です。
過去の情報はこちら:2016年3月
Linuxをインストールするためのパソコンを新たに一台用意できればそれに越したことはありませんが、それができなくても仮想化技術を用いればWindows上(Macでも良い)で動作する仮想的な計算機(仮想マシン)を実現できます。この仮想マシンには、Windows(ホストOSと呼ばれます)とは別のOS(ゲストOS)をインストールして利用します。仮想化のためのソフトウェアは複数ありますが、ここではVirtualBoxを使います。ダウンロードして、インストールして下さい。以下ではWindows 64bit版の5.2.0を使って説明します。
インストールできたら、早速起動しましょう。メニューから「新規」を選んで、仮想マシンを新規作成します。「名前」に仮想マシンの名前を入れますが、ここでは「CentOS」として下さい。「タイプ」と「バージョン」が自動設定されます。64 bit OSが選択できない場合は、BIOSで仮想化機能が無効になっていませんか。有効にしてから再実行して下さい。「次へ」を押して先に進むと、いくつかの設定項目があります。メモリは多めに割り当てたいので、搭載されているメモリ量の半分程度を指定します(後から簡単に変更できるので適当に決めて下さい)。その他、大量のデータを扱えるようにハードディスク量を増やす以外は、デフォルトの設定で良いでしょう。ディスクは、指定した量が直ちに利用されるのではなく、必要な分だけが利用されます。上限を指定すると考えて、多めに設定することをお勧めします。
作成した仮想マシンを選択して「設定」を押すと、多数の設定項目が現れます。まず、「システム」-「プロセッサー」から、CPU数を設定します。せっかくMPIをインストールするのですから、複数のCPUを仮想マシンに割り当てましょう。後から変更できるのでとりあえず「2」とします。なお、材料シミュレーションでは一般にHyper Threadingの効果は限定的ですので、物理コア数以下にすることをお勧めします。
同じく設定画面から「ネットワーク」を選択します。アダプター1が有効化されていて、割り当てがNATであることを確認して下さい。そして「高度」の三角形をクリックすると詳細な設定が現れます。「ケーブル接続」がチェックされていることも併せて確認してください。
さらに、ホストOSからゲストOSにssh接続するために、ポート転送(フォワーディング)を利用します。「ポートフォワーディング」ボタンを押して現れるウィンドウで右図のように設定し、ルールを追加します。ホストOSの2222番ポートへの接続が、ゲストOSの22番ポートに転送されます。
次に、仮想マシンにゲストOSとして、Linuxをインストールします。
Linuxには様々なディストリビューションが存在します。その多くは互いに良く似ているのですが微妙な差異があり、不慣れな方を混乱させます。ここでは、CentOSを利用します。Red Hat Enterprise Linux互換を目指しているディストリビューションであり、High Performance Computing (HPC)向けクラウドにも採用されています。DVDイメージ(ISOファイル)をダウンロードしてください。ここでは「CentOS-7-x86_64-DVD-1708.iso」を用います。
仮想マシンの光学ドライブは「空」になっているのでクリックして「ディスクイメージを選択」から、このISOファイルを指定します。仮想マシンを「起動」すると、CentOSのインストーラーが起動します。表示される指示に沿って操作してください。
インストール途中「ソフトウェアの選択」には注意して下さい。デフォルトは「最小限のインストール」になっていますがこれはお勧めしません。GUIがあった方が便利です。GUIを含む選択肢(ベース環境)は複数ありますが「GNOME Desktop」を選びました。その上で「選択した環境のアドオン」から「開発ツール」を追加してください。またこの段階で、ネットワークを有効にしておくと良いでしょう。
インストールが終了し、仮想マシンを再起動してからライセンスに同意するとLinuxが利用できます。ネットワークが無効になっている場合は、画面右上部分を操作して、インターフェースを「接続」して下さい。
ホストOSのSSHクライアントソフトウェアでlocalhostの2222番ポートにssh接続すると、ゲストOSにログインできます。さらに、ホストOSがインターネットに接続されていればゲストOSからインターネットにつながりますが、同時にホストOS外からゲストOSに接続可能な状態です。パスワード管理など、セキュリティに配慮してご利用ください。
材料シミュレーションの実行は長時間に及ぶことが多く、ソフトウェアの多くは計算時間短縮のためにMPIを利用した並列計算に対応しています。そのようなソフトウェアをコンパイルするためには、MPI開発環境が必要であり、ここではOpen MPIを利用します。ファイルをダウンロードして展開します。
$ tar jxf openmpi-3.0.0.tar.bz2
$ cd openmpi-3.0.0
オープンソースソフトウェアをインストールする標準的な手順です。
$ ./configure
$ make
$ su
Password: 【rootパスワード】
# make install
/usr/local/以下にインストールされますので、追加の設定なく利用できます。
$ which mpirun
/usr/loca/bin/mpirun
$
材料シミュレーションでは、Fourier変換が頻繁に利用されます。これを高速に実行するアルゴリズムはFFTとして知られており、高速実行のためのライブラリが開発されています。ここではFFTWを利用します。ファイルをダウンロードして展開します。
$ tar zxf fftw-3.3.6-pl2.tar.gz
$ cd fftw-3.3.6-pl2
インストール手順はOpenMPIと同じです。
$ ./configure
$ make
$ su
Password: 【rootパスワード】
# make install
/usr/local/以下にインストールされます。
$ ls /usr/local/include/fftw3.h
/usr/local/include/fftw3.h
$
以上でプログラム開発環境が整いました。
こちらでは利用例としてPHASEシステム研究会から配布されているPHASE/0のコンパイルとテスト並列計算をご紹介します。
ここまでの手続きでオープンソースのコンパイラ(GNUコンパイラ;Fortran, C, C++)が利用可能になりましたが、これらで作成した実行形式ファイルの実行性能は高くありません。以下では引き続き、より良い実行性能を得るための、無料で入手できる高性能プログラム開発環境を二つご紹介します。
一つ目はOracle Developer Studioです。「Download」から、Oracle Linux / Red Hat Linux用RPM installerを入手してください。CentOSで動作するとは謳われていませんが、おそらく大丈夫です。
インストーラーを起動するに当たって、OracleのJava実行環境が必要です。こちらの説明に沿ってインストールして下さい。
Oracle Developer Studioのインストールは、ダウンロードファイルを展開して、インストーラーを起動します。
$ tar jvf OracleDeveloperStudo12.6-linux-x86-rpm.tar.bz2
$ cd OracleDeveloperStudo12.6-linux-x86-rpm/
$ su
Password: 【rootパスワード】
# ./developerstudio.sh
特に指定しなければ、コンパイラは/opt/oracle/developerstudio12.6/binにインストールされます。ログイン時に同ディレクトリが環境変数PATHに自動的に追加されるよう、.bashrcに次の一行を追加します。
export PATH=/opt/oracle/debeloperstudio12.6/bin:$PATH
二つ目はPGI Community Editionです。日本語の詳しい説明がありますので、よく読んでインストールして下さい。MPI開発環境も含めてインストールできます。
PGIコンパイラはNVIDIA HPC SDKに生まれ変わりました。
PHASE/0製品版のご利用にあたりご不明な点や、解析、カスタマイズのご依頼・ご相談などにつきましてはお問い合せください。