この記事は、インテル® デベロッパー・ゾーンに公開されている「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 (英語)
- 使用するもの
- 手順
使用するもの
以下は、このレシピで使用するハードウェアとソフトウェアのリストです。
- インテル® デベロッパー・クラウド (英語) へのアクセス
- インテル® VTune™ プロファイラー—インテル® DevCloud for oneAPI を含むほとんどの HPC クラスターにプレインストールされています。
設定の概要
以下のトピックについて説明します。
- インタラクティブに使用する HPC クラスター内のコンピュート・ノードを予約し、インテル® VTune™ プロファイラー・サーバーを起動し、ラップトップでインテル® VTune™ プロファイラーのウェブ GUI を使用して解析を設定し、収集したデータを表示します。
- HPC クラスターでジョブをスケジュールし、インテル® VTune™ プロファイラーのコマンドライン・データ収集でラップし、ジョブが完了したら戻って、インテル® VTune™ プロファイラー・サーバーを実行し、収集結果をラップトップ上のウェブブラウザーで表示します。
いずれの場合も、クライアント・システムに何もインストールする必要はありません。ウェブブラウザーだけあれば、インテル® VTune™ プロファイラーの GUI にアクセスできます。
インテル® VTune™ プロファイラー・サーバーによるインタラクティブなパフォーマンス・プロファイル
このシナリオでは、HPC クラスター内のコンピュート・ノードでインテル® VTune™ プロファイラー・サーバーを実行し、ラップトップ上のウェブブラウザーでインテル® VTune™ プロファイラーの GUI にアクセスします。この使用モデルは、VNC を使用してインテル® VTune™ プロファイラーのデスクトップ GUI を使用する場合とやや似ていますが、セットアップが簡単で、より優れたユーザー体験を提供します。
以下は、この設定を図解したものです。
以下の手順に従って、このワークフローを実行します。
- インテル® DevCloud for oneAPI (英語) にログインします。
- 手順に従って、インテル® DevCloud への SSH 接続を設定します。
- Windows* (英語)
- Linux* および macOS* (英語)
- インテル® DevCloud のログインノードにログインします。
ssh devcloud
- インテル® DevCloud のコンピュート・ノードを予約します。
qsub -I
- インテル® 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™ プロファイラー・サーバーを起動した際に表示されるポート番号は異なります。 - 新しいターミナルウィンドウを開きます。最初のターミナルは閉じないでください。ターミナルを閉じると、インテル® VTune™ プロファイラー・サーバーが停止し、コンピュート・ノードが解放されます。
- SSH ポートフォワードを有効にして、再度インテル® DevCloud のログインノードにログインします。
ssh -L 127.0.0.1:42277:127.0.0.1:42277 devcloud
注:
ポート番号 42277 はステップ 5 で出力された実際のポート番号に変更してください。 - もう 1 つの SSH トンネルでログインノードからコンピュート・ノードへの SSH 接続を確立します。
ssh -L 127.0.0.1:42277:127.0.0.1:42277 s000-n000
注:
s000-n000 は、ステップ 5 でインテル® VTune™ プロファイラー・サーバーが開始されたコンピュート・ノード名に、ポート番号 42277 は、ステップ 5 で出力された実際のポート番号にそれぞれ変更してください。 - ラップトップでインテル® VTune™ プロファイラーのウェブ GUI を開くため、ステップ 5 でインテル® VTune™ プロファイラー・サーバーが出力した URL をラップトップ上のウェブブラウザーに貼り付けます。
- インテル® VTune™ プロファイラー・サーバーの証明書を承認します。
インテル® VTune™ プロファイラーの GUI を開くときに、ウェブブラウザーがインテル® VTune™ プロファイラー・サーバーの自己署名証明書に関する確認メッセージを表示します。SSH トンネルは中間者攻撃 (MitM) から保護されているため、証明書をインストールしなくても安全に作業を進めることができます。トランスポート・セキュリティーの詳細は、「トランスポート・セキュリティーの設定」を参照してください。
- パスフレーズを設定します。
インテル® VTune™ プロファイラー・サーバーを初めて起動したときに出力される URL には、ワンタイムトークンが含まれています。ブラウザーでこの URL を開くと、インテル® VTune™ プロファイラー・サーバーによってパスフレーズの設定を求められます。パスフレーズがないと、ほかのユーザーはインテル® VTune™ プロファイラー・サーバーにアクセスできません。パスフレーズのハッシュはサーバー上のユーザー・ホーム・ディレクトリーに保存されます。また、ブラウザーには安全な HTTP クッキーが保存されるので、インテル® VTune™ プロファイラーのウェブ GUI を開くたびにパスフレーズを入力する必要はありません。
パスフレーズを設定すると、インテル® VTune™ プロファイラーの [Welcome (ようこそ)] 画面が表示されます。
- インテル® VTune™ プロファイラーのウェブ GUI で新しいプロジェクトを作成して解析を設定します。
- [Welcome (ようこそ)] 画面の [New Project… (新規プロジェクト…)] ボタンをクリックします。
- 表示されるダイアログにプロジェクト名を入力します。
インテル® VTune™ プロファイラーは、自動的に [Configure Analysis (解析の設定)] ダイアログを開きます。
デフォルトでは、インテル® VTune™ プロファイラー・サーバーを実行しているコンピュート・ノードがターゲットシステムとして選択されます。
- ターゲット・アプリケーションのパスとコマンドライン引数を設定します。詳細は、「解析ターゲットの設定」を参照してください。
- [Start (開始)] ボタンをクリックして、解析を実行します。
解析が完了すると、インテル® VTune™ プロファイラーは解析結果の [Summary (サマリー)] タブを表示します。
スケジュールされたジョブのプロファイル結果の提供
このシナリオでは、インテル® VTune™ プロファイラーのコマンドライン・インターフェイスを使用して、スケジュールされたジョブのパフォーマンス・データを収集し、クラスター内でインテル® VTune™ プロファイラー・サーバーを実行してこれらの結果を提供し、ラップトップ上のウェブブラウザーで結果にアクセスできるようにします。
以下は、この設定を図解したものです。
以下の手順に従って、このワークフローを実行します。
- インテル® DevCloud for oneAPI (英語) にログインします。
- 手順に従って、インテル® DevCloud への SSH 接続を設定します。
- Windows* (英語)
- Linux* および macOS* (英語)
- インテル® DevCloud のログインノードにログインします。
ssh devcloud
- インテル® 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 は独自のアプリケーションに置き換えることができます。
- ステップ 4 で作成したスクリプトを使用してジョブをスケジュールします。
qsub ./run_with_vtune.sh
- ジョブの完了を待機します。
サンプルの matrix アプリケーションは 1 分程度で完了します。実際の HPC ジョブでは、完了までに数時間かかることもあります。その間、画面の前で待機する必要はありません。ジョブが完了すると、インテル® VTune™ プロファイラーの結果は指定した場所に保存されるので、後で、あるいは翌日に手順を再開できます。
- インタラクティブ・モードでインテル® DevCloud のコンピュート・ノードを予約します。
qsub -I
- インテル® 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™ プロファイラー・サーバーを起動した際に表示されるポート番号は異なります。 - 新しいターミナルウィンドウを開きます。最初のターミナルは閉じないでください。ターミナルを閉じると、インテル® VTune™ プロファイラー・サーバーが停止し、コンピュート・ノードが解放されます。
- SSH ポートフォワードを有効にして、再度インテル® DevCloud のログインノードにログインします。
ssh -L 127.0.0.1:42277:127.0.0.1:42277 devcloud
注:
ポート番号 42277 はステップ 8 で出力された実際のポート番号に変更してください。 - もう 1 つの SSH トンネルでログインノードからコンピュート・ノードへの SSH 接続を確立します。
ssh -L 127.0.0.1:42277:127.0.0.1:42277 s000-n000
注:
s000-n000 は、ステップ 8 でインテル® VTune™ プロファイラー・サーバーが開始されたコンピュート・ノード名に、ポート番号 42277 は、ステップ 8 で出力された実際のポート番号にそれぞれ変更してください。 - ラップトップでインテル® VTune™ プロファイラーの GUI を開くため、ステップ 8 でインテル® VTune™ プロファイラー・サーバーが出力した URL をラップトップ上のウェブブラウザーに貼り付けます。
- インテル® VTune™ プロファイラー・サーバーの証明書を承認します。
インテル® VTune™ プロファイラーの GUI を開くときに、ウェブブラウザーがインテル® VTune™ プロファイラー・サーバーの自己署名証明書に関する確認メッセージを表示します。SSH トンネルは中間者攻撃 (MitM) から保護されているため、証明書をインストールしなくても安全に作業を進めることができます。トランスポート・セキュリティーの詳細は、「トランスポート・セキュリティーの設定」を参照してください。
- パスフレーズを設定します。
インテル® VTune™ プロファイラー・サーバーを初めて起動したときに出力される URL には、ワンタイムトークンが含まれています。ブラウザーでこの URL を開くと、インテル® VTune™ プロファイラー・サーバーによってパスフレーズの設定を求められます。パスフレーズがないと、ほかのユーザーはインテル® VTune™ プロファイラー・サーバーにアクセスできません。パスフレーズのハッシュはサーバー上のユーザー・ホーム・ディレクトリーに保存されます。また、ブラウザーには安全な HTTP クッキーが保存されるので、インテル® VTune™ プロファイラーの GUI を開くたびにパスフレーズを入力する必要はありません。
パスフレーズを設定すると、インテル® VTune™ プロファイラーの [Welcome (ようこそ)] 画面が表示されます。
- スケジュールされたジョブの解析結果を開きます。
[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™ プロファイラーのコマンドライン・インターフェイス
インテル® VTune™ プロファイラー・パフォーマンス解析クックブックのトップに戻る
製品および性能に関する情報
1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。