How Do CrossFire And SLI Work?
How Does Load-Sharing Work, And What Is Alternate-Frame Rendering (AFR)?
AFR is the most commonly used rendering method for multi-GPU setups. As its name suggests, successive frames are rendered in their entirety by different cards. The prerequisite for a smooth and stutter-free frame sequence is, however, that the workload for successive frames is more or less equal, and that the performance of the graphics cards is identical or similar.
It makes no sense to combine a fast and a slow card, as the commonly-held belief that the strong card will drop its performance to match the weak one is incorrect. Instead, the workload becomes imbalanced and the results is not acceptable.
Let’s take a look at the simplified diagram of a system with two graphics cards. Card #1 renders the first frame, while card #2 renders the second frame in parallel. After that, card #1 takes on the third frame and card #2 takes on the fourth frame. The image from card 2 is relayed to the display buffer of card 1, which has the monitor connected.
This works fine, so long as the workload for both cards is more or less identical. However, even with only two cards, data transmission and data buffering impose stringent requirements on balancing GPU performance. Whether or not the graphics output truly appears synchronous is always a potential issue.
Setups with three or four GPUs work similarly; frames get computed in a round-robin way. A theoretical performance scaling of 100% for dual-GPU systems is difficult to achieve in the real world, and such setups are frequently marred by asynchronous rendering behavior, which causes micro-stuttering, something we will thoroughly discuss in the next section. The goal of the team working on the driver should be to balance raw frame rates with a smooth output.