AMD Explains DX12 Multi GPU Benefits
AMD Explains DX12 Multi GPU Abilities
Published: 29th May 2015 | Source: AMD |
AMD Explains DX12 Multi GPU Abilities
As some of you may already be aware, DirectX 11 was never really built to handle multiple GPUs working on a single game. Yes SLI and Crossfire exist, but as many of you also know, they are far from perfect solutions.
DirectX 12 is different, being built from the start to be able to handle multiple GPUs it has the ability to transform SLI and Crossfire as we know them today by making it easier to implement and use and should make horrible SLI/CF profiles a thing of the past.
One of the first features AMD is looking to show off is the ability to use an APU and a GPU together, allowing the APU's iGPU to do some of the smaller tasks, allowing he beefier dedicated GPU to do the more intensive work. Nothing is stopping this from working with Intel's Integrated Graphics, in theory, but this will certainly require extra developer interaction in order to implement.
At this point we are unsure if we will see this implemented into many games, though the option is definitely interesting.
Crossfire and SLI typically use a AFR (alternative frame rendering) approach to Multi-GPU configurations, allowing each GPU to render every other frame. This allows a theoretical 2x increase in he number of frames produced, but also increases the typical lag experienced, as frames have to wait for each other before they can be put onscreen.
DirectX 12 ads a new option to the mix, SFR (Split Frame Rendering) which allows each GPU to produce half of each frame, meaning that the two GPUs are actually working together to produce each frame. This means that frames can be completed between 2-3 times faster than typical SLI or Crossfire AFR setups, meaning that you game should feel much more responsive. This type of Crossfire was recently used in Civilization Beyond Earth when it used AMD's mantle API with AMD GPUs.
One other feature DirectX 12 brings to the table is the ability to combine memory pools, provided the game developer creates their games with this feature in mind.
In traditional AFR based Multi GPU rendering, both GPUs are working on separate frames of the same scene, requiring both GPUs to hold exactly the same data in each GPUs VRAM as both are working on the same tasks. Without explicit mechanisms to utilize multiple GPUs, tasks cannot be decided in such a way that the GPUs could do different enough tasks to utilize their memory pools separately.
With DirectX 12 developers can specifically allocate tasks to a specific GPU, allowing them to control the GPU hardware in such a way that each GPU could use their full frame buffer independently, meaning that 2 4GB cards in SLI or Crossfire could create a setup with 8GB of effective GPU memory.
Right now I do not see many developers taking this approach to crossfire as the work required to assign tasks in such a way will not be cost effective as not many people use Multi GPU setups, so the effort would likely be placed in an area where more of an impact on sales could be achieved, perhaps improving the graphical fidelity or otherwise trying to improve the games framerate in other ways.
It is currently rumored that Batman: Arkham Knight and The Witcher 3 will support DirectX 12 though post launch patches, though this remains unconfirmed by the games developers.
DirectX 12 will change the way we all think of Multi GPU configurations when it launches later this year, making them much more viable and gamer friendly. For a long time we have recommended that gamers buy the single best GPU that they can afford, avoiding multi GPU setups when possible until you get to the highest end GPUs in order to avoid the issues which plague Multi GPU setups. This may be about to change, but we will need to see the improvements for ourselves before we change out way of thinking.
You can join the discussion on DirectX 12 and Multiple GPU setups on the OC3D Forums.