Ubuntu icc - eiichiromomma/CVMLAB GitHub Wiki
(Ubuntu) icc
Intelが非商用利用に限定して無料配布しているCコンパイラの導入(EM64T)
Intel で申し込むとライセンスファイルと共にパッケージのあるURLがメールで送られてくる。
ファイルを展開し中にあるrpmファイルのうち、該当するアーキテクチャのものについて以下の処理を行なう。
sudo alien intel-.......(該当rpmファイル)
出来あがった.debファイルを用いてインストールする。
sudo dpkg -i intel-.......(該当debファイル)
uninstall.shが存在するのでとエラーが出る場合には--force-overwriteオプションを付ける。
メールに添付されてきたライセンスファイルを/opt/intel/licenses/へ移動する。
/opt/intel/cce/9.0/binにバイナリ類がインストールされている。
icc
icpc
iccvars.sh
の3ファイルについて加工が必要。 作業は単純で、
<INSTALLDIR>を/opt/intel/cce/9.0に置き換える
これだけである。
Ubuntuのバージョンが上がるとエラーが出るようになった。 行頭の
#!/bin/sh
を
#!/bin/bash
に置き換えると良い。
source /opt/intel/cce/9.0/bin/iccvars.sh
とするだけで良い。
いよいよコンパイル。 と思ってiccを実行してみると、
icc: error: could not find linux directory based on g++
とエラーを吐く。 環境変数LC_ALLの問題らしく(?)、
export LC_ALL=C
とするとエラーが出なくなった。
あるいはiccでコンパイルする際に
LC_ALL=C icc .....
としても良い。
icc pi.c -o pi_icc
gcc pi.c -o pi_gcc -lm
で作成したものを比較。 ソースはC言語で円周率を計算するのkp110を拝借。
環境はuname -aで
Linux epsilon 2.6.15-26-amd64-xeon #1 SMP PREEMPT Thu Aug 3 03:58:27 UTC 2006 x86_64 GNU/Linux
のQuad-core
time ./pi_icc
(省略)
real 0m12.231s
user 0m12.177s
sys 0m0.004s
time ./pi_gcc
(省略)
real 0m20.322s
user 0m20.281s
sys 0m0.008s
最適化-O3オプションをつけるとiccでは
real 0m12.204s
user 0m12.169s
sys 0m0.012s
gccでは
real 0m12.434s
user 0m12.417s
sys 0m0.012s
と誤差程度に縮まった。