Intel64アーキテクチャでのインストール Vine5  

2010-03-16 : by どぶお

この記事はIntel64(x86_64)アーキテクチャ上でのIntel Compiler 32/64のインストール方法を解説したものです。
Intel CompilerをIntel64アーキテクチャ上のVineにインストールするには少々手間がかかります。引っかかる点は以下。

  1. libstdc++.so.5の32bitライブラリが標準でビルドされていない
  2. libgccおよびglibcの32bitライブラリのパッケージ名をインストーラが認識しない

インストーラを使わずに直接RPMでインストールすれば(2)の問題はスキップできますが、インストーラを使う場合(2)がなかなかやっかいでした。意外と苦労しましたが無事にインストーラでのインストールに成功しましたのでメモしておきます。

動作確認
VirtualBox 3.0.12上に構築したx86_64環境下、Intel Compiler Ver.11.1.046で確認しました。
CNS 1.21をOpenMPなしでビルドしてベンチマークの動作を確認しました。OpenMP版はVirtualBox上で試したところ、途中でセグメントエラーが出ましたが、実機では試していません。

準備  

必要なパッケージのインストール  

まず、aptで必要なパッケージをインストールしておきます。

32bitライブラリの確認  

Intel Compilerは64bit版でもlibstdc++.so.6、libstdc++.so.5、libgcc、glibcの32bit版を要求しますが、Vine5ではそれらの検索がうまく行かずに「パッケージが見つからない」というエラーが出てしまい、そのままではインストールができません。やっかいなのはlibgccおよびglibcで、それらの問題は少しトリッキーな方法で解決します。

libstdc++.so.5  

32bit版のlibstdc++.so.5はgcc-3.3.6パッケージに含まれているのですが、標準ではビルドされません。%_with_compat32をセットしてパッケージをリビルドして作成しました。なおlibstdc++.so.6の32bit版はlibstdc++34に含まれているようです。

このパッケージをインストールすることで32bit版libstdc++.so.5が導入されます。

# rpm -ivh compat32-libstdc++3-3.3.6-3vl5.i386.rpm

libgcc  

libgccは以下のスクリプトでチェックされるようです。

if ! echo $(file /lib/libgcc_s.*) | grep -i '32-bit' > /dev/null; then
    echo -n
else
    LIB_GCC_MISMATCH=0
fi

ここのスクリプトでは/lib/libgcc_s.*のファイルをチェックしていますが、Vine5ではlibgcc_s-4.1.2-20080708.so.1というファイル名になっているため、検索されません。libgcc_s.so.1というシンボリックリンクがありますが、シンボリックリンクではfileコマンドではリンクを追いかけないので(本来なら-Lオプションが必要)、内容を認識しません。この問題を解決するためには、ちょっと力業ですがlibgccをハードリンクで処理します(コピーだと仮にlibgccファイルが更新されたとき内容が不一致になるので)。別にlibgcc_s.so.1をハードリンクにしてもいいとは思いますが、何となく。

# cd /lib
# ln libgcc_s-4.1.2-20080708.so.1 libgcc_s.so.1-4.1.2-20080708

glibc  

glibcは以下のスクリプトでチェックされるようです。

if IA32_GLIBC=$(rpm -qa | grep -i 'glibc-32bit' 2> /dev/null ); then
    LIB_GLIBC_MISMATCH=0
fi

そのため、glibc-32bitという名前のパッケージが必要なのですが、Vine5ではcompat32-glibcなので認識されません。従ってこの問題を解決するためにダミーパッケージであるglibc-32bitをインストールします。RPMデータベースにglibc-32bitというエントリを追加するだけの単純なパッケージです。依存関係としてcompat32-glibcパッケージを要求します(おそらく通常はすでにインストールされているはずです)。

# rpm -ivh glibc-32bit-2.8-0vl5.noarch.rpm

インストール  

以上の対策を行えばインストール可能です。実際のインストール手順は以下の通りです。

# cd l_cproc_p_11.1.XXX
# ./install.sh

インストーラ起動後は32bit版と同様の手順でインストール可能です。途中(ステップ4)で、以下のようなメッセージが出ますがスキップしても問題ありません。

オプションの必要条件の不足
-- No compatible Java* Runtime Environment (JRE) found  <-- JDK/JREをインストールしていないとき
-- オペレーティング・システムの種類を認識できません
-- システムの glibc/カーネルのバージョンがサポートされていないか、検出できません

以上でインストールが完了します。

ユーザーごとの設定ファイル  

使用時の設定はintel64オプションで読み込みます。

.bashrc
# for Intel Compiler
source /opt/intel/Compiler/11.1/046/bin/iccvars.sh intel64    <-- C++の設定
source /opt/intel/Compiler/11.1/046/bin/ifortvars.sh intel64  <-- Fortranの設定
.csrhc
# for Intel Compiler
source /opt/intel/Compiler/11.1/046/bin/iccvars.csh intel64   <-- C++の設定
source /opt/intel/Compiler/11.1/046/bin/ifortvars.csh intel64 <-- Fortranの設定