Python* コード解析

インテル® VTune™ プロファイラーが提供する Python* アプリケーション向けのパフォーマンス解析オプションを使用して、最も時間がかかるコード領域とクリティカルな呼び出しパスを特定します。

インテル® VTune™ プロファイラーは、[アプリケーションを起動] と [プロセスにアタッチ] モードにより、Python* アプリケーションの [ホットスポット][スレッド化]、および [メモリー消費] (Linux* のみ) 解析をサポートします。例えば、アプリケーションの数値モデリング量が多い場合、利用可能な CPU リソースがどの程度効率的に利用されているか理解する必要があります。効率的な CPU 使用の良い例は、計算プロセスがネイティブ拡張の実行に最も時間を費やし、Python* の周辺コードの翻訳に多くの時間を費やしていない場合です。

Python* アプリケーションのパフォーマンスを最大限に引き出すには、NumPy* などのネイティブ拡張を使用するか、C やアセンブリーなどネイティブ言語で Python* プロジェクトのパフォーマンスが求められるモジュールを作成してコンパイルします。これは、アプリケーションがベクトル化を利用し、強力な CPU リソースを最大限活用するのに役立ちます。

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

Python* データ収集を設定

GUI またはコマンドライン (vtune) インターフェイスを介してインテル® VTune™ プロファイラーを構成し、Python コードのパフォーマンスを解析します。

GUI:

  1. ツールバーの [解析の設定] ボタンをクリックします。

    [解析の設定] ウィンドウが表示されます。

  2. ターゲットシステムとターゲットタイプ (ローカルホストアプリケーションの起動など) を選択します。

    Windows* および Linux* ターゲットシステムのみをプロファイルできます。

  3. [どこを] ペインで以下を入力します。

    • [アプリケーション] フィールドに、インストールされている Python インタープリターへのパスを入力します。
    • [アプリケーションのパラメーター] フィールドに、Python スクリプトへのパスを入力します。

      Python スクリプトへの相対パスを指定すると、インテル® VTune™ プロファイラーはインポートされたモジュールの完全な関数名またはメソッド名のみを完全に解決します。メインスクリプト内の名前は解決されません。これを回避するには、Python スクリプトへの絶対パスを指定します。

    • [詳細] 設定の [マネージ・コードのプロファイル・モード] ドロップダウン・メニューで、[auto] を選択します。auto モードは、ターゲット実行形式のタイプ (マネージドまたはネイティブ) を自動的に検出して、適切なモードに切り替えます。
    • 必要に応じて、[子プロセスを解析] を選択して、ターゲットプロセスから起動されたプロセスのデータを収集します。

    インテル® VTune™ プロファイラーを Python* プロセスにアタッチする場合、解析を開始する前にスクリプト内でグローバル・インタープリター・ロック (GIL) を初期化することを忘れないでください。GIL が初期化されないと、インテル® VTune™ プロファイラーのコレクターは新たに呼び出された Python* 関数のみを初期化します。

  4. プロファイルを開始する前に Python アプリケーションを実行する必要がある場合、または解析の開始時にアプリケーションを実行できない場合は、インテル® VTune™ プロファイラーを Python プロセスにアタッチします。これには、[何を] ペインで、[プロセスにアタッチ] ターゲットタイプを選択します。Python プロセス名または PID を指定します。

  5. 右の [どのように] 設定ペインで、[ホットスポット][スレッド化]、または [メモリー消費] 解析タイプを選択します。

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

    [ユーザーモード・サンプリング] モード

    ホットスポットとコールスタック解析 (以前の基本ホットスポット) でユーザーモード・サンプリングとトレース収集を有効にする場合に選択します。この収集モードのサンプリング間隔は 10 ミリ秒に固定されています。サンプリング間隔を変更するには、[コピー] ボタンをクリックしてカスタム解析設定を作成します。

    [追加のパフォーマンス情報を表示] チェックボックス

    ベクトル化など追加のパフォーマンス情報を取得して次のステップに進みます。このオプションは追加の CPU イベントを収集しますが、これにより多重化モードが有効になることがあります。

    このオプションは、デフォルトで有効になります。

    [詳細] ボタン

    この解析タイプのデフォルトの編集不可設定のリストを展開/折りたたみます。解析の設定を変更したり、追加の設定を有効にするには、既存の事前定義設定をコピーしてカスタム設定を作成する必要があります。インテル® VTune™ プロファイラーは、解析タイプ設定の編集可能なコピーを作成します。

  7. [開始] をクリックして解析を実行します。

ホットスポットを特定

ユーザーモード・サンプリング・モードのホットスポット解析は、実行に時間がかかる Python* コード領域 (ホットスポット) をタイミングメトリックとコールスタックとともに特定するのに役立ちます。また、[タイムライン] ペインにはスレッド間のワークロードの分布も表示されます。

デフォルトでは、[自動] マネージドコード・プロファイル・モードが使用され、Python*/C++ アプリケーションの混在スタックを表示して解析できます。次の例では、左のペインに、ネイティブ・ホットスポットのインテル® oneAPI マス・カーネル・ライブラリー (oneMKL) 関数が表示されています。右ペインの混在コールスタック解析では、実際にホットスポット関数を呼び出す Python*black_scholes関数を示しています。

[コールスタック] ペインのblack_scholes関数をダブルクリックして、呼び出しサイトの 66 行目のソースコードを開きます。

Python* コード内のコールスタックのみを表示するには、フィルターバーの [コールスタック・モード][ユーザー関数のみ] オプションを選択して、Python* のコアおよびシステム関数をフィルターアウトします。

Python コード・プロファイルの考慮事項

関連情報