HPC クラスターでインテル® VTune™ プロファイラー・サーバーを使用する

HPCインテル® Tiber™ AI クラウドインテル® VTune™ プロファイラー

この記事は、インテル® デベロッパー・ゾーンに公開されている「Intel® VTune™ Profiler Performance Analysis Cookbook」の「Using Intel® VTune™ Profiler Server in HPC Clusters」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


バージョン: 2022
更新日: 2022年6月2日

このレシピでは、ハイパフォーマンス・コンピューティング (HPC) クラスターでインテル® VTune™ プロファイラー・サーバーを使用して、インタラクティブなパフォーマンス・プロファイルやスケジュールされたジョブのパフォーマンス・データにアクセスする方法を説明します。

通常、HPC クラスター内のノードには GUI コンテキストがありません。そのため、インテル® VTune™ プロファイラーでパフォーマンス解析を行う際に不都合が生じることがあります。HPC クラスターのユーザーは、コマンドライン・レポートを利用するか、デスクトップのインテル® VTune™ プロファイラー GUI で表示するためクラスターから別のマシンへ結果ファイルを転送する必要があります。

このレシピは、このような不便さを解消するワークフローを提供することを目的としています。インテル® VTune™ プロファイラー 2021.1.1 以降では、HPC クラスター内のサーバーとしてインテル® VTune™ プロファイラーを起動し、リモートからフル機能の GUI で結果を表示できます。必要なのは、最新のウェブブラウザーを実行できるマシンだけです。

このレシピでは、インテル® DevCloud for oneAPI を例として使用しますが、このワークフローはほかの HPC クラスターまたは同様の環境でも有効です。

コンテンツ・エキスパート: Stas Neverov (英語)

使用するもの

以下は、このレシピで使用するハードウェアとソフトウェアのリストです。

設定の概要

以下のトピックについて説明します。

  • インタラクティブに使用する HPC クラスター内のコンピュート・ノードを予約し、インテル® VTune™ プロファイラー・サーバーを起動し、ラップトップでインテル® VTune™ プロファイラーのウェブ GUI を使用して解析を設定し、収集したデータを表示します。
  • HPC クラスターでジョブをスケジュールし、インテル® VTune™ プロファイラーのコマンドライン・データ収集でラップし、ジョブが完了したら戻って、インテル® VTune™ プロファイラー・サーバーを実行し、収集結果をラップトップ上のウェブブラウザーで表示します。

いずれの場合も、クライアント・システムに何もインストールする必要はありません。ウェブブラウザーだけあれば、インテル® VTune™ プロファイラーの GUI にアクセスできます。

インテル® VTune™ プロファイラー・サーバーによるインタラクティブなパフォーマンス・プロファイル

このシナリオでは、HPC クラスター内のコンピュート・ノードでインテル® VTune™ プロファイラー・サーバーを実行し、ラップトップ上のウェブブラウザーでインテル® VTune™ プロファイラーの GUI にアクセスします。この使用モデルは、VNC を使用してインテル® VTune™ プロファイラーのデスクトップ GUI を使用する場合とやや似ていますが、セットアップが簡単で、より優れたユーザー体験を提供します。

以下は、この設定を図解したものです。

