Intel64アーキテクチャでのインストール
2010-03-16 : by どぶお
この記事はIntel64(x86_64)アーキテクチャ上でのIntel Compiler 32/64のインストール方法を解説したものです。
Intel CompilerをIntel64アーキテクチャ上のVineにインストールするには少々手間がかかります。引っかかる点は以下。
- libstdc++.so.5の32bitライブラリが標準でビルドされていない
- 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で必要なパッケージをインストールしておきます。
- lsb
- libstdc++3
- java-1.6.0-sun-devel -- インストールしなくてもよい
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に含まれているようです。
- compat32-libstdc++3-3.3.6-3vl5.i386.rpm -- ビルドしたもの
このパッケージをインストールすることで32bit版libstdc++.so.5が導入されます。
# rpm -ivh compat32-libstdc++3-3.3.6-3vl5.i386.rpm
- 参考:VineでTLS対応glibc -- .rpmmacrosの設定について
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の設定