CUDA Academy · レッスン

cuda-gdb でカーネルをステップ実行

ブレークポイントとスレッドごとの検査

レッスン 1/413 ステップ

「cuda-gdb でカーネルをステップ実行」はCoddyKit上の無料CUDA Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCUDA Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CUDA Academyコースには全4レッスンが含まれています。

cuda-gdbを使う

カーネルが正常に動作しないとき、cuda-gdbを使えば一時停止して内部を確認できます。通常のCPUプログラムでgdbを使うのと同じです。🔍

デバッグ情報付きでビルドする

cuda-gdbにはシンボルが必要です。デバッグ前に-Gを指定してカーネルをコンパイルし、デバイスの完全なデバッグ情報を追加します。

nvcc -g -G vecadd.cu -o vecadd

-Gが重要な理由

-Gフラグを指定すると多くの最適化が無効になり、行番号と変数が正確に保たれます。そのため、デバイスコードを信頼してステップ実行できます。

デバッガーを起動する

バイナリをcuda-gdbに渡してセッションを開始し、runと入力するとデバッガーの制御下で実行できます。

cuda-gdb ./vecadd

カーネルにブレークポイントを設定する

関数名を指定してカーネルの内部にブレークポイントを設定します。スレッドがそこに到達した瞬間に実行が一時停止します。

(cuda-gdb) break vecAddKernel

多数のスレッドを一つずつ停止する

何千ものスレッドがそのブレークポイントに到達する可能性があるため、cuda-gdbは停止して一度に一つのスレッドに焦点を当て、確認できるようにします。

1行ずつステップ実行する

nextを使うと現在の行を実行し、次の行で一時停止できます。カーネルのロジックを一つずつ確認できます。

(cuda-gdb) next

変数を確認する

カーネル内で一時停止している間に、cuda-gdbでローカル変数をprintすると、スレッドが実際に計算した値を確認できます。

(cuda-gdb) print i

対象スレッドを切り替える

cuda threadを使うと特定のスレッドに注目できます。確認したい正確なブロックとレーンを選択します。

(cuda-gdb) cuda block 0 thread 5

組み込みインデックスを読み取る

threadIdxとblockIdxは通常の変数と同じように表示できます。これにより、そのスレッドがどのデータ要素を処理しているかを正確に確認できます。

(cuda-gdb) print threadIdx.x

実行を再開する

確認が終わったらcontinueと入力し、次のブレークポイントまで、またはプログラムが終了するまで実行を再開します。

(cuda-gdb) continue

クイックチェック

cuda-gdb用のデバイスデバッグ情報を追加するコンパイラフラグはどれですか?

まとめ

-Gを指定してコンパイルし、カーネルにブレークポイントを設定し、行をステップ実行し、スレッドを切り替えてインデックスを表示しました。これがcuda-gdbの基本的な流れです。🎉

無料で開始

AI チューターと学ぶ C++ — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「cuda-gdb でカーネルをステップ実行」レッスンは無料ですか?

はい。「cuda-gdb でカーネルをステップ実行」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CUDA Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CUDA Academyコースには全4レッスンが含まれています。

「cuda-gdb でカーネルをステップ実行」で何を学びますか?

ブレークポイントとスレッドごとの検査 ブラウザで直接実行するハンズオンコードでCUDA Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

CUDA Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCUDA Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「cuda-gdb でカーネルをステップ実行」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCUDA Academyレッスンでコードを書いて実行できますか?

はい。すべてのCUDA Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. cuda-gdb でカーネルをステップ実行
  2. memcheck でリークを見つける
  3. racecheck で競合を探す
  4. synccheck で同期エラーを検出
← CUDA Academyに戻る