2007年 11月 05日 月曜日 Sun Studio 12 C コンパイルオプションと姫野ベンチ
以前のエントリで Sun Studio 12 の -fast オプションに関連して、-xregs=frameptr オプションによる、フレームポインタレジスタを汎用レジスタとして使用する場合についてちょっと言及しました。このオプションによるプログラムの実行速度の違いを調べるために、「姫野ベンチ」を使ってみることにしました。姫野ベンチについてはリンク先の説明を参照してください。と言うか、リンク先の説明以上のことはできないです ...
まずは単にコンパイルして実行してみました
マシン
| CPU | 2 次キャッシュ | メモリ |
|---|---|---|
| AMD Opteron 250 (2.4GHz) x2 | 1 MB | 3326 MB |
結果 (5 回計測した中央値)
| コンパイルオプション | 結果 (MFLOPS) |
|---|---|
| -DMIDDLE -fast -m64 | 942.156648 |
| -DMIDDLE -fast -m64 -xregs=no%frameptr | 960.605658 |
... フレームポインタレジスタを本来の目的で使用した方が良いスコアが出ました ... ただ、5 回計測した中の最大値、最小値についてはほとんど差が出ていません。また、5 回すべてでフレームポインタレジスタを汎用レジスタとして使用した場合には遅くなるかというと、そうではありません。これは有意な差とは言えないような気がしています。今回の環境でのこのプログラムについては、フレームポインタレジスタの取り扱いは実行速度に影響を及ぼさない。と言えそうです。
他にも気になるコンパイルオプションがあったので、今回の計測時に一緒に試しました。すべての結果は以下の通りです。
結果 (5 回計測した中央値)
| コンパイルオプション | 結果 (MFLOPS) |
|---|---|
| -DMIDDLE -xtarget=native64 -xO5 | 909.317671 |
| -DMIDDLE -xtarget=native64 -xO5 -xvector=simd | 930.913117 |
| -DMIDDLE -xtarget=native64 -xO5 -xvector=simd -xprofile=use:bmt | 915.097250 |
| -DMIDDLE -fast -m64 | 942.156648 |
| -DMIDDLE -fast -m64 -xregs=no%frameptr | 960.605658 |
| -DMIDDLE -fast -m64 -xvector=simd | 983.480853 |
| -DMIDDLE -fast -m64 -xvector=simd -xprofile=use:bmt | 998.006062 |
-xvector=simd とは、SIMD 命令 (SSE) を使用を指示するためのオプションです。
-xprofile=use は、一旦プロファイル用のデータを収集し、そのデータを使用してコンパイルを行うためのものです。今回の計測時には -xprofile=collect オプションでコンパイルした実行形式を 5 回の実行し、5 回の実行結果をプロファイルデータとして使用しています。
色々と知りたいので、引き続きソースコードを読むなどしていきたいと思っています。
Posted by keiichio
( 11月 05日 2007年, 12:29:09 午後 JST )
Permalink
投稿されたコメント [0]