インテル® VTune™ Amplifier 2018 ヘルプ

Python* コードの解析

インテル® VTune™ Amplifier は、Python* アプリケーション向けに大部分の時間を消費するコード領域とクリティカルなコードパスを特定するパフォーマンス解析オプションを提供します。

インテル® VTune™ Amplifier は、[Launch Application (アプリケーションを起動)][Attach to Process (プロセスにアタッチ)] モードで Python* アプリケーションの基本ホットスポットロックと待機、およびメモリー消費解析をサポートします。例えば、アプリケーションが大量の数値モデリングを行う場合、利用可能な CPU リソースがどの程度効率良く使用されているか知る必要があります。効率良く CPU を使用する例として、計算プロセスが大部分の時間をPython* グルーコードの解釈ではなく、ネイティブ拡張での実行に費やすケースが上げられます。

Python* アプリケーションのパフォーマンスを最大限に高めるには、NumPy* などのネイティブ拡張を使用するか、Python* プロジェクトのパフォーマンス・クリティカルなモジュールを C またはアセンブリーなどのネイティブ言語で記述してコンパイルすることを検討してください。これは、アプリケーションがベクトル化の利点と強力な CPU リソースを最大限に使用するのを支援します。

インテル® VTune™ Amplifier で Python* コードのパフォーマンスを解析してデータを解釈するには、次の操作を行います。

Python* データ収集の設定

Python* コードのパフォーマンスを解析するには、GUI またはコマンドライン (amplxe-cl) インターフェイスのいずれかを使用してインテル® VTune™ Amplifier を設定します。

GUI から Python* コードのプロファイルを設定して実行するには、次の操作を行います。

  1. インテル® VTune™ Amplifier ツールバーの [Configure Project (プロジェクトの設定)] ボタン をクリックします。

    [Analysis Target (解析ターゲット)] タブがアクティブな状態で [Choose Target and Analysis Type (ターゲットと解析タイプの選択)] ウィンドウが開きます。

  2. 左ペインから、ターゲットシステムとターゲットタイプを選択します。例: [local host (ローカルホスト)][Launch Application]

    Windows* と Linux* ターゲットシステムのみがサポートされます。

  3. 右ペインから、[Application (アプリケーション)] フィールドにインストールされている Python* インタープリターへのパスと、[Application parameters (アプリケーション・パラメーター)] フィールドに Python* スクリプトへのパスを指定します。

    [Application parameters] フィールドに Python* スクリプトへの相対パスを指定すると、インテル® VTune™ Amplifier はインポートされているモジュールに対してのみ完全な関数やメソッド名の解決を行い、main スクリプト内部の名前解決は行いません。スクリプトへの絶対パスの指定を検討してください。

    また、マネージドコードのプロファイル・モードAuto (自動) に指定すると、インテル® VTune™ Amplifier は自動的にターゲットの実行形式 (マネージドまたはネイティブ) を検出して、対応するモードへの切り替えを行います。また、オプションとして、ターゲットプロセスが起動するプロセスのデータ収集を行うため、[Analyze child processes (子プロセスを解析)] を選択できます。例えば、Linux* 上では次のように設定します。

    プロファイルを開始する前に Python* アプリケーションを実行する必要がある場合や、解析時に Python* アプリケーションを起動できない場合、Python* プロセスをインテル® VTune™ Amplifier にアタッチする必要があります。これを行うには、[Attach to Process] ターゲットタイプを選択し、Python* プロセス名または PID を指定します。

    インテル® VTune™ Amplifier に Python* プロセスをアタッチする場合、解析を始める前にスクリプト内のグローバル・インタープリター・ロック (GIL) を確実に初期化するようにしてください。GIL が初期化されていないと、インテル® VTune™ Amplifier のコレクターは新たに Python* スクリプトが呼び出された時に初期化を行います。

  4. [Analysis Type (解析タイプ)] ウィンドウに切り替えて、左ペインから [Basic Hotspots (基本ホットスポット)][Locks and Waits (ロックと待機)]、または [Memory Consumption (メモリー消費)] 解析タイプを選択します。

  5. 必要に応じて次のオプションを設定するか、デフォルトを適用します。

    CPU sampling interval, ms (CPU サンプリング間隔、ミリ秒)

    CPU サンプルの間隔 (ミリ秒で) を指定します。

    指定可能な値 - 1-1000

    デフォルト値は、10 です。

    [Analyze user tasks, events, and counters (ユーザータスク、イベント、カウンターを解析)] チェックボックス

    ITT API を使用してコード中で指定したタスク、イベント、およびカウンターを解析します。このオプションを指定すると、高いオーバーヘッドが生じ、結果ファイルのサイズが増加します。

    デフォルト値は、[false] です。

    [Analyze OpenMP regions (OpenMP* 領域を解析)] チェックボックス

    OpenMP* 領域をインストルメントおよび解析し、インバランス、ロックの競合、またはスケジュール、リダクション、およびアトミック操作におけるオーバーヘッドなど非効率な振る舞いを特定します。

    デフォルト値は、[false] です。

    [Details (詳細)] ボタン

    この解析タイプで使用されるデフォルト設定 (編集不可) のリストを展開/折りたたみます。解析向けの追加設定を修正または有効にする場合、既存の事前定義設定をコピーしてカスタム設定を作成する必要があります。この解析タイプ設定の編集可能なコピーが作成され、解析ツリーの [Custom Analysis (カスタム解析)] に追加されます。

    ロックと待機で、OpenMP* やインテル® スレッディング・ビルディング・ブロック (インテル® TBB) などのインテルのランタイムによって使用されるユーザー同期 API をプロファイルしてスレッド間の同期を解析するには、[Analyze Intel runtimes and user synchronizations (インテルのランタイムとユーザー同期を解析)] オプションを選択します。

  6. 解析を開始するには、右にある [Start (開始)] ボタンをクリックします。

ホットスポットを特定

基本ホットスポット解析は、実行に長い時間のかかる Python* コード領域 (ホットスポット) とともにそれらのタイミングメトリックおよびコールスタックを特定するのを支援します。また、[Timeline (タイムライン)] ペインでは、ワークロードのスレッドへの分散を時系列で表示します。

一般的に Python* アプリケーションが論理的にモジュールに分割され、それらがクラス指向である場合、解析データを表示する際に [Grouping (グループ化)] メニューの [Module/Function/Call Stack (モジュール/関数/コールスタック)] または [Class/Function/Call Stack (クラス/関数/コールスタック)] レベルを使用することを検討してください。

Python* コードとシステム関数内部のコールスタックのみを表示するには、フィルターバーの [Call Stack Mode (コールスタック・モード)][Only user functions (ユーザー関数のみ)] オプションを選択します。

制限事項

インテル® VTune™ Amplifier の Python* コードのプロファイルにはいくつかの制限があります。

関連情報