【问题标题】:Do compute shaders in OpenGl have instruction limits?OpenGL 中的计算着色器有指令限制吗?
【发布时间】:2017-07-01 05:05:27
【问题描述】:

我四处寻找,找不到明确的答案

顶点和片段着色器实际上对着色器的最大大小和指令数量有限制,但我从未听说过计算着色器的这些限制

由于我需要使用许多不同的 BRDF 移植现有的 CPU 路径跟踪器,因此我需要提前知道这是否会成为问题并转移到 CUDA,或者 OpenGL 的计算着色器是否可以很好地处理这项工作

【问题讨论】:

    标签: opengl graphics


    【解决方案1】:

    总是有限制的。但是这些限制是实现定义的;它们没有以任何先验可确定的方式表达。因此,您找出它们是什么的唯一方法就是穿过它们。

    CUDA 也有限制。

    【讨论】:

    • 如果我错了,请纠正我,但我记得 CUDA 有多达 200 万个可能的指令,而顶点着色器的最小保证数可能短至 512,是不是有区别数量级?与顶点着色器相比,CUDA 和计算着色器在指令限制上绝对没有区别吗?
    • Shader Model 3 要求顶点和片段着色器至少有 512 条指令,但这是在 2004 年引入的(Geforce 6 系列)。在Shader Model 4(2006,Geforce 8 系列)中,该限制已被取消为无限数量的指令。我猜周围可能没有多少 10 年前的显卡。
    • @RowRebel:除了 BDL 所说的,什么是“指令”?一段特定的 GLSL 需要多少条指令?甚至 SPIR-V 也不会将 1:1 与 GPU 指令相关联。您只能在依赖于实现的硬件方面指定限制,而 CUDA 仅适用于 NVIDIA(因此可以指定 GPU 指令限制),而 OpenGL 是平台中立的。并且没有办法合理地指定限制,同时仍然是平台中立的。不在现代硬件上。
    • 感谢大家的澄清,我不知道SM4中不再有限制
    猜你喜欢
    • 1970-01-01
    • 2018-05-07
    • 2020-02-23
    • 1970-01-01
    • 2020-11-22
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多