我有興趣在一組Vulkan計算着色器中實現特定的算法。該算法在一個點上使用clz()函數。我期望我的NVIDIA GPU可能爲此功能提供硬件支持;顯然CUDA使用clz指令,並且clz()也在OpenCL 1.2中。所以我不想寫我自己的clz()。我有沒有辦法以CUDA或OpenCL的方式調用函數?有沒有辦法在Vulkan計算着色器中使用clz()?
我想我可以嘗試將OpenCL內核編譯爲SPIR-V並在Vulkan中使用它,但是我不認爲Vulkan會對此感到高興......?
我的另一個想法是,也許我可以將包含clz()調用的非常簡單的OpenCL內核翻譯爲SPIR-V程序集,對我的GLSL着色器執行相同操作,然後手動破解clz()調用,因爲它在內核彙編代碼中出現在着色器的彙編代碼中。但是我對SPIR-V的細節,或者Vulkan可能放在計算着色器可能使用的SPIR-V指令的限制上的任何限制都沒有真正瞭解,所以我幾乎沒有任何關於這是否可行的想法。
進一步研究後,請注意更新後的答案。 –