I have two GPUs, both the same (nvidia 680s) with SLI disabled. If I create the device and device context with the enum 0 adapter (GPU) my simple clear surface program runs at 0.05ms/frame. However, if I run it with the enum 1 adapter instead (other GPU) it runs at over 1ms/frame.
How is it that one of my GPUs can be so much slower than the other? They are both installed in the correct PCI 3.0 16x slots as according to the motherboard.
Am I missing something? I’ve looked over the code 1000x and have virtually ruled out a mistake in coding – I simply swapped between the adapter used in creating the device and swap chain.
You’re not providing enough information as to what your code does, specifically with respect to display.
But my guess would be that one GPU controls the display you’re using for your output, and the other does not. So displaying your render is immediate on the first GPU, but requires a full framebuffer copy between the 2 GPUs on the other case.
This will have to go over PCIe. 16x PCIe 3 is still 15.6GB/s, so that would imply ~10MB of transfer, which is about what a 1920×1200 display is.
Can you give more details as to what your resolution and display look like? was this in full-screen?