BFG10K
Lifer
- Aug 14, 2000
- 22,709
- 3,002
- 126
Yes, AFR is like CPU pipelining. It still takes the same amount of time to render a single frame, but the throughput is increased because you get more frames coming out in a given time due to parallelism.If I understand you correctly, you said although the actual time required to render a frame does not decrease regardless of the number of cards present, but with N cards, it is possible, and practical under some specific scenarios where it is possible to render frames in the future. Assume that it takes X ms to generate a frame, ideally, N cards can generate N frames in X ms.
Actually, the ideal scenario for performance is the CPU preparing multiple frames in advance when all of the GPUs in the system are busy. If you’re only doing this when one card is busy then you won’t get optimal scaling. Of course the more you do this, the more input latency you get.Also, since there are more than one card, it is possible for the CPU to prepare a new frame even though one card is busy due to the fact that there may be another card that is actually ready.
“Pre-render” is a generic term given to what is happening here. You can bet both ATi and nVidia have internal values only accessible to the driver, and they probably dynamically adjust the value as needed, maybe even on a per-game basis. They probably also adjust it based on the number of GPUs in the system.However, pre-render is not exclusive to SLI/CF, and has a default value of 3.
I don’t think you understand what is happening, so here’s a simple example.Now, suppose there are 2 cards, and delay between alternate frame is 0, then 2 card can generate 2x the number of frames a single card can produce. But if that is the case, video card itself is the bottleneck at CPU must wait. The wait is, at best, halfed, therefore able to generate 2x frames for video cards to render. That means, at the end, it is at best 2x performance(FPS count).
Let’s say it takes 10 ms for the CPU to render its part a frame, and 20 ms for the GPU to render its part of a frame.
- With one GPU and pre-render=0, every frame will take 10ms + 20ms = 30 ms to render, because the CPU must always wait for the graphics card to finish. This is serial execution.
- With one GPU and pre-render=1, all frames after the first one will take 20 ms to render. This is because the CPU’s 10 ms time for every current frame is run in parallel to the GPU’s 20 ms time for the previous frame.
- Now assuming perfect scaling and pre-render=2, two GPUs will give you two frames in 20 ms (after the first two frames) since the CPU generates two new frames while the cards render the previous two frames.
The purpose of SLI/CF is to provide the highest possible performance benefit over a single card without degrading IQ. It’s rather naïve to not expect both nVidia and AMD to go all-out in an attempt to do this. If that’s “cheating” to you then AFR clearly isn’t technology for you.Well, that is cheating. If user don't go into the driver and change settings, the pre-render of pre-render value reminds the same.
Uh, no. Like I said, if you pre-render like you do on a single card you’ll get sub-optimal scaling. An AFR system has to render enough frames ahead to saturate all of the GPUs in the system.Unless new bottleneck arises with the introduction of SLI/CF, the number of actual pre-rendered frame should be smaller than, or equal to a single card.
You doubt what, exactly? Driver bugs or benchmarking noise? Both can be objectively proven to exist, so what you doubt isn’t really relevant here.Of all reasoning, I must admit that this is the most sounding reason, but I highly doubted this.
Last edited: