SLI如何确定哪个VBO属于OpenGL中的哪个GPU?

use*_*089 5 opengl fbo gpu frame-rate sli

我的目标是在AFR模式下使用SLI来增加FPS.我的印象是NVIDIA SLI驱动程序会自动智能地将VBO分配给各个GPU.它是否正确?

我有一个代码,其中包含大量顶点/面,由VAO表示,具有三个不同的VBO(顶点,颜色,索引).使用双GPU和SLI不会增加fps.

我用相同的顶点/面复制VAO和VBO,并在两个VAO之间交替glDrawElements调用,希望NVIDIA SLI驱动程序能够聪明地知道一个VAO用于一个GPU,但遗憾的是仍然没有fps增加.有人能让我知道我做错了什么吗?

我还尝试为其中一个VAO注释掉一个glDrawElements调用,它确实显示了双FPS和闪烁的场景与实际场景和黑屏一样.

Dim*_*kov 1

正如这里提到的,

值得注意的是,虽然帧到达的频率可能加倍,但生成帧的时间并没有减少

此外,我从未听说过专用于某一 GPU 的 VAO 或 VBO。据我所知,两个适配器都有相同的克隆缓冲区。复制发生在您甚至不知道的情况下,并且每个 GPU 使用自己的副本来生成其帧的一部分。我可能是错的,但我对此表示怀疑。

这就是为什么如果您有 2x2 GB VRAM 适配器,则无法获得 4GB VRAM 的原因。您仍在使用 2 GB。另外,如果您的 SLI 适配器容量不同,则较大卡的内存会降低以与较小的卡保持一致。您获得的所有性能提升都来自两个 GPU 的并行处理能力,以及内存带宽的两倍。据我所知,内存写入是硬件多播的,因此没有太大的开销。

编辑: 阅读有关 SFR 和 AFR 的这些有趣的观点。事实证明,AFR 建议用于重顶点负载,而 SFR 更适合像素着色器负载。即使对我来说,这也是一个有趣的发现。使用 AFR 时,您还应该确保双缓冲以充分利用它。缺乏多个缓冲区实际上会杀死 AFR。关闭你的垂直同步——它也会杀死它!