Linux* OS ホストで GDB* 向けインテル® ディストリビューションを開始する

アプリケーションのデバッグにインテル® Distribution for GDB* の使用を開始します。 以下の手順に従って、CPU および GPU デバイスにオフロードされたカーネルを使用してアプリケーションをデバッグするようにデバッガーをセットアップします。

Intel® Distribution for GDB* は、Intel® oneAPI Base Toolkit の一部として利用できます。 oneAPI ツールキットの詳細については、 製品ページ.

訪問する リリースノート 主な機能、新機能、および既知の問題に関する情報のページ。

SYCL* を使用できますampインテル® ディストリビューション for GDB* の使用を開始するには、ファイル・コード、Array Transform を使用してください。 sampファイルはエラーを生成せず、単にデバッガー機能を示しています。 このコードは、偶数か奇数かに応じて入力配列の要素を処理し、出力配列を生成します。 s を使用できます。ampコマンドライン引数で選択したデバイスを指定して、CPU または GPU の両方でデバッグするファイル。 ただし、GPU デバッグには、リモート デバッグ用に XNUMX つのシステムと追加の構成が必要になる場合があることに注意してください。

前提条件

GPU でデバッグする場合は、最新の GPU ドライバーをインストールし、それらを使用するようにシステムを構成します。 を参照してください。 Linux* OS 向けインテル® oneAPI ツールキットのインストール・ガイド。 指示に従ってください Intel GPU ドライバーのインストール システムに一致する GPU ドライバーをインストールします。

さらに、Intel® Distribution for GDB* を使用して GPU をデバッグするための Visual Studio Code* の拡張機能をインストールできます。 を参照してください。 インテル® oneAPI ツールキット ガイドで Visual Studio Code を使用する.

GPU デバッガーのセットアップ

GPU デバッガーをセットアップするには、root アクセス権が必要です。


注記 カーネルのデバッグ中、GPU は停止し、ビデオ出力はターゲット マシンで利用できません。 このため、システムの GPU カードがグラフィック出力にも使用されている場合、ターゲット システムから GPU をデバッグすることはできません。 この場合、ssh 経由でマシンに接続します。


1. GPU でデバッグする場合は、GPU デバッグをサポートする Linux カーネルが必要です。

a. の指示に従ってください 汎用 GPU 機能向けインテル® ソフトウェア 必要なドライバーをダウンロードしてインストールします。
b. カーネルで i915 デバッグ サポートを有効にします。

a. ターミナルを開きます。
b. グラブを開く file /etc/default にあります。
c. グラブで file、行 GRUB_CMDLINE_LINUX_DEFAULT="" を見つけます。
d. 引用符 ("") の間に次のテキストを入力します。

i915.debug_eu=1


注記 デフォルトでは、GPU ドライバーはワークロードが特定の時間を超えて GPU で実行されることを許可しません。 ドライバーは、ハングを防ぐために GPU をリセットすることで、このような長時間実行されるワークロードを強制終了します。 アプリケーションがデバッガーで実行されている場合、ドライバーのハングチェック メカニズムは無効になります。 デバッガーを接続せずに長時間のコンピューティング ワークロードを実行する予定がある場合は、適用を検討してください。 GPU: ハングチェックを無効にする 追加することで

i915.enable_hangcheck=0

同じに GRUB_CMDLINE_LINUX_DEFAULT 行。

c. これらの変更を有効にするために GRUB を更新します。

sudo アップデート-grub

d. リブート。

2. ツールキット インストールのルートにある setvars スクリプトを入手して、CLI 環境をセットアップします。

Linux (sudo):

ソース/opt/intel/oneapi/setvars.sh

Linux (ユーザー):

ソース ~/intel/oneapi/setvars.sh

3. セットアップ環境
次の環境変数を使用して、インテル® oneAPI レベル ゼロのデバッガー サポートを有効にします。

ZET_ENABLE_PROGRAM_DEBUGGING=1 のエクスポート
import IGC_EnableGTLocationDebugging=1

4. システムチェック
すべての準備が整ったら、次のコマンドを実行して、システム構成が信頼できるものであることを確認してください。

