« ウェブブラウザのカラーマネジメント(2) | トップページ | StataとRの行列計算の速さ »

2007年12月16日 (日)

ソフトウェアの最適化ビルド

CPUのアーキテクチャに最適化したソフトウェアは、どれほどのパフォーマンスの向上をもたらすのだろうか?最近はIntelのデュアルコアCPUが大幅な性能向上を果たしたが、仮にソフトウェアをビルドする過程でCPUの新しいアーキテクチャを活かしきれていないとしたら、それはもったいないことだ。

最適化という意味では二つの岐路がある。一つはコンパイラの選択、もう一つはコンパイルオプションの選択。前者に関しては、いくつかのウェブサイトで比較を見ることができる。GNUコンパイラに比べて、インテルの商用コンパイラは非常に良い結果を出すらしい。(一方、GNUコンパイラは、バージョン4.0および4.1ではIntel Core Duoを使った場合に僅かに3.3より改善、それ以外のCPUではバージョン3.3より良い性能は出ないらしい。4.2になってやっとましになったとのこと。)

残るコンパイルオプションの選択は、ソフトウェアの演算能力をどう変えるのか。Intel Core Duo 2.0 GHzを搭載した Macbook Proで実験してみた。今回取り上げるソフトウェアは、画像処理の ImageMagick である。

比較したのは次の二つである。

(ア) Mac OS X 10.4 に付属のGNUコンパイラ 4.0.1を用い、最適化フラグは -O2 だけでビルドしたImageMagick 6.3.7

(イ) GNUコンパイラ 4.2.2を用い、Core Duo向けの最適化フラグとして -pipe -O2 -march=prescott -msse3 -fomit-frame-pointer を用いてビルドしたImageMagick 6.3.7

純粋に最適化オプションだけの比較でなく、むしろMac OSのデフォルトの開発環境と、新しくて性能にも留意した開発環境との比較ということになる。

ImageMagick の convert コマンドを用い、5016 x 7602 ピクセルの大きさの 16 bit TIFF形式の画像ファイルを、unsharpマスクをかけて縮小し、その時間を計測した。それぞれの実施前にはコンピュータを再起動し、ほどなく実験を行っている。Unsharpマスクには、Catromを選択した。Catrom自体がどのような計算をしているのか私は詳しく知らないが、積分及び行列計算が多くを占めると想像している。これが、最適化の検証に ImageMagick を用いようと思った一つの動機である。

結果は、50%に縮小した場合(convertのunsharpパラメターは9x1.4+1.0+0.02を使用。演算量は多いはず)

(ア) 1分6秒56
(イ) 1分5秒11 (-1.45秒)

12.5%に縮小した場合(unsharpパラメターは2.3x0.43+1.0+0.02)

(ア) 33秒86
(イ) 34秒73 (-0.87秒)

となった。計測時間には、241MBもの大きさのファイルの読み込みから、書き出しまでが含まれるので、演算自体の所要時間は分からないが、いずれにせよ目立った改善にはならなかった。

ImageMagick は MacPorts を使って導入している。MacPortsに登録された多くのソフトウェアが、デフォルトでは(ア)の条件でビルドするように設定されており、(イ)の条件を適用するのは少々面倒なのだが、その設定をするだけの価値は気休め程度でしかないということだ。性能向上のためなら、Intelのコンパイラを用い、半年でもあとに発売されたコンピュータを用いるほうが効果的だ。

|

« ウェブブラウザのカラーマネジメント(2) | トップページ | StataとRの行列計算の速さ »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: ソフトウェアの最適化ビルド:

« ウェブブラウザのカラーマネジメント(2) | トップページ | StataとRの行列計算の速さ »