以下の手順に従って、このワークフローを実行します。

  1. インテル® DevCloud for oneAPI (英語) にログインします。
  2. 手順に従って、インテル® DevCloud への SSH 接続を設定します。
  3. インテル® DevCloud のログインノードにログインします。
    ssh devcloud
  4. インテル® DevCloud のコンピュート・ノードを予約します。
    qsub -I
  5. インテル® VTune™ プロファイラー・サーバーを実行します。
    vtune-backend --enable-server-profiling --data-directory=~/intel/vtune/projects

    インテル® VTune™ プロファイラー・サーバーは次のような文字列を出力します。

    Serving GUI at https://127.0.0.1:42277?one-time-token=456e20b6dcaad209ea2157744c1dc6c5

    ポート番号、コンピュート・ノード名、および URL をメモします。この情報は以降のステップで必要になります。

    注:
    出力例のポート番号 42277 は、コンピュート・ノードで利用可能なポートのうちランダムに選択されたものです。ここでは、例としてポート番号 42277 を使用しています。実際にインテル® VTune™ プロファイラー・サーバーを起動した際に表示されるポート番号は異なります。

  6. 新しいターミナルウィンドウを開きます。最初のターミナルは閉じないでください。ターミナルを閉じると、インテル® VTune™ プロファイラー・サーバーが停止し、コンピュート・ノードが解放されます。
  7. SSH ポートフォワードを有効にして、再度インテル® DevCloud のログインノードにログインします。
    ssh -L 127.0.0.1:42277:127.0.0.1:42277 devcloud

    注:
    ポート番号 42277 はステップ 5 で出力された実際のポート番号に変更してください。

  8. もう 1 つの SSH トンネルでログインノードからコンピュート・ノードへの SSH 接続を確立します。
    ssh -L 127.0.0.1:42277:127.0.0.1:42277 s000-n000

    注:
    s000-n000 は、ステップ 5 でインテル® VTune™ プロファイラー・サーバーが開始されたコンピュート・ノード名に、ポート番号 42277 は、ステップ 5 で出力された実際のポート番号にそれぞれ変更してください。

  9. ラップトップでインテル® VTune™ プロファイラーのウェブ GUI を開くため、ステップ 5 でインテル® VTune™ プロファイラー・サーバーが出力した URL をラップトップ上のウェブブラウザーに貼り付けます。
  10. インテル® VTune™ プロファイラー・サーバーの証明書を承認します。

    インテル® VTune™ プロファイラーの GUI を開くときに、ウェブブラウザーがインテル® VTune™ プロファイラー・サーバーの自己署名証明書に関する確認メッセージを表示します。SSH トンネルは中間者攻撃 (MitM) から保護されているため、証明書をインストールしなくても安全に作業を進めることができます。トランスポート・セキュリティーの詳細は、「トランスポート・セキュリティーの設定」を参照してください。

  11. パスフレーズを設定します。

    インテル® VTune™ プロファイラー・サーバーを初めて起動したときに出力される URL には、ワンタイムトークンが含まれています。ブラウザーでこの URL を開くと、インテル® VTune™ プロファイラー・サーバーによってパスフレーズの設定を求められます。パスフレーズがないと、ほかのユーザーはインテル® VTune™ プロファイラー・サーバーにアクセスできません。パスフレーズのハッシュはサーバー上のユーザー・ホーム・ディレクトリーに保存されます。また、ブラウザーには安全な HTTP クッキーが保存されるので、インテル® VTune™ プロファイラーのウェブ GUI を開くたびにパスフレーズを入力する必要はありません。

    パスフレーズを設定すると、インテル® VTune™ プロファイラーの [Welcome (ようこそ)] 画面が表示されます。

  12. インテル® VTune™ プロファイラーのウェブ GUI で新しいプロジェクトを作成して解析を設定します。
    1. [Welcome (ようこそ)] 画面の [New Project… (新規プロジェクト…)] ボタンをクリックします。
    2. 表示されるダイアログにプロジェクト名を入力します。

      インテル® VTune™ プロファイラーは、自動的に [Configure Analysis (解析の設定)] ダイアログを開きます。

      デフォルトでは、インテル® VTune™ プロファイラー・サーバーを実行しているコンピュート・ノードがターゲットシステムとして選択されます。

    3. ターゲット・アプリケーションのパスとコマンドライン引数を設定します。詳細は、「解析ターゲットの設定」を参照してください。
  13. [Start (開始)] ボタンをクリックして、解析を実行します。

解析が完了すると、インテル® VTune™ プロファイラーは解析結果の [Summary (サマリー)] タブを表示します。

スケジュールされたジョブのプロファイル結果の提供

このシナリオでは、インテル® VTune™ プロファイラーのコマンドライン・インターフェイスを使用して、スケジュールされたジョブのパフォーマンス・データを収集し、クラスター内でインテル® VTune™ プロファイラー・サーバーを実行してこれらの結果を提供し、ラップトップ上のウェブブラウザーで結果にアクセスできるようにします。

以下は、この設定を図解したものです。

