Computational Physicsジャーナルの多くの出版物がコードのパフォーマンスにさまざまなメトリックを使用しているのを見てきました。特にGPGPUコードの場合、ユーザーが公開するタイミング結果には非常に多くの種類があるようです。特に、私は見ました:
time
GPUとCPUのバージョンで(基本的に)実行し、平均を報告することの比較- 呼び出された各GPU / CPU関数のプロファイリングデータの比較(そのため、実行された
main
すべての関数のタイミングを調整しますが、ドライバーの初期化時間は無視します) - メモリ転送(この場合はPCI-Eバスを介して)、ディスクへのI / O、あるフォーマットから別のフォーマットへのデータ変換などを無視した、いくつかの関連機能のデータのプロファイリングの比較
- 1つの関数のみのプロファイリングデータの比較(たとえば、CPUとGPU量子モンテカルロでスピン更新を実行する時間のみを比較)、メモリ転送時間、ディスクへのI / O、ハミルトニアンの設定/対角化などを無視、など
2番目と3番目のメリットも確認できますが、最初のオプションは4つの中で最も「正直」です。言語間またはInfinibandとGigabit間のI / O実装の違いが4.99秒だった場合、5秒のランタイムの違いを報告するのは少しばかげています。最後のオプションは、この関数がプログラム全体の問題点でない限り、それについての情報を報告することは、私の結果を複製している誰かが見るパフォーマンスを反映しないだけなので、私には少し「不器用」に思えます。これらのアプローチのどれがより正直ですか?理想的には、紙にはこれらすべてが含まれますが、図/長さに制限がある場合、これは最も価値があり、正直で、提供に関連性がありますか?