我一直在阅读异构计算,并遇到了SPIR-V.在那里我发现了以下内容:
SPIR-V是第一个开放标准,跨API的中间语言,用于本地表示并行计算和图形.
从这张图中我可以看到所有高级语言,如GLSL,HLSL,OpenCL C等,都被编译成SPIR-V,并以这种方式传递给正确的物理设备进行执行.
我的问题是为什么我们需要将着色器/内核代码编译为SPIR-V而不是将其直接编译成将由所选物理设备执行的机器指令?如果这个问题不正确,请解释为什么我们需要SPIR-V?
opengl opencl vulkan spir-v
opencl ×1
opengl ×1
spir-v ×1
vulkan ×1