Skip to content
eiichiromomma edited this page Aug 16, 2014 · 2 revisions

(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に置き換える

これだけである。

execでエラー

Ubuntuのバージョンが上がるとエラーが出るようになった。 行頭の

#!/bin/sh

#!/bin/bash

に置き換えると良い。

環境の設定

source /opt/intel/cce/9.0/bin/iccvars.sh

とするだけで良い。

LC_ALLの問題

いよいよコンパイル。 と思って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

と誤差程度に縮まった。

Clone this wiki locally