首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设计GLSL着色器以在crossfire / SLI上运行

如何设计GLSL着色器以在crossfire / SLI上运行
EN

Stack Overflow用户
提问于 2012-10-25 23:21:41
回答 2查看 1.4K关注 0票数 4

如果我正在用glsl写一个可视化工具,我怎么保证它会利用更多的gpu呢?开箱即用,它只能在一个上工作,软件的哪种步骤/设计将允许像素着色器在多个卡上并行运行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-26 02:17:32

从Jarrod的回答中的评论来看,你遇到的“问题”是AFR模式(交替帧渲染)与SFR模式(拆分帧渲染),这是一个驱动模式设置问题。

在AFR模式下,驱动程序将每个完整帧发送到单个GPU,并将交替帧发送到另一个GPU。这对于游戏和动画来说是很棒的,在这些游戏和动画中,你最感兴趣的是最大化帧速率,而不是太关心帧延迟。以这种方式使用GPU可以为SLI提供几乎2倍的fps加速,只需很少的工作。但是如果你只绘制一个帧(就像你的评论中的情况一样),它将只使用一个GPU。

在SFR模式下,驱动程序将拆分每个帧,并在每个GPU上渲染每个帧的一部分。这种模式的问题是,两个GPU都需要为每一帧做所有的设置,所以你不会得到2倍的加速。事实上,唯一可以加速的就是碎片着色器(因为每个GPU都会运行一半的碎片),所以如果你的(单个GPU)渲染时间中只有50%是碎片着色器,那么你(最多)只能得到33%的加速。你可能会得到更少,因为分割可能是不平衡的(因此一个GPU最终得到了大部分碎片)。

由于SFR通常较慢,因此AFR往往是默认设置。您可以通过控制面板控制AFR和SFR。

票数 3
EN

Stack Overflow用户

发布于 2012-10-25 23:50:42

GLSL中所需的步骤为零。SLI/crossfire驱动程序负责跨GPU分配工作负载。同样适用于nVidia环绕和AMD Eyefinity:就着色器而言,它只是一个更大的渲染目标。

请参阅nVidia:SLI in OpenGL的这些幻灯片,特别是“干扰SLI的事情”的幻灯片。

你想要确保你的渲染循环被正确设置(例如,调用了SwapBuffers ),并且你至少为AFR模式SLI设置了双缓冲。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13071882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档