CodeAnalyst の使い方 (シミュレーション編)

CodeAnalyst

Contents

はじめに

CodeAnalyst は AMD が提供しているパフォーマンスアナライザです. CodeAnalyst には複数のツールが含まれていますが,ここではパイプラインシ ミュレータについて説明しています.

パイプラインシミュレータは,動作中の CPU のパイプラインをグラフィカルに 表示するものです.うまく活用すれば,プログラムの動作を遅くする原因であ るパイプラインストールが発生する場所とその原因を素早くみつけることがで きます.アセンブリを読んで命令の依存関係とかを考える地道な作業からはも はやおさらば. CodeAnalyst を活用してスマートに最適化を行いましょう!

というわけで,以下では sample.exe というプログラムを例に,シミュレー ションの利用方法を説明します.

必要なもの

デバッグビルドしたプログラム.

プロジェクトの作成

まず,プロジェクトファイルを作成します.

  1. 作成ボタンをクリック.
img/step1_1.png
  1. プロジェクトの基本設定を行います.

    プロジェクトの名前および保存先,そして対象プログラムを指定します. プログラムを実行するのに引数が必要な場合は,それも指定します.例で は, sample.exe に対して arg1arg2 の 2 つの引数を指定して います.

img/step1_2.png
  1. シミュレートする CPU を指定します.
img/step1_3.png
  1. 「OK」ボタンを押します.

シミュレーション区間の設定と実行

続いてシミュレーション区間の設定を行います.

  1. ソースファイルの検索.

    シミュレートしたい区間を含んでいるファイルを検索ボックスを利用して 探します.ここでは, BBSThread.cpp を検索しています.

img/step2_1.png
  1. 関数の検索.

    シミュレートしたい区間を含んでいる関数を検索ボックスを利用して 探します.ここでは, get_bcomment を検索しています.

img/step2_2.png
  1. icon_section_start をクリックして,シミュレーションの開始位置を設定します.
img/step2_3.png
  1. icon_section_end をクリックして,シミュレーションの終了位置を設定します.
img/step2_4.png
  1. icon_start_simulation をクリックして,シミュレーションを実行します.
シミュレーションを実行することで,分析に必要な情報が収集されます.実 行後はエラーメッセージが出ていないか確認しておきましょう.
img/step2_5.png

パイプラインの表示

いよいよパイプラインの状態の表示です.

  1. Pipeline タブを選択します.

下の枠に,パイプラインの状態が表示されます.四角で示されたパイプライ ンステージの上にマウスを載せると説明文が表示されます.

パイプラインステージの詳しい内容についてはマニュアルの Pipeline Events and Related Stalls を参照してください.基本的には,赤い枠が あるステージはストールしています.

img/step3_1.png
  1. 命令を選択すると,その命令が依存している命令を表示してくれます.
img/step3_2.png

実行履歴の表示

CodeAnalyst はシミュレーションの履歴を保存する機能を持っています.シミュ レーションと最適化を繰り返しながら,プログラムを改善する場合に役立ちま す.

  1. icon_history をクリックします.
img/step4_1.png
  1. 実行履歴が表示されます. CPI が 1 になるようがんばりましょう♪
img/step4_2.png