Preemption Context Switching Allegedly Best on AMD, Pretty Good on Intel & Potentially Catastrophic on NVIDIA
Recently, NVIDIA has been under a lot of pressure after the results of the first DirectX 12 benchmark clearly favored AMD. There have been reports that NVIDIA's existing GPU architecture has problems with Async Compute, though our own Usman cleared up that it is indeed possible to use it.
Now, another report seems to condemn NVIDIA's choices for Maxwell. Tech Report's David Kanter said in a video podcast that people who work at Oculus have mentioned how preemption context switching, a very important feature especially in VR scenarios, can be really bad on NVIDIA cards.
I've been told by folks at Oculus that the preemption context switching is, and this is prior to the Skylake gen 8 architecture which has better preemption, but the best preemption context switching was with AMD by far. Intel was pretty good, and NVIDIA was possibly catastrophic.
The real issue is, if you have a shader running, a graphics shader, you need to let it finish. And it could take you a long time, it could take you over 16ms.
NVIDIA is very, to their credit they're open and honest about this and how you tune for Oculus Rift. You have to be super careful because you can miss a frame boundary because the preemption is not particularly well latency. And again, it's not like this is a bad decision on the part of NVIDIA, it's you know, that's just what made sense. Preemption isn't something that was super important when the chip was designed and the API support was, there wasn't much bang for your buck. Now, I'm sure they will improve it for Pascal, NVIDIA is full of good, sharp architects and they'll probably fix it in Pascal.
AMD cards exploit their great Async Compute support here, once again. It's not all doom & gloom for NVIDIA, though: first of all, as reported by Khalid, NVIDIA is already working to implement Async Compute in Ashes of the Singularity. If they manage to do it in a beneficial way for performance, it seems likely that they'll use it for other applications too, such as countering the latency of preemption context switching.
Moreover, earlier in that same podcast David Kanter replied as follows on the larger Async Compute debate:
So obviously AMD is going to get a much bigger benefit from DX12, in part because their drivers were just not as good as NVIDIA's, but look, for every person on the Internet who is really unhappy on the performance of your Titan or 980, shoot me a line and I'll take it off your hands. You can go out and buy a Radeon, but if you think that 980 isn't gonna cut it because it doesn't have Async Compute, send it to me, I'll take care of it and put it in a good home.
His point, clearly conveyed in a sarcastic way, seems to be that while Async Compute is going to be important in the future, it really isn't right now. Currently, NVIDIA cards are faster than AMD's and overall Maxwell is a great architecture that perhaps just isn't as future-proof as Fiji.
Even so, we'll have to run many more tests before this theory becomes a fact, and surely NVIDIA will try to improve this aspect from their end as much as possible.