← Back to context

Comment by birdsongs

10 hours ago

TIL you could SLI Vodoo 2's, and 3dfx invented it. Very cool. (It's different from the nvidia SLI, same acronym, different tech.)

I think Nvidia bought the patent.

There’s a direct historical line from Voodoo2 SLI to today’s Infiniband GPU links and making AI possible.

  • > I think Nvidia bought the patent.

    And has since killed it for desktop gaming CPUs.

    Which makes some sense, I suppose. It was pretty expensive to use, which made it uncommon. These days, GPUs are so power hungry that'd you need a MASSIVE power supply to do it, unless you're SLI'ing low-end GPUs, which is kind of a waste. You're better off with a mid-grade GPU.

    • From a marketing perspective, yes, but technically there was a deeper issue with SLI (that intersects with the marketing issue): the GPUs don't have a lot of bandwidth between them so you have to be able to split work evenly across the cards without needing to copy work between them a lot.

      3dfx did it spatially - each card rendered half the scanlines and then interleaved them - hence Scan Line Interleave (SLI). The problem is that this assumes all the work is going into pushing polygons onto the framebuffer. This assumption broke fairly shortly after 3dfx started doing this and it's an assumption that only makes sense for 3dfx's obsession with fill rate.

      Nvidia wound up doing basically everything temporally: one GPU renders one frame, the next GPU renders the next. The reason for this is that "modern" (as in, 2004-era, so OpenGL 2.x / DX9) games do a lot of intermediate work that has to be available during final raster on both cards. They might render a bunch of depth buffers from various light positions to construct shadow maps. Or they might accumulate all raster operations into a bunch of color framebuffers and then compute lighting with the information in those buffers. Or you might just have a post-process gaussian blur that requires mixing pixels from across both GPUs.

      Theoretically, none of this is a problem - you just send the pixels the other GPU needs. In practice even the fastest Nvidia SLI bridge only ran at something like 3.25GB/s and that's not even enough bandwidth to deliver a final 4K 120FPS image, much less transfer every intermediate result from every rendering step to both GPUs. The math gets worse when you start adding more GPUs. It's far easier to send a whole frame to each card, but this adds latency and stuttering[0] because you have to run the game two, three, or even FOUR frames ahead instead of just one.

      That being said, there was a way to deliver multi-card rendering on Nvidia hardware, it's just that Nvidia had no interest in shipping Nvlink support in a consumer card because they wanted AI customers to pay more for it. So instead they washed their hands of it and made multi-card rendering an explicit API thing that nobody implements because <1% of people are going to spend $10k on a rig for slightly better framerates. AFAIK if you DO use multi-card rendering this way, you're doing all the synchronization across the main PCIe bus (which is actually more bandwidth than SLI ever had).

      [0] Which, funnily enough, is the same problem with DLSS Framegen. Nvidia really, really likes building things that make the FPS number go up without actually delivering a better experience.

      1 reply →