以下の手順に従って、このワークフローを実行します。

  1. インテル® DevCloud for oneAPI (英語) にログインします。
  2. 手順に従って、インテル® DevCloud への SSH 接続を設定します。
  3. インテル® DevCloud のログインノードにログインします。
    ssh devcloud
  4. インテル® VTune™ プロファイラーのデータ収集でジョブをラップするスクリプトを作成します。
    echo vtune -collect hotspots \
            -r ~/intel/vtune/projects/demo/matrix/hotspots01 \
            -- /opt/intel/oneapi/vtune/latest/samples/en/C++/matrix/matrix \
            > ~/run_with_vtune.sh
    

    -r ~/intel/vtune/projects/demo/matrix/hotspots01 オプションは、インテル® VTune™ プロファイラーの収集結果を格納する場所を定義します。この場所は変更可能ですが、以降のステップでインテル® VTune™ プロファイラー・サーバーを起動する際には、この場所の親フォルダー (例: ~/intel/vtune/projects) を指定する必要があります。

    注:

    • ユーザー・ホーム・ディレクトリーはネットワークにマウントされ、すべてのコンピュート・ノードで共有されていると仮定しています。
    • HPC クラスターによっては、インテル® VTune™ プロファイラーの結果を保存するため、ネットワークにマウントされた追加の容量を使用できる場合があります。インテル® VTune™ プロファイラーの結果は一般にサイズが大きく、ユーザー・ホーム・ディレクトリーの容量は限られているため、必要に応じて使用すると良いでしょう。
    • サンプルの /opt/intel/oneapi/vtune/latest/samples/en/C++/matrix/matrix は独自のアプリケーションに置き換えることができます。
  5. ステップ 4 で作成したスクリプトを使用してジョブをスケジュールします。
    qsub ./run_with_vtune.sh
  6. ジョブの完了を待機します。

    サンプルの matrix アプリケーションは 1 分程度で完了します。実際の HPC ジョブでは、完了までに数時間かかることもあります。その間、画面の前で待機する必要はありません。ジョブが完了すると、インテル® VTune™ プロファイラーの結果は指定した場所に保存されるので、後で、あるいは翌日に手順を再開できます。

  7. インタラクティブ・モードでインテル® DevCloud のコンピュート・ノードを予約します。
    qsub -I
  8. インテル® VTune™ プロファイラー・サーバーを実行します。
    vtune-backend --data-directory=~/intel/vtune/projects

    –data-directory=~/intel/vtune/projects は、ステップ 4 で指定した結果フォルダーの親フォルダーを参照する必要があります。

    インテル® VTune™ プロファイラー・サーバーは次のような文字列を出力します。

    Serving GUI at https://127.0.0.1:42277?one-time-token=456e20b6dcaad209ea2157744c1dc6c5

    ポート番号、コンピュート・ノード名、および URL をメモします。この情報は以降のステップで必要になります。

    注:
    出力例のポート番号 42277 は、コンピュート・ノードで利用可能なポートのうちランダムに選択されたものです。ここでは、例としてポート番号 42277 を使用しています。実際にインテル® VTune™ プロファイラー・サーバーを起動した際に表示されるポート番号は異なります。

  9. 新しいターミナルウィンドウを開きます。最初のターミナルは閉じないでください。ターミナルを閉じると、インテル® VTune™ プロファイラー・サーバーが停止し、コンピュート・ノードが解放されます。
  10. SSH ポートフォワードを有効にして、再度インテル® DevCloud のログインノードにログインします。
    ssh -L 127.0.0.1:42277:127.0.0.1:42277 devcloud

    注:
    ポート番号 42277 はステップ 8 で出力された実際のポート番号に変更してください。

  11. もう 1 つの SSH トンネルでログインノードからコンピュート・ノードへの SSH 接続を確立します。
    ssh -L 127.0.0.1:42277:127.0.0.1:42277 s000-n000

    注:
    s000-n000 は、ステップ 8 でインテル® VTune™ プロファイラー・サーバーが開始されたコンピュート・ノード名に、ポート番号 42277 は、ステップ 8 で出力された実際のポート番号にそれぞれ変更してください。

  12. ラップトップでインテル® VTune™ プロファイラーの GUI を開くため、ステップ 8 でインテル® VTune™ プロファイラー・サーバーが出力した URL をラップトップ上のウェブブラウザーに貼り付けます。
  13. インテル® VTune™ プロファイラー・サーバーの証明書を承認します。

    インテル® VTune™ プロファイラーの GUI を開くときに、ウェブブラウザーがインテル® VTune™ プロファイラー・サーバーの自己署名証明書に関する確認メッセージを表示します。SSH トンネルは中間者攻撃 (MitM) から保護されているため、証明書をインストールしなくても安全に作業を進めることができます。トランスポート・セキュリティーの詳細は、「トランスポート・セキュリティーの設定」を参照してください。

  14. パスフレーズを設定します。

    インテル® VTune™ プロファイラー・サーバーを初めて起動したときに出力される URL には、ワンタイムトークンが含まれています。ブラウザーでこの URL を開くと、インテル® VTune™ プロファイラー・サーバーによってパスフレーズの設定を求められます。パスフレーズがないと、ほかのユーザーはインテル® VTune™ プロファイラー・サーバーにアクセスできません。パスフレーズのハッシュはサーバー上のユーザー・ホーム・ディレクトリーに保存されます。また、ブラウザーには安全な HTTP クッキーが保存されるので、インテル® VTune™ プロファイラーの GUI を開くたびにパスフレーズを入力する必要はありません。

    パスフレーズを設定すると、インテル® VTune™ プロファイラーの [Welcome (ようこそ)] 画面が表示されます。

  15. スケジュールされたジョブの解析結果を開きます。

    [Project Navigator (プロジェクト・ナビゲーター)] パネルに demo/matrix/hotspots01 結果が表示されます。この結果をダブルクリックして開きます。

使用上の注意点

  • –enable-server-profiling コマンドライン・オプションを使用すると、インテル® VTune™ プロファイラー・サーバーをホストしているシステムをパフォーマンス・プロファイル・ターゲットにすることができます。インテル® VTune™ プロファイラーの解析の実行では、任意のコマンドラインでターゲット・アプリケーションを起動するため、セキュリティーの観点からこのオプションはデフォルトで無効になっています。複数のユーザーがインテル® VTune™ プロファイラー・サーバーの 1 つのインスタンスにアクセスできる場合、インテル® VTune™ プロファイラー・サーバーを実行するユーザーアカウントに代わって任意のコードを実行することが可能です。–enable-server-profiling は、1 人のユーザーがインテル® VTune™ プロファイラー・サーバーにアクセスし、サーバーへのアクセスに使用するパスフレーズを共有していない場合にのみ有効にします。
  • –web-port=PORT コマンドライン・オプションを使用して、インテル® VTune™ プロファイラー・サーバーを特定のポートで実行します。このオプションを使用しない場合、インテル® VTune™ プロファイラーはシステムで利用可能な任意のポートで実行されます。
  • インテル® VTune™ プロファイラー・サーバーは、以下の警告を出力します。

    warn: Server access is limited to localhost only. To enable remote access restart with –allow-remote-access. (警告: サーバーへのアクセスは localhost のみに制限されています。リモートアクセスを有効にするには、–allow-remote-access を指定して再起動してください。)

    上記の使用モデルは SSH ポートフォワードを使用するため、–allow-remote-ui を有効にする必要はありません。インテル® VTune™ プロファイラー・サーバーへの着信接続は SSH サーバーからのものなので、基本的には localhost 接続です。

    –allow-remote-access を有効にすると、インテル® VTune™ プロファイラー・サーバーは実際のネットワーク・カードの IP アドレスまたは FQDN 名を含む URL を構築しますが、クライアント・マシンからはアクセスできない場合があります。

  • デフォルトでは、インテル® VTune™ プロファイラー・サーバーはプロファイル結果をホーム・ディレクトリーに保存します。–data-directory コマンドライン引数を使用して、別のデータ・ディレクトリーを指定できます。また、この引数を使用して、インテル® VTune™ プロファイラー・サーバーで事前に収集されたインテル® VTune™ プロファイラーの結果を開くこともできます。インテル® VTune™ プロファイラーは、任意の子フォルダーに配置された結果を見つけることができます。

関連情報

ウェブ・サーバー・インターフェイス
インテル® VTune™ プロファイラー・サーバーの使用モデル
インテル® デベロッパー・クラウド (英語)
インテル® VTune™ プロファイラーで解析を実行する
インテル® VTune™ プロファイラーのコマンドライン・インターフェイス


製品および性能に関する情報

1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。

タイトルとURLをコピーしました