我应该如何设计GLSL着色器以在Crossfire / SLI上运行

How should I design GLSL shader to run on crossfire / SLI

本文关键字:Crossfire SLI 运行 GLSL 我应该      更新时间:2023-10-16

如果我用GLSL编写可视化器,我该如何保证它会利用更多的GPU?开箱即用,它仅在一个上工作,该软件的哪种步骤/设计将允许像素着色器在多个卡上并行运行?

从贾罗德(Jarrod设置问题。

在AFR模式下,驱动程序将整个帧发送到一个GPU,并将其他帧发送到另一个GPU。这非常适合您对最大化帧速率最大化的游戏和动画,并且不太关心框架延迟。以这种方式使用GPU,您几乎可以为SLI提供几乎2倍的FPS加速。但是,如果您只是绘制一个帧(似乎从您的评论中是这种情况),它将仅使用一个GPU。

在SFR模式下,驱动程序将分开每个帧并在每个GPU上渲染每个帧的一部分。这种模式的问题在于,两种GPU都需要为每个帧进行所有设置,因此您将无法获得2倍的速度。实际上,几乎唯一要加速的是碎片着色器(因为每个GPU都会运行一半的片段),因此,如果只有50%的(单个GPU)渲染时间是片段着色器,那么您只会得到(在最好)加速33%。您可能会少得多,因为拆分可能会失衡(因此,一个GPU最终以大多数片段结束)。

由于SFR通常较慢,AFR往往是默认值。您可以通过控制面板控制AFR与SFR。

GLSL所需的零步。SLI/Crossfire驱动程序会为您划分在GPU上的工作量。NVIDIA环绕和AMD Eyefinity相同:就着色器而言,它只是一个更大的渲染目标。

请参阅nvidia:sli in OpenGL中的这些幻灯片,尤其是幻灯片"干扰sli的事物"。

您想确保正确设置渲染循环(即称为SwapBuffers),并且至少要在AFR模式SLI中进行双重缓冲。