This site may earn affiliate commissions from the links on this page. Terms of utilize.

Always since DirectX 12 was announced, AMD and Nvidia have jockeyed for position regarding which of them would offer amend back up for the new API and its various features. 1 capability that AMD has talked upwards extensively is GCN'due south support for asynchronous compute. Asynchronous compute allows all GPUs based on AMD's GCN architecture to perform graphics and compute workloads simultaneously. Last week, an Oxide Games employee reported that contrary to general belief, Nvidia hardware couldn't perform asynchronous computing and that the functioning touch of attempting to do so was disastrous on the company'southward hardware.

This announcement kicked off a flurry of research into what Nvidia hardware did and did non support, as well as anecdotal claims that people would (or already did) return their GTX 980 Ti's based on Ashes of the Singularity performance. Nosotros've spent the concluding few days in chat with various sources working on the problem, including Mahigan and CrazyElf at Overclock.cyberspace, every bit well as parsing through diverse data sets and functioning reports. Nvidia has not responded to our asking for clarification every bit of yet, but hither's the state of affairs as we currently understand it.

Nvidia, AMD, and asynchronous compute

When AMD and Nvidia talk nigh supporting asynchronous compute, they aren't talking about the same hardware capability. The Asynchronous Control Engines in AMD's GPUs (betwixt 2-eight depending on which card you own) are capable of executing new workloads at latencies as low equally a single wheel. A high-terminate AMD carte du jour has eight ACEs and each ACE has eight queues. Maxwell, in dissimilarity, has two pipelines, 1 of which is a loftier-priority graphics pipeline. The other has a a queue depth of 31 — simply Nvidia can't switch contexts anywhere near as quickly equally AMD tin.

NV-Preemption

According to a talk given at GDC 2022, in that location are restrictions on Nvidia'due south preeemption capabilities. Additional text below the slide explains that "the GPU tin can only switch contexts at draw call boundaries" and "On future GPUs, we're working to enable finer-grained preemption, but that's still a long way off." To explore the various capabilities of Maxwell and GCN, users at Beyond3D and Overclock.net take used an asynchronous compute tests that evaluated the capability on both AMD and Nvidia hardware. The criterion has been revised multiple times over the week, so early results aren't comparable to the data we've seen in afterward runs.

Note that this is a test of asynchronous compute latency, not performance. This doesn't exam overall throughput — in other words, just how long it takes to execute — and the examination is designed to demonstrate if asynchronous compute is occurring or not. Because this is a latency test, lower numbers (closer to the yellow "1" line) hateful the results are closer to ideal.

Radeon R9 290

Here'south the R9 290'due south performance. The yellowish line is perfection — that's what we'd get if the GPU switched and executed instantaneously. The y-axis of the graph shows normalized performance to 1x, which is where we'd expect perfect asynchronous latency to exist. The cherry line is what we are most interested in. It shows GCN performing about ideally in the majority of cases, holding functioning steady even as thread counts rising. Now, compare this to Nvidia's GTX 980 Ti.

vevF50L

Attempting to execute graphics and compute concurrently on the GTX 980 Ti causes dips and spikes in operation and little in the way of gains. Right now, there are only a few thread counts where Nvidia matches ideal performance (latency, in this example) and many cases where information technology doesn't. Farther investigation has indicated that Nvidia's asynch pipeline appears to lean on the CPU for some of its initial steps, whereas AMD's GCN handles the chore in hardware.

Right now, the all-time available show suggests that when AMD and Nvidia talk about asynchronous compute, they are talking about ii very dissimilar capabilities. "Asynchronous compute," in fact, isn't necessarily the all-time name for what'south happening here. The question is whether or not Nvidia GPUs tin run graphics and compute workloads meantime . AMD tin, courtesy of its ACE units.

It'south been suggested that AMD's approach is more like Hyper-Threading, which allows the GPU to work on disparate compute and graphics workloads simultaneously without a loss of performance, whereas Nvidia may be leaning on the CPU for some of its initial setup steps and attempting to schedule simultaneous compute + graphics workload for ideal execution. Patently that procedure isn't working well all the same. Since our initial article, Oxide has since stated the following:

"Nosotros actually just chatted with Nvidia about Async Compute, indeed the commuter hasn't fully implemented it yet, but it appeared like it was. We are working closely with them as they fully implement Async Compute."

Here's what that probable means, given Nvidia's own presentations at GDC and the various test benchmarks that have been assembled over the by week. Maxwell does not take a GCN-style configuration of asynchronous compute engines and it cannot switch between graphics and compute workloads equally chop-chop as GCN. Co-ordinate to Beyond3D user Ext3h:

"At that place were claims originally, that Nvidia GPUs wouldn't fifty-fifty be able to execute async compute shaders in an async fashion at all, this myth was quickly debunked. What go clear, nevertheless, is that Nvidia GPUs preferred a much lighter load than AMD cards. At small loads, Nvidia GPUs would run circles around AMD cards. At loftier load, well, quite the contrary, up to the signal where Nvidia GPUs took such a long time to procedure the workload that they triggered safeguards in Windows. Which caused Windows to pull the trigger and impale the driver, assuming that it got stuck.

"Final result (for at present): AMD GPUs are capable of handling a much higher load. About 10x times what Nvidia GPUs can handle. Only they besides need also most 4x the pressure applied before they go to play out in that location capabilities."

Ext3h goes on to say that preemption in Nvidia's case is merely used when switching between graphics contexts (1x graphics + 31 compute mode) and "pure compute context," but claims that this functionality is "utterly broken" on Nvidia cards at present. He also states that while Maxwell ii (GTX 900 family unit) is capable of parallel execution, "The hardware doesn't turn a profit from it much though, since it has but little 'gaps' in the shader utilization either mode. So in the terminate, it'due south still merely sequential execution for most workload, fifty-fifty though if you did manage to stall the pipeline in some manner past constructing an unfortunate workload, you could even so profit from it."

Nvidia, meanwhile, has represented to Oxide that it can implement asynchronous compute, nonetheless, and that this capability was not fully enabled in drivers. Similar Oxide, we're going to expect and see how the situation develops. The assay thread at Beyond3D makes it very articulate that this is an incredibly complex question, and much of what Nvidia and Maxwell may or may not be doing is unclear.

Before, we mentioned that AMD'southward approach to asynchronous computing superficially resembled Hyper-Threading. There'southward another way in which that analogy may prove accurate: When Hyper-Threading debuted, many AMD fans asked why Team Red hadn't copied the feature to boost performance on K7 and K8. AMD's response at the time was that the K7 and K8 processors had much shorter pipelines and very different architectures, and were intrinsically less likely to benefit from Hyper-Threading as a event. The P4, in contrast, had a long pipeline and a relatively high stall charge per unit. If one thread stalled, HT allowed another thread to continue executing, which boosted the chip'south overall functioning.

GCN-style asynchronous computing is unlikely to boost Maxwell performance, in other words, because Maxwell isn't really designed for these kinds of workloads. Whether Nvidia can work effectually that limitation (or implement something even faster) remains to be seen.

  • i of two