python3 /path/to/intel/oneapi/diagnostics/latest/diagnostics.py –filter debugger_sys_check -force

適切に構成されたシステムの可能な出力は次のとおりです。


チェック結果:
================================================= ===============================
チェック名: debugger_sys_check
説明: このチェックは、環境が gdb (Intel(R) Distribution for GDB*) を使用する準備ができているかどうかを確認します。
結果ステータス:PASS
デバッガーが見つかりました。
libipt が見つかりました。
リビガ発見。
i915 デバッグが有効になっています。
環境変数が正しい。 ================================================== ================================

1 回のチェック: 1 回の合格、0 回の不合格、0 回の警告、0 回のエラー

コンソール出力 file: /path/to/logs/diagnostics_filter_debugger_sys_check_force.txt JSON 出力 file: /path/to/diagnostics/logs/diagnostics_filter_debugger_sys_check_force.json …

デバッグ情報を使用してプログラムをコンパイルする

s を使用できます。ampファイル プロジェクト、Array Transform を使用して、アプリケーション デバッガーをすぐに使い始めることができます。

1. s を取得するにはamp次のいずれかの方法を選択します。

2. s の src に移動しますampleプロジェクト:

cd 配列変換/src

3. デバッグ情報を有効にし (-g フラグ)、最適化をオフにして (-O0 フラグ)、アプリケーションをコンパイルします。
安定した正確なデバッグ環境のために、最適化を無効にすることをお勧めします。 これにより、コンパイラの最適化後にコードが変更されたことによる混乱を避けることができます。


注記 最適化を有効にして (-O2 フラグ) プログラムをコンパイルすることもできます。これは、GPU アセンブリのデバッグを目的とする場合に役立ちます。


プログラムはいくつかの方法でコンパイルできます。 オプション 1 と 2 では、ジャストインタイム (JIT) コンパイルを使用します。ampル。 オプション 3 は事前 (AOT) コンパイルを使用します。

  • オプション 1. CMake を使用できます file アプリケーションを構成および構築します。 を参照してください。 README のamp手順については le を参照してください。

注記 CMake file に付属ample はすでに -g -O0 フラグを渡しています。


  • オプション 2. array-transform.cpp をコンパイルするにはampCMake を使用しないファイル アプリケーション fileで、次のコマンドを発行します。

icpx -fsycl -g -O0 配列変換.cpp -o 配列変換

コンパイルとリンクを別々に行う場合は、リンク ステップで -g -O0 フラグを保持します。 リンク ステップは、実行時に icpx がこれらのフラグをデバイス コンパイラに渡すように変換するときです。 元amp上:

icpx -fsycl -g -O0 -c 配列変換.cpp
icpx -fsycl -g -O0 配列変換.o -o 配列変換

  • オプション 3. AOT コンパイルを使用して、実行時の JIT コンパイル時間が長くならないようにすることができます。 JIT コンパイルは、デバッガーでの大規模なカーネルの場合、非常に長い時間がかかる場合があります。 Ahead-of-Time コンパイル モードを使用するには:

• GPU でのデバッグの場合:
プログラムの実行に使用するデバイスを指定します。 例えばample, -device dg2-g10 (インテル® データセンター GPU Flex 140 グラフィックス用)。 サポートされているオプションのリストと AOT コンパイルの詳細については、 インテル® oneAPI DPC++ コンパイラー開発者ガイドおよびリファレンス.
例えばamp上:

icpx -fsycl -g -O0 -fsycl-targets=spir64_gen -Xs “-device dg2-g10” array-transform.cpp -o arraytransform

事前コンパイルには、OpenCLTM Offline Compiler (OC Compiler LOC) が必要です。 詳細については、 インストールガイド.

• CPU でのデバッグの場合:

icpx -fsycl -g -O0 -fsycl-targets=spir64_x86_64 配列変換.cpp -o 配列変換

デバッグ セッションを開始する

デバッグ セッションを開始します。

1. 次のように GDB* 向けインテル® ディストリビューションを開始します。

gdb-oneapi 配列変換

(gdb) プロンプトが表示されます。

