Putting a GeForce GTX 670 in a Mac Pro

Update from 2017: This post is five years old now, but lots of people still find it through Google. So I thought I'd update it just to say that I sold the Mac Pro with an Nvidia card to my dad, and it has been working fine through the various OS upgrades. Googling around suggests that the 10x0 cards work fine in Mac Pros too. I replaced my Pro with a MacBook Air and a custom gaming PC, but I think the 4,1/5,1 Pro remains a really good computer.
---
I thought I'd try dropping a GeForce GTX 670 into my Mac Pro, since apparently 10.8 can drive it (you just won't get the EFI boot screens). I bought the 2GB EVGA 670 FTW, mostly since that has two six-pin power plugs. The top OEM card for the Mac Pro is the Radeon 5870, which is a good card but also pretty old, so — on paper — the 670 is a nice upgrade. The 670 is actually a little cheaper, too. The drivers in Mac OS are still pretty immature, so my goal was to get equal-or-slightly-better performance for now, and way better performance in Windows. Installing it is pretty straight-forward, if you've ever done computer stuff at all. Here's my Mac Pro as it sat, with the 5870.
The 670 is a little smaller.

The 670 dropped right into the 5870's spot, and hooked up to its power plugs. These are standard parts, of course, so if it didn't that would mean I'm really dumb. You can see that I also put in a little PCI fan (powered from the spare optical drive SATA port, and a SATA-to-Molex adapter). This pushed a lot of air, but it was really noisy, and it didn't seem to make much difference; the only thing making much heat in the PCI bay is the GPU (the rear hard drives being idle most of the time), and both the 5870 and 670 keep their heat fairly contained in those plastic shrouds, and push it out the back. Maybe the fan did a little something, but it wasn't worth the noise. So, the little PCI fan is gone now.

So I did that, and it booted. That was nice. You don't get the grey boot screen (the video drivers loads when the OS does, so it appears to boot straight to the desktop). With the fast SSD booting, it was just, like, "push button, wait 20 seconds, be at desktop". The obvious problem is that if you find yourself looking at the startup manager a lot, this is a bad solution -- you no longer get that. In that case, it's worth keeping things OEM or finding a flashed Nvidia card that gives you the boot screen.

Anyhow, it worked just fine. I went to run benchmarks, and LuxMark couldn't load. No OpenCL. So I found a fix from Netkas, installed it, and hey, liftoff. So, here are benchmarks and observations.

Here's LuxMark doing Sala. That's a pretty solid improvement. I would have hoped for a bit more, but I'm not complaining. Of course, the real strength of an Nvidia card over ATI is CUDA; the 670 is probably about six million times faster in After Effects.

Wait, crap. Check the GFX details; the 5870 is the first result, and the 670 is the second result. That's annoying. Cinebench is pretty dated these days, but the numbers went down! My precious numbers! Well, Kepler drivers are immature. Hopefully this changes over time.

Now, games. Everything was tested at 2560x1440 at the highest detail settings.

Starcraft 2 gained about 10 FPS (61 vs 50, average) on the 670, tested playing a Bly v. Tarson replay. So that was cool; you can see that Barefeats got the biggest improvement on a 570/580 from SC2 at those settings. Then I tried Civ 5; not only was it slower on the 670, it was kind of glitchy. Source games don't really tax the 5870, so it's hard to see much improvement in practical play, but the 670 was about 15% faster across Portal 2 and L4D2. L4D2 did have a weird bit of stutter when levels started. Dirt 2 ran great on both cards, although it remains a super-annoying game. Cities in Motion was, I think, slightly slower on the 670, but played fine. It gets jumpy with a huge map and the fastest game speed. The Sims 3 was just about as fast, too. Weirdly, Diablo 3 didn't improve at all — you'd think whatever worked for SC2 would work for D3, but no.

My wrapped version of Skyrim was the only game here that wasn't really playable on the 5870 at 2560/Ultra, so I was excited to see what the 670 did. It did nothing, actually; the game was still jumpy. If I had to cork sniff, I'd say the 5870 was more consistent — the 670 seemed to do a little better as long as you were standing still, and a little worse when you turned. This isn't really a reflection on either card.

Everything else worked fine. I'd heard people saying that Steam didn't work with PC GPUs — it did. All my non-game programs worked as well as before. Temperatures were about the same as before, and the 670 managed its fan just fine (it's quieter than the 5870, which made me nervous). Restarting in Windows showed off what the 670 could actually do, of course, although I found the difference marginally underwhelming in stuff like New Vegas and World of Tanks. But then, they're not taxing anyway, and the only tricky stuff for the 670 to add is anti-aliasing. Anyhow, the 670 in Mac OS is pretty much as fast as the 5870 except if you like Civ 5.

I ended up a little conflicted. The 670 is better than the 5870, depending on what you're doing, but not by that much in most cases except for CUDA. It's unsupported, and there were a couple glitches. The 5870, in comparison, is an OEM card that developers (presumably) test against, so you won't see much in the way of issues, and it's still the fastest OEM Mac GPU by a comfortable margin (over the iMac's 6970M). However, the 670 is definitely faster in Windows, and there's a lot of potential for the Mac drivers to improve and let the 670 really go nuts.