Ashes of the Singularity Beta Phase 2 DirectX 12 Performance Review
DirectX 12 Features - Asynchronous Compute and Explicit Multi-GPU
Published: 23rd February 2016 | Source: OC3D | Price: |
DirectX 12 Features - Asynchronous Compute and Multi-GPU
Ashes of the Singularity is the first title to make use of two of the largest changes that DirectX 12 brings to the table, Asynchronous Compute and Explicit Multi-GPU support, which allows you to make better use of your GPU resources with advanced scheduling and allows you to make use of two non-matching GPUs in a Multi GPU setup respectively.
With older graphical APIs GPUs handled their loads with a single GPU schedule, meaning that they will only make do a single piece of work at a time, potentially leaving certain parts of your GPU at an idle state. Asynchronous Compute allows compatible GPUs to handle parallel workloads, allowing your GPU to more efficiently schedule workloads and make sure that your GPU is making full use of its available compute resources, offering significant performance gains.
Right now only AMD GCN GPUs support Asynchronous Compute in their GPU drivers, though Nvidia is rumored to be adding support for this function to Maxwell in the future with a driver update, though this remains unconfirmed by Nvidia.
One of the new and exciting features of the D3D12 is the ability to use multiple command queues on a single GPU. This feature is very similar to explicit Multi-GPUs. The idea here is that a GPU could have multiple graphics, compute and copy queues. This allows work to act parallel to each other, and for completed work to signal other work.
All of this is possible because Windows 10 has a sophisticated GPU scheduler which allows the OS to schedule commands to the GPU. Oxide is taking advantage of this advanced feature to allow us to enable not only the multi-GPU support, but to also even in single GPU schedule some of the work of the scene to be in parallel with other work in the scene. We’ve seen significant performance increases on some hardware by using the advanced scheduling capabilities of D3D12.
The second big change to DirectX 12 is how the API can make use of Multiple GPUs, for the first time allowing applications to interface with multiple GPUs directly.
In the past the APIs did not allow applications to look at multiple GPUs in a system, making the job of adding Multi-GPU (SLI or Crossfire) support a very difficult task, which often requires both specific driver profiles and a lot of work on the game side. This has resulted in the majority of PC games offering terrible multi-GPU support, but with DirectX 12 this job is made much simpler.
With DirectX 12 it is even possible to use several GPUs regardless of their manufacturer or product generation, allowing games that make use of this functionality to use multiple GPUs that traditionally would not work in a multi-GPU setup. This allows us to use both AMD and Nvidia GPUs in a single system and have them work together seamlessly, which is something that was simply not possible previously.
Oxide is excited to release the first-ever game which uses the explicit multi-GPU abilities of D3D12. In previous APIs, the existence of multi-GPUs was largely hidden to the application. Thus, there was no ability for the application to drive multiple GPUs. D3D12 enables us explicit control over all GPUs in the system.
Thus, integrated directly into Ashes of the Singularity is the ability to do arbitrary AFR (alternate frame rendering) on multiple GPUs. The really exciting thing about this feature is that this can occur even if the GPUs are from different vendors!
Personally I think the Mantle development was invaluable to AMD. Not only on the software side but the hardware side as well, allowing them to think ahead and put in features like there advanced queue scehduler's in there GPUs even though it wasn't being used until now. Luckily it worked out for them in the end.Quote