嶋ベンチ: FortranによるCFDベンチマーク
まえがき
以下に掲載する内容は、以前、以下のURLで公開されていた、shus2、通称「嶋ベンチ」に関するものです。
- FortranによるCFDベンチマークコードのページ (http://www.geocities.jp/esist88/benchmark/ (no longer available))
公開先は閉鎖されましたが、ベンチマーク技術関連資料、プログラムが入手可能であることに意味があると考えて、原作者の了承の元、ここに掲載します。
2019/07/04
FortranによるCFDベンチマークコードのページ
コンピュータの速度を測定するのに使われるのがベンチマークプログラムで、日本のCFD業界では姫野龍太郎さんの作られた通称「姫野ベンチ」が有名です。姫野ベンチは、非圧縮性流体解析に特有の圧力のポアソン方程式の反復解法をモデル化したコードです。姫野ベンチはその扱っている差分式の特色から、
- 四則演算しか含まれない、
- メモリアクセスに比べて演算量が少ない、
特徴があります。
特に、サイズを大きくしたときには、メモリアクセスの能力がダイレクトに出てきますし、コードが単純なだけコンパイラのごまかしも利かないという、ベンチマークコードとして、有利な特徴があります。
しかし、圧縮性流体解析の場合には、メモリアクセスと演算の比率も違いますし、平方根などの四則演算以外も数多く使います。マシンによっては、このような 関数演算を高速化している機種もあり、そこを評価し損ねることもありえます。
そこで、このコード(shus2、通称「嶋ベンチ」)は近代的な圧縮性流体解析に特徴的な近似リーマン流速の部分を用いてベンチマークコードとすること で、圧縮性CFDコードの特徴を持たせることを狙ったものです。
プログラムの始めで、パラメータ文でサイズを宣言しています。このサイズは固定的なものではなく、各々の実アプリで想定しているのに近い大きさを選ぶことが肝要です。試してみれば分かりますが、サイズによって性能値(MFLOPS)は大きく変化します。
ループ内のソース文の演算数を数え上げて、MFLOPS値を算出していますが、平方根等の関数も一演算として数えていることに注意してください。
最後になりましたが、このコードはフリーです。