フォートランコンパイラのインストール


コンパイラとは

まず、私のプログラムに関する知識を暴露しておこう。中学生時代(20年ほど前)にBASICでプログラム作りをやったきりで、実験における計測機器の制御にLabVIEWというプログラム(?)言語を少し習得したのみである。フォートランやCといった言語は存在をしっているだけで、そんな自分にもPCクラスタを用いたシステムが構築できたのであるから、頑張れば誰でも開発はできなくても、プログラムを使えるようにはなるのす。

コンパイラとは、フォートランCなどで書かれたプログラムをコンピュータに判る言語(機械語)に翻訳するソフトのことです。化学計算のプログラムは、ほとんどがフォートランで書かれており、買ってきたソフト、もしくは、フリーで配布しているソフトは、ソースかバイナリーか2種類存在します。ソースと呼ばれるソフトは、フォートランやCなどの言語で書かれている状態で、コンパイルと呼ばれる翻訳作業をしないとプログラムが実行できません。一方、バイナリーでは、i386 (一般的なインテルCPUの呼び方)とか、その機械特有の機械語に翻訳された状態なので、そのファイルをそのまま実行することができます。利点と欠点をまとめると

ソース・・・コンパイルの作業が必要なため面倒、しかし、プログラムの改造や特殊なシステムに適用可能な機械語をつくることができるメリットがある
バイナリー・・・簡単に計算を始めることができる。しかし融通は利かない。

今回の目標は、PCクラスタでの計算だったので、バイナリーを持ってきて計算することができなかったので、ソースからコンパイルすることから始めました。そこで、問題となってくるのが、どのコンパイラを使うかということです。つまりフォートランの翻訳ソフトに何を使うかという問題です。翻訳ソフト(コンパイラ)の性能により化学計算のスピードが随分変化してきます。また、値段もフリーの翻訳ソフトもあれば、かなり、お高いソフトもあります。
非商用目的でインテルのコンパイラ
これが、今回の選択肢でした。インテルのCPUにはインテルのコンパイラが早いという巷の情報を基にフォートランCコンパイラ、そして、マスカーネルライブラリー(MKL) をインストールしました。これらのソフトはインテルが販売しているソフトなのですが、商用目的でない場合は、サポート無しという条件で無料で使用することができます。



ただ、この「サポート無し」というのが曲者なんです。


基本的に今回インストールしているソフトは基本的にフリーなものをベースにしています(OSはFedora、コンパイラはIntel、次に書きますがMPIはMPICH2)。こういう場合の問題点がサポートが無いというところなのです。Linuxの世界では、基本的にはプログラムに対してお金を払うという感覚よりサポートに対してお金を払うという感覚の方が正しい(多い)と思います。(これからは、そんな世の中になっていく気もしますが)
実際に今回インテルのコンパイラをインストールしたのですが、64ビットバージョン(EM64T)がうまくインストールされずに随分苦労しました。いろいろネットで調べたりもしたのですが、そんな場合、お金を払ってサポートを購入しておれば、サポートセンターが問題の解決に力を貸してくれるのだと思います。今回の場合は、元来、Fedoraはインテルコンパイラーをインストールするにに推奨されるシステムではないので、うまくEM64Tのコンパイラーがインストールされなかったようで、Fedora Core 4のx86_64をまずインストールしておき(kernel-2.6.11)、その状態だとインテルのコンパイラーは問題なくインストールできるので、その後、カーネルのアップグレードやFedore Core 5の新規インストール(/homeや/optディレクトリーを残したままで)などをすることで、Fedora Core 5でインテルコンパイラーが使える環境を作りました。
(追記) この方法では、インテルフォートランコンパイラ(ifort)は使用できたのですが、Cコンパイラ(icc)はglibcのバージョンが違うというエラーでコンパイルが不可能でした。このホームページでは、フォートランとしてはifort、Cはgccを用いたコンパイルを主に行なっています。


インテルフォートランコンパイラにおける設定

コンパイラのドキュメントを読めば書いてあるのですが、~/.bashrcのファイルの一番下に
source /opt/intel/fc/9.0/bin/ifortvars.sh
と追記します。この意味は、コンソール(端末)を開いたときに実行されるシェルスクリプトが.bashrcであり、その中でsouceとは、そのシェルスクリプトを実行するということです。ifortvars.shとはインテルフォートランコンパイラの環境設定用のシェルスクリプトであり、コンソール画面を開くことで、コンパイラの環境設定が自動的に行なわれます。ちなみに環境設定を行なわないと、コマンドでifortと打ち込んでも、コンパイルすることができないし、また、共有ライブラリーも使用することができません。

マスカーネルライブラリーMKLとは

化学計算において、行列式を解くということは、非常に時間のかかるプロセスであり、また、重要な意味を持っています。行列を解くプログラムを別に作っておき(ライブラリー)、一般的な化学計算プログラムは、このライブラリーを呼び出すことで、行列を解くことを行なっています。高速な行列演算のプログラムを用意することで、化学計算のプログラムの実行時間が短縮することが可能となってくるのです。行列を解くライブラリーはBLASやLAPACKと呼ばれ、フリーのプログラムとしては、ATLASが有名みたいです。MKLでは、BLAS以外にもフーリエ変換をするプログラムなど基本的な数学ライブラリーがインストールされます。
インテルMKLもコンパイラと同様に~/.bashrcに
source /opt/intel/mkl/8.0.1/tools/enviornment/mklvarsem64t.sh
と追記して、環境設定を行ないます。



back home next