2. カーネルが適切なデバイスにオフロードされていることを確認するには、次の手順を実行します。 (gdb) プロンプトから run コマンドを実行するときは、 CPU, グラフィックス or アクセル 口論:

  • CPU でのデバッグの場合:

実行CPU

Exampファイル出力:

[SYCL] 使用デバイス: [Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz] from [Intel(R) OpenCL]
  • GPU でのデバッグの場合:

GPUを実行

Exampファイル出力:

[SYCL] 使用デバイス: [Intel(R) Data Center GPU Flex Series 140 [0x56c1]] from [Intel(R) LevelZero]
  • FPGA エミュレータでのデバッグの場合:

加速器を走らせる

Exampファイル出力:

[SYCL] デバイスの使用: [Intel(R) FPGA Emulation Platform for OpenCL(TM) software] の [Intel(R) FPGA Emulation Device]

注記 cpu、gpu、およびアクセラレーターのパラメーターは、Array Transform アプリケーションに固有のものです。


3. Intel® Distribution for GDB* を終了するには:

やめる

便宜上、GDB* コマンド用の一般的なインテル® ディストリビューションが提供されています。 参照シート.

Array Transform をデバッグするにはampファイルを参照して GDB* 向けインテル® ディストリビューションの詳細を確認し、 チュートリアル.

もっと詳しく知る
書類 説明
チュートリアル: インテル® Distribution for GDB* を使用したデバッグ このドキュメントでは、インテル® Distribution for GDB* を使用して SYCL* および OpenCL* をデバッグする際に従うべき基本的なシナリオについて説明します。
GDB* 向けインテル® ディストリビューション ユーザーガイド このドキュメントでは、インテル® Distribution for GDB* で実行できるすべての一般的なタスクについて説明し、必要な技術的な詳細を提供します。
GDB* 向けインテル® ディストリビューション* リリースノート メモには、GDB* 向けインテル® ディストリビューションの主要な機能、新機能、および既知の問題に関する情報が含まれています。
oneAPI 製品ページ このページには、oneAPI ツールキットの簡単な紹介と、役立つリソースへのリンクが含まれています。
GDB 向けインテル® ディストリビューション* リファレンス・シート この XNUMX ページのドキュメントでは、Intel® Distribution for GDB* の前提条件と便利なコマンドについて簡単に説明しています。
ヤコビ Sample この小さな SYCL* アプリケーションには、バグのあるものと修正済みの XNUMX つのバージョンがあります。 を使用するampインテル® Distribution for GDB* でアプリケーションのデバッグを実行するためのファイル。
通知と免責事項

インテルのテクノロジーでは、有効なハードウェア、ソフトウェア、またはサービスのアクティベーションが必要になる場合があります。

絶対に安全な製品やコンポーネントはありません。

費用と結果は異なる場合があります。

© インテル コーポレーション。 Intel、Intel ロゴ、およびその他の Intel マークは、Intel Corporation またはその子会社の商標です。 他の名前およびブランドは、他者の所有物であると主張される場合があります。

この文書によって、いかなる知的財産権に対するライセンス(明示的または黙示的、禁反言またはその他の方法による)も付与されることはありません。

記載されている製品には、エラッタと呼ばれる設計上の欠陥やエラーが含まれている可能性があり、製品が公表されている仕様から逸脱する可能性があります。現在特徴付けられているエラッタは、リクエストに応じて入手できます。

インテルは、商品性、特定の目的への適合性、および非侵害の黙示の保証、および履行過程、取引過程、または商取引での使用から生じる保証を含むがこれらに限定されない、すべての明示的および黙示的保証を否認します。

OpenCL および OpenCL ロゴは Apple Inc. の商標であり、Khronos の許可を得て使用されています。

ドキュメント / リソース

Linux OS ホスト上の GDB の intel ディストリビューション [pdf] ユーザーガイド
Linux OS ホスト上の GDB、Linux OS ホスト上の GDB、Linux OS ホスト、OS ホスト、ホストのディストリビューション

参考文献

コメントを残す

あなたのメールアドレスは公開されません。 必須項目はマークされています *