我的目标是在AFR模式下使用SLI来增加FPS。我的印象是NVIDIA SLI驱动程序会自动智能地将VBO分配给各个GPU。这是对的吗?
我有一个代码,它有大量的顶点/面,由VAO表示,有三个不同的VBO(顶点,颜色,索引)。使用双GPU和SLI不会增加fps。
我用相同的顶点/面复制VAO和VBO,并在两个VAO之间交替glDrawElements调用,希望NVIDIA SLI驱动程序能够聪明地知道一个VAO用于一个GPU,但遗憾的是仍然没有fps增加。有人能让我知道我做错了吗?
我还尝试为其中一个VAO注释掉一个glDrawElements调用,它确实显示了双FPS和闪烁的场景与实际场景和黑屏预期。
答案 0 :(得分:1)
如上所述here,
值得注意的是,虽然帧到达的频率可能是 加倍,生产框架的时间不会减少
此外,我从未听说过专用于一个GPU的VAO或VBO。据我所知,两个适配器都有相同的克隆缓冲区。重复发生在你甚至不知道它的情况下,并且每个GPU使用它自己的副本来产生它的部分帧。我可能错了,但我对此表示怀疑。
这就是为什么如果你有2x2 GB VRAM适配器,你就得不到4GB VRAM。您仍在使用2 GB。此外,如果您的SLI适配器具有不同的容量,则较大的卡的内存将降低以与较小的卡对齐。您获得的所有性能提升来自两个GPU的并行处理能力,以及您的内存带宽是其两倍的事实。据我所知,内存写入是硬件多播的,所以没有大的开销。
编辑: Read these interesting points about SFR and AFR。事实证明,AFR建议用于重顶点负载,而SFR更适合像素着色器负载。即使对我来说,这也是一个有趣的发现。使用AFR时,您还应该确保双重缓冲以充分利用它。缺少多个缓冲区确实会导致AFR死亡。关闭你的vsync - 它也会杀掉它!