似乎在某个时间点,Nvidia 有一个扩展允许OpenGL 1.1的半浮点值,但显然从那时起*世界一半已在某个时候被现代 GLSL 规范回收。
今天我可以在 CUDA 中使用 16 位浮点值没问题,NVIDIA 支持 16 位浮点数的硬件应该没有问题,而且它们似乎在 HLSL 中支持它们,甚至在 HLSL 交叉编译中支持它们似乎是矛盾的SPIR-V 而 GLSL 不适用于 Nvidia。似乎 SPIR-V 具有支持 16 位浮点所需的所有原语,无论使用主扩展(KHR),因此似乎没有理由禁止我使用它们。
我不确定为什么,尽管有 Nvidia 卡,但我不能利用 16 位浮点运算,而且如果我想利用它,显然被迫使用 AMD或完全切换 API。肯定有某种方法可以为两者实际使用真正的 16 位浮点值吗?
我不是在询问主机到设备分配的缓冲区(IE 顶点缓冲区)。是的,您可以将它们分配为带有 KHR 扩展的 16 位浮点数,并且没有太大问题,但在实际着色器中,使用 16 位浮点数,而不是强制转换为 32 位浮点数的 16 位浮点数是我担心的。