Quote:Shall we solve this riddle now?
As we know, for Maxwell cards, the OS will apply CPU side cooperative scheduling to merge the command buffers submitted to multiple software queues into a single one for submission to the GPU.
When we compare async on and off, the application essentially does the same, respectively the developer did manually when designing the application. With async off, all the work gets queued into the same queue.
With async on, and the OS performing the scheduling, we can run into two different cases though:
- The OS queues the command buffers in the precise same order as the developer would had.
- The OS finds a different valid order for the command buffers, so the execution order differs.
I suspect what we see, whenever Maxwell suffers from async on, is actually the second case. The OS made a bad choice when scheduling, and induced some type of stall / wait on barrier / memory transfer which would have been hidden with the hand tuned schedule the developer specified in the case of async off.
When the OS doesn't stumble, it's either a sign that the order of execution didn't matter (no additional stalls induced), or that the OS coincidentally came to the very same schedule as the the application would have had.
All of this obviously assumes that when you tell an application not to use async, that it won't perform additional optimizations internally instead (such as e.g. eliminating redundant barriers and fences by performing manual, application side state tracking, hence reducing the effective overhead).
For 3DMark at least, no such optimization happens on the application side. So if either a mismatching order is still stall-free, or if the software scheduler chose the same order, you just won't see a difference.
Oh, and why did I say OS? Because the software scheduler is apparently provided by Microsoft, it's NOT part of the driver.
Nvidia can't fix it, or tune it better. It's simply not in their domain. That poor performance is a bug in Windows 10, not in Nvidias driver.
Edited by Ext3h - 7/18/16 at 12:30pm