2017-05-08 10 views
0

比較的頻繁に、ある特定のコンピュータのある特定のCPU上のある特定の状況で特定のコードをベンチマーク/プロファイル(またはベンチマーク/この結果が広範囲の非常に異なるCPU(例えば、「64ビットすべて80x86」など)上のさまざまな状況(たとえば、異なる負荷の同じコア内の他の論理CPU)に適用されると仮定しますさまざまな異なるコンピュータ(例えば、異なるRAMタイミングなど)を使用することができます。完全なプロファイラがありますか?

私が探しているのは、(多くの場合、直接測定ではなくコードを解釈することによって)多くのCPUのプロファイリング結果を生成できる一種のプロファイラです。実際に有用で誤解を招かない結果を作成するために、重み付け係数を使用してすべての結果を結合します(ここで、重み付け係数は、各測定されたケースについてユーザーが気にする量を表します)。

この説明に適合するプロファイリングツールはありますか?

+0

こんにちは。あなたの質問はIPC < 1 or IPC > 1つのコード(http://www.brendangregg.com/blog/2017-05-09/cpu-utilization-is-wrong.html - "解釈と実行可能なアイテム"についての詳細です;あなたはcpu-バウンドまたはメモリバウンド)?シングルスレッド、マルチスレッド、またはマルチスレッドのパフォーマンスですか?マイクロアーキテクチャの設計/計画上の問題とFPGAモデルの助けを借りて加速した検索のためのRISC-V BOOMペーパーをご覧ください:https://www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-167.html https://people.eecs.berkeley.edu/~krste/papers/dgkim-msthesis.pdfなど。 – osgx

+0

アクティビティの種類によって、環境によってコストが異なります。 1つの環境では、I/Oが支配的なコストになる可能性がありますが、別の環境ではそうではありません。キャッシュミスは1つで支配的であるが、別のものでは支配的ではない。メモリ割り当て - 同じこと。浮動小数点数学 - 同じこと。並列処理オーバーヘッド - 同じこと。ですから、ワンサイズのツールを使いたい場合は、どのような環境で答えるかを伝える必要があります。私はあなたが体重がそれをすると思うと思うが、私の経験では、カテゴリーが必要なものを事前に教えてはいけないと言います。 –

答えて

0

私は普遍的なパフォーマンス予測ツールはインターネットに公開されていないと思います。次のマイクロアーキテクチャを最適化する内部CPUベンダーがいるかもしれません。

callgrind/cachegrind(遅い)の単純なモデルプロファイラーを持つvalgrindバイナリー計測プラットフォームがあります。 Callgrindは、1命令のようなモデルの基本ブロック実行を1CPUクロックのようにカウントします。 cachegrindさらに2つのレベルの器具アクセスモデルcache modelをモデルとし、簡単なモデルbranch predictorをモデル化することもできます。どちらのツールも、「すべての64ビット80x86」互換CPU(およびOOOのcpusは基本的なOOO機能および性能において類似している)のベンダー1およびベンダー2からの最新のOOO CPUのワイドデコード/実行/リタイア機能の知識/モデルを持っていません。グラファイトの助けを借りてPTLsim(http://www.facom.ufms.br/~ricardo/Courses/CompArchII/Tools/PTLSim/PTLsimManual.pdf、2007)に基づいてMARSSx86(http://marss86.org/、2012)、またはスナイパーマルチコアシミュレータ(:

は次のように(遅いからと非常に遅い)OOOのCPUシミュレータのいくつかのオープンソースプロジェクトがありましたフレームワーク)。 (正確なシステムシミュレーションに必要なDRAMSim/DRAMSim2メモリシミュレータがあり、他のいくつかのシミュレータプロジェクトで使用されています; RISC-Vロケットチップシミュレータでオプションで使用できます)

(非常に遅い - 数十KIPS)cycle-accurate simulator/microarchitecture simulatorしかし、あまりにも多くのオープンソースの変形がありません。いくつかの商用シミュレータがあります(たとえば、ARMの世界ではARMサイクルモデル/ CPAK、ARC nSIMなど)。またはsimplescalar.com。社内の独自のシミュレータもあります(私たちにはアクセスできません)。

マイクロアーキテクチャ/サイクルシミュレータに対する一般的な唯一の近似は、ベンダー1のIACA:https://software.intel.com/en-us/articles/intel-architecture-code-analyzer(メモリ階層モデリングのない内部ループのような短いコードシーケンスのOOOポート計画の不正確な部分モデル)です。ベンダー1のツール「SDE」は、古いCPUやPINバイナリ書き換えツールで将来のCPU命令拡張を評価/デバッグするツールです。https://software.intel.com/en-us/articles/intel-software-development-emulatorです。

+0

@Brendanには、組み込み世界(ARM、MIPS、Renesas、ARC、NIOS/Microblaze、PowerPC)のOVP/OVPsim「170+ HighPerformanceプロセッサモデルのOVP(Open Virtual Platforms)ライブラリ」があります。https://riscv.org /wp-content/uploads/2017/05/Wed1415-Imperas-Virtual-Platforms-Lapides.pdf#page=34と速度は「プラットフォームの命令精度(IA)シミュレーション」の1GIPSのように要求されています - www.ovpworld.org 。 「* OVPは非営利目的では無料で使用でき、ユーザーはOVPsim開発者のImperas *に連絡することが期待されています。このツールは、オープンソースとしてオープンではなく、ツールはバイナリのみです。 " – osgx

関連する問題