萌えハッカーニュースリーダー

2025/10/06 11:57 A case for learning GPU programming with a compute-first mindset – Maister's Gr

出典: https://themaister.net/blog/2025/10/05/a-case-for-learning-gpu-programming-with-a-compute-first-mindset/
hakase
博士

ロボ子、今日はグラフィックスAPIの新しい学習方法について話すのじゃ!

roboko
ロボ子

博士、グラフィックスAPIですか。楽しみです!

hakase
博士

従来のグラフィックスAPIから入るのではなく、コンピュートシェーダから学習を始めるのが新しいアプローチなのじゃ。

roboko
ロボ子

コンピュートシェーダからですか?それはどうしてでしょう?

hakase
博士

GPUプログラミングにおいて、コンピュートシェーダがますます重要になっているからじゃ!

roboko
ロボ子

なるほど。それで、どのAPIが良いのでしょうか?

hakase
博士

CUDAやOpenCLもあるけど、Vulkan Computeがコンピュートに特化したAPIとして最適なのじゃ!

roboko
ロボ子

Vulkan Computeですか。初めて聞きました。

hakase
博士

そして、RenderDocのようなデバッガー/プロファイラーを最初に使うのが大事!GPUでのコード実行を理解するのじゃ。

roboko
ロボ子

デバッガーファーストですね!

hakase
博士

シェーディング言語はVulkan GLSLを推奨するぞ。SPIRV-CrossのGLSLバックエンドを介したシェーダー置換とラウンドトリップに役立つからの。

roboko
ロボ子

バッファデバイスアドレスのサポートもあるんですね。

hakase
博士

そうじゃ!デバッガー中心のアプローチなら、明示的な同期処理は後回しにできるぞ。

roboko
ロボ子

最初のプログラムはLinuxかWindowsでビルド可能で、CMakeビルドで利用できるんですね。

hakase
博士

その通り!RenderDocでVulkanコードをキャプチャして、GPUで実行されるコードを観察するのじゃ。

roboko
ロボ子

シェーダーの実行では、コピーの代わりに独自のmemcpyを作成するんですね。

hakase
博士

shadercを使ってGLSLをCヘッダーファイルにコンパイルするぞ。

roboko
ロボ子

シェーダーの置換ワークフローでは、SPIRV-Crossとデバッグプリントを使うんですね。

hakase
博士

SPIR-Vを同等のGLSLに変換して、コードを修正し、プログラム全体を再コンパイルせずに結果を確認できるのじゃ。

roboko
ロボ子

ISAの検査には、AMD GPUとLinux上のRADVドライバを推奨するんですね。

hakase
博士

Mesaドライバは、グラフィックスカードに関係なくISAを提供してくれるから便利じゃ。

roboko
ロボ子

コンピュートディスパッチの構成について教えてください。

hakase
博士

CPU側で3Dグリッドのワークグループをディスパッチするのじゃ。ワークグループごとに、別の3Dグリッドのインボケーションが存在するぞ。

roboko
ロボ子

ワークグループ内のインボケーションはサブグループに分割されるんですね。

hakase
博士

AMDの特性として、v_命令はベクター命令で、s_命令はスカラー命令じゃ。

roboko
ロボ子

SPIR-Vアセンブリの修正によるシェーダー置換では、OpAccessChainの代わりにOpInBoundsAccessChainを使用するんですね。

hakase
博士

記述子を導入すると、テクスチャの効率的なサンプリング、自動フォーマット変換、"無料"の境界チェックが可能になるのじゃ。

roboko
ロボ子

STORAGE_BUFFERとUNIFORM_TEXEL_BUFFERの2つの記述子タイプを導入するんですね。

hakase
博士

基本的なVulkanバインディングモデルでは、Graniteは古いバインディングモデルを実装しているぞ。シェーダーでlayout(set = 0, binding = 1)のような宣言を使うのじゃ。

roboko
ロボ子

VK_EXT_descriptor_bufferによる深い理解も重要ですね。記述子セットを生のメモリとして扱うことが可能になるんですね。

hakase
博士

ShaderToyシェーダーをコンピュートに移植して、より数学的なグラフィックスを試すこともできるぞ!

roboko
ロボ子

ストレージテクスチャを作成し、シェーダーにバインドするんですね。

hakase
博士

アトミック、共有メモリ、サブグループ操作、テクスチャサンプリングとミップマッピング、メモリコヒーレンシ、API同期などを学習していくのじゃ。

roboko
ロボ子

独自のVulkanコードをスクラッチから作成できるようになりたいです!

hakase
博士

そうじゃ、そうじゃ! 頑張るのじゃ!

roboko
ロボ子

ところで博士、Vulkan Computeをマスターしたら、グラフィックスカードでじゃんけんができるようになりますか?

hakase
博士

もちろんじゃ!ただし、相手がチョキしか出さないバグがあるかもしれんぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search