Vulkan 計算シェーダーのセットに特定のアルゴリズムを実装することに興味があります。アルゴリズムは、ある時点で clz() 関数を使用します。私の NVIDIA GPU は、おそらくこの機能のハードウェア サポートを提供していると思います。CUDA はどうやら clz 命令を使用しており、clz() は OpenCL 1.2 にも含まれています。だから私は自分の clz() を書きたくありません。CUDA や OpenCL のように関数を呼び出す方法はありますか?
OpenCL カーネルを SPIR-V にコンパイルして、それを Vulkan で使用することもできると思いますが、Vulkan はそれについてあまり満足しないと思います...?
私が考えたもう 1 つの考えは、clz() 呼び出しを含む非常に単純な OpenCL カーネルを SPIR-V アセンブリに変換し、GLSL シェーダーで同じことを行い、表示される clz() 呼び出しを手動でハックできるのではないかということです。カーネル アセンブリ コードで、シェーダーのアセンブリ コードに。しかし、SPIR-V の詳細や、計算シェーダーが使用する可能性のある SPIR-V 命令の種類に Vulkan が課す可能性のある制限については、実際には何も知らないので、それが実際に機能するかどうかについてはほとんどわかりません.