HPC/並列プログラミングポータルでは、HPC(High Performance Computing)プログラミングや並列プログラミングに関する情報を集積・発信しています。 |
[記事一覧を見る]
さて、インテル Atom プロセッサー向け インテル アプリケーション・ソフトウェア開発ツール・スイートに含まれるインテル コンパイラーは「GCCよりも大幅に優れたパフォーマンスを提供します」とうたわれている。そこで、最後にGCCとインテル コンパイラーのパフォーマンス差について簡単ではあるがベンチマークを行った結果を紹介しよう。
Linux環境ではさまざまなベンチマークツールがあるが、これらの多くはCPUの単純な演算性能やI/O性能、グラフィック性能を測るものであり、コンパイラの性能比較には利用しにくい。そこで、ここではファイル圧縮/展開ツールであるbzip2をGCCおよびインテル コンパイラーでコンパイルし、ファイルの圧縮/展開速度を比較した。使用したbzip2のバージョンは1.0.5だ。なお、bzip2のソースコードはbzip2のWebサイトからダウンロードできる。
bzip2のコンパイル設定はconfigureスクリプトではなく、付属のMakefileを直接編集して行う。まず、ダウンロードしたソースコードを適当なディレクトリに展開する。
$ tar xvzf bzip2-1.0.5.tar.gz
Makefile冒頭でコンパイラや関連ツール、コンパイルオプションを設定するための変数が用意されているので、こちらを書き換える(リスト1)。
# To assist in cross-compiling CC=gcc AR=ar RANLIB=ranlib LDFLAGS= BIGFILES=-D_FILE_OFFSET_BITS=64 CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) # Where you want it installed when you do 'make install' PREFIX=/usr/local
設定する変数は、次の表6のとおりだ。
変数名 | 意味 | GCCを利用する場合の設定 | インテル コンパイラーを利用する場合の設定 |
---|---|---|---|
CC | 使用するコンパイラ | i586-moblin-linux-gcc | icc |
AR | 使用するアーカイバ | i586-moblin-linux-ar | xiar |
RANLIB | 使用するranlibツール | i586-moblin-linux-ranlib | |
LDFLAGS | リンカーに与えるオプション | (なし) | -L$(PKG_CONFIG_SYSROOT_DIR)/usr/lib -L$(PKG_CONFIG_SYSROOT_DIR)/lib |
CFLAGS | コンパイルオプション | -Wall -Winline -O2 -g $(BIGFILES)(デフォルトのまま) | -Wall -Winline -O2 -ipo -I$(PKG_CONFIG_SYSROOT_DIR)/usr/include -I$(PKG_CONFIG_SYSROOT_DIR)/include $(BIGFILES) |
PREFIX | 「make install」コマンドのインストール先 | /tmp/bzip2_gcc | /tmp/bzip2_icc |
Makefileの編集後「make」コマンドおよび「make install」コマンドを実行すると、PREFIX変数で指定したディレクトリ以下にバイナリが作成される。
$ make $ make install
次に、作成したバイナリ一式をMoblin環境にコピーする。本来はRPMパッケージを作成し、rpmコマンドでのインストールを行うのが推奨されているが、今回はテスト目的であるため、ファイル一式を直接Moblin環境の/usr/localディレクトリ以下にSCPでコピーしている。たとえばインテル コンパイラーで作成したバイナリの場合、次のように実行する。
$ cd /tmp/bzip2_icc $ scp -r * root@<Moblin環境のIPアドレス>:/usr/local/
今回のテストでは、CPUとしてAtom N270(1.60GHz)を搭載するネットブック「EeePC 901」を使用した。スペックやそのほかの環境は次の表7のとおりだ。
構成要素 | スペック |
---|---|
CPU | Atom N270(1.60GHz) |
メモリ | 1GB |
ストレージ | ASUS-PHISON SSD TST2(8GB) |
Linuxカーネルバージョン | 2.6.31.6-17.1.moblin2-netbook |
ベンチマークではFirefox 3.6のソースアーカイブ(firefox-3.6.source.tar.bz2)を使用し、これを展開/圧縮するのにかかった時間をtimeコマンドで計測した。ストレージの読み書きによる影響を抑えるため、展開/圧縮した結果はディスクに書き出さないようにしている。
$ time bzip2 -d -c firefox-3.6.source.tar.bz2 /dev/null (展開) $ time bzip2 -z -c firefox-3.6.source.tar /dev/null (圧縮)
計測は合計4回行い、ディスクキャッシュの影響を抑えるため2回目〜4回目の値を有効な計測結果とした。得られた計測結果は次の表8、'図12のとおりだ。
操作 | コンパイラー | 1回目 | 2回目 | 3回目 | 平均 |
---|---|---|---|---|---|
圧縮 | インテル コンパイラー | 284.311秒 | 283.442秒 | 284.739秒 | 284.16秒 |
GCC | 339.414秒 | 339.375秒 | 339.954秒 | 339.58秒 | |
展開 | インテル コンパイラー | 43.727秒 | 44.030秒 | 43.662秒 | 43.81秒 |
GCC | 44.256秒 | 44.248秒 | 44.539秒 | 44.35秒 |
圧縮については、インテル コンパイラーでコンパイルしたバイナリが、GCCでコンパイルしたものよりも2割近く高速という結果となった。また、展開処理については差は大きくないものの、こちらもインテル コンパイラーのほうが高速という結果が得られている。
Moblinがターゲットとするネットブックやモバイルインターネット端末で採用されているAtom CPUは、一般的なPCで採用されているCore/Celeronシリーズと比べると処理性能が低いため、PC上ではあまり気にならなかった速度差も、Moblin上で実行すると大きく感じられる可能性がある。再コンパイルだけでパフォーマンスの向上を図れるインテル コンパイラーは、パフォーマンスが必要とされるアプリケーション開発において大きく役立つツールと言えるだろう。
[ページ情報]
更新日時: 2010-04-08 18:46:09, 更新者: hiromichi-m
[権限]
表示:無制限, 編集:ログインユーザ, 削除/設定:メンバー