Has Apple possibly enabled Crossfire X under OS X?

Discussion in 'Mac Pro' started by Cubemmal, Jan 1, 2014.

  1. Cubemmal macrumors 6502a

    Jun 13, 2013
    Consider the Anand review ...

    He hasn't figured out yet how two graphics cards video signals are routing to three TB controllers. But consider connecting 3 4k displays to the D300's, for example. Without Crossfire one chip will have to drive two displays, while the other gets an entire display to itself. Can a single D300 handle two 4k displays? Even if it can, that seems like an undesirable asymmetry. I wonder, is it possible that OS X has quietly enabled Crossfire? Or are there tests that have conclusively proved it hasn't? It also seems odd that Apple enabled Crossfire X on Windows, Anand seems convinced they plumbed wires for this, not via DMA. They don't usually give us gratuitous features like this.

    Regardless, how are they routing the video signals across TB?
  2. iBug2 macrumors 68040

    Jun 12, 2005
    Crossfire is software, so Apple needs to add API's to OS X for apps to make use of if they want developers to add crossfire like features to their apps.
  3. Cubemmal thread starter macrumors 6502a

    Jun 13, 2013
    I don't think so. Crossfire is behind the scenes with the driver rendering frames across multiple GPU's. The point is that developers don't have to enable Crossfire, so all games (theoretically) benefit.

    The point is that Apple is either performing graphics asymmetrically, or it has enabled a Crossfire solution in the driver and OS X is taking advantage of that.

    At any rate I just looked at the AMD ADL SDK and see a typical API for querying the state of Crossfire X - is it enabled, does the system need to reboot to enable it, if not then why not. Haven't found anything about enabling it - this is the usual stuff only for games that want to develop specifically for Crossfire and give the user lots of feedback as to the status. Most developers don't bother and just leave it up to the user to enable or disable through the AMD control panel.
  4. antonis macrumors 68020


    Jun 10, 2011
    It is obvious in Anadtech's review that Crossfire X (the one enabled in Windows allowing automatically both GPUs to be used without s/w modifications) is not enabled in OS X, thus the low performance in games running under it. Only applications updated to take advantage of this physical connection of these GPUs are benefited from this (e.g. FCP X). IIRC that's the one that is called "Crossfire Pro" and it cannot work for existing s/w automatically.

    It is also stated in their review, that even in Windows where "Crossfire X" is enabled, some games still do not appear to run better. But this is an issue that occurs in Crossfire generally; it cannot be fully trusted.

    Regardless, "Crossfire X" is not present in OS X.
  5. goMac macrumors 604

    Apr 15, 2004
    I thought the review stated that under OS X only one card will ever be used for any display unless a vendor has updated their app to be dual card aware.
  6. aleksoctop macrumors regular

    May 8, 2011
    My understanding was that the cards are linked together by default on the hardware side. Without drivers it still reads as a dual card in Windows.
  7. iBug2 macrumors 68040

    Jun 12, 2005
    Yes but driver is also software. If Apple decides to support a Crossfire-like implementation on OS X, they can, since the hardware obviously supports it on the new Mac Pro. But whether they will or not, who knows? I hope they do.
  8. goMac macrumors 604

    Apr 15, 2004
    They could, but to answer the original question, they don't.
  9. derbothaus macrumors 601


    Jul 17, 2010
    Apple knows no sane person games seriously on OS X.:p
    It is still as it has always been. If you want great performance for games boot into Windows. Instant Mac game upgrade. I am OK with this and pretty happy to have crossfire in Win as the GPU's are pretty subpar without it imo.

    The review mentions that the purpose of the dual cards is to have one for desktop rendering and one for compute because of the display drawing overhead and problems using non dedicated compute GPU's (load sharing). Enabling crossfire would double your performance but invite back the problem the dual cards addressed.
  10. keigo macrumors regular

    Nov 6, 2006
    Apple only want you to play game on their iDevices only.. :p
  11. leman macrumors G3

    Oct 14, 2008
    I don't think that its a good time investment by Apple. It took Nvidia/ATI literally years to get the SLI/Crossfire implementations to work properly, and yet there are still games which do not play well with them.

    I think, a much better way is to let developers themselves decide whether and how they want to utilise multiple GPUs on the system. With OS X, its fairly trivial to detect, activate and assign different jobs to all the GPUs on the system. I believe this approach is much more sensible then forcing a single, often suboptimal, multi-GPU implementation onto everyone. The only prerequisite for well-performing 'do-it-yourself' SLI/Crossfire is efficient data sharing between different GPUs. AFAIK, OS X is quite good at it.
  12. antonis macrumors 68020


    Jun 10, 2011
    This DIY approach for crossfire implementation is a double-edged sword, though. nMP will cover a tiny part of Mac gaming (which is already a tiny part of the entire gaming market), so throwing the ball to the game developers, expecting them to invest extra effort to implement this, while not having a considerable effect on their sales, might not be a good idea.

    When it comes to gaming, I think Apple should just do it like windows. They have to support it (especially since they released the h/w for this).

    Regardless, I'm not so sure that it's a matter of Apple. I thought that graphics drivers on OS X are done by the card manufacturers with apple having a small part on this.
  13. iBug2 macrumors 68040

    Jun 12, 2005
    Apple has been supporting multi gpu cores on their iOS devices through Open GL ES for a while now. I really think that they will eventually support it on OS X as well.
  14. derbothaus macrumors 601


    Jul 17, 2010
    I ask what's the point? You already are loosing more fps just playing in OS X. Let's have OS X games work properly on 1 card before we just throw more power the game can't use effectively at the software problem AND introduce microstuttering and the impending bag of hurt that Xfire is even on a mature platform.
  15. leman macrumors G3

    Oct 14, 2008
    But doesn't the same kind of argument apply here? Apple is very unlikely to get more MP sales if they supported something like Crossfire. Its a workstation after all, not a gaming PC. And I completely agree with derbothaus here: Apple should work on improving the performance of their GPU drivers before even starting to think about some sort of OS-assisted GPU sharing.

    BTW, regarding game developers - if DIY approach allows them to get more performance/better eye-candy, I bet that many people would do it. I can imagine using the additional GPU for high-res shadow calculation and/or radiosity. With manual GPU task allocation you suddenly can do much more interesting stuff then viewport splitting or AFR.

    AFAIK Apple controls much of the driver interface, just like MS does with DirectX.

    I think you are confusing something. The iPhone/iPad GPUs are still logically one device. By the same logic Intel Iris graphics has 4 cores, Nvidia 650M/750M have 2 cores etc.
  16. iBug2 macrumors 68040

    Jun 12, 2005
    One device vs multiple devices is irrelevant. GTX 690 is two cores in one device yet only one core will work unless your OS supports SLI.

    650M offers one Kepler core. Not two. It has hundreds of shader cores.
  17. 2128506 macrumors regular


    Dec 28, 2013
    Heart of Mordor
    Um, GTX 690 is 2 GPUs, just mounted on same board with built-in SLI bridge. It is detected as two devices by OS X, for example: http://www.tonymacx86.com/attachmen...-10-8-2-screen-shot-2012-11-11-7.49.27-am.png

    Memory is not shared between GPUs i believe, as in "multi-core" things.
  18. leman macrumors G3

    Oct 14, 2008
    But this has all the relevance! One device is what is recognised, managed and presented to the OS as one computational unit by the driver. To deal with multiple devices you need additional, often very complicated, logic - simply because communication between the devices is quite inefficient.

    Nope, GTX 690 is technically two GTX 680 GPUs, so two devices. Kepler GPUs are build up from modular computation cores (which Nvidia calles SMX units), where each consists of 192 scalar ALUs (or if you prefer it, shader cores). The 680 has 8 of those SMX units, the 650M has 2.

    The terminology here is a bit irritating, because much of it is basically marketing. If we systematically counted ALUs as cores,then modern Quad-Core Intel CPUs would have over a dozen cores. In the context of this discussion I choose to refer to something as 'core', if its a modular building block. For Kepler GPUs, its a SMX unit (this is also why all Kepler GPUs have shader core counts divisible by 192). Its very similar to concept of the PowerVR core ( Imagination Technologies actually call them 'clusters').

    Finally, for the driver (or the OS), it does not matter that much how many modular blocks are in a GPU - it uploads the data, sets up the state and let's the GPU do its job. In contrast, managing a shared state between two physical GPUs is a very different thing.
  19. goMac macrumors 604

    Apr 15, 2004
    As other people have noted, you've confused cores for GPUs.

    The Radeon 5870 has 800 cores (of just the general type) and Apple's drivers support them all.

    If you stick two Radeon 5870s in your machine, OS X will only use one per display. If iOS supported multiple GPUs (no iOS device has multiple GPUs) it would have the same problem.

    As noted, the GTX 690 is actually two GPUs on one card.

    OS X does support multiple GPUs for OpenGL, but there is no automatic support. Basically the problem is when you startup OpenGL, OS X is only going to allocated your VRAM on the current card the output display is attached to.

    In order to use two different cards, you've got to synchronize the VRAM on both so they can have the same data to draw with. Crossfire does this automatically, but as a lot of benchmarks note, Crossfire can run into interesting latency and delay issues while it synchronizes the cards.

    OS X provides APIs for developers to fire up multiple GPUs, render across multiple GPUs, but developers have to do the synchronization of the GPUs manually.

    Apple has done demos of multi-GPU rendering before on Mac Pro hardware, so they're certainly aware of the interest. The last public demo they did was in WWDC 2010 when they did a demo of a GTX 285, and a Radeon 4870 combining power to do some OpenGL. When the new Mac Pro came out, they referred developers back to that demo on how to do OpenGL across multiple GPUs.

    If you're interested, do a Google for "Taking Advantage Of Multiple GPUs WWDC 2010".

    Will Apple do something like Crossfire to enable this automatically without developers having to write code? I'm not sure.

    The advantage of Apple's approach is that the work can be spread across GPUs of different types. This means a Macbook Pro user could combine the rendering power of their Iris Pro and Geforce 750m for increased performance. On a Mac Pro, you could even plug in a bunch more GPUs of different types via Thunderbolt, and boost the power of your internal GPUs. It doesn't seem likely that Crossfire would ever support this sort of thing.

    Will developers take advantage of the existing API? Also hard to tell, but I hope so. Supporting Crossfire X could happen in OS X, but with some support already there for multi-GPU rendering, it may not be a huge priority.

    The interesting thing about the demo is in hindsight they probably knew the new Mac Pro was coming back in 2010. A GTX 285 and Radeon 4870 in the same Mac Pro isn't even an out of the box supported config, so it was a very peculiar demo.
  20. antonis macrumors 68020


    Jun 10, 2011
    Fingers crossed. They have to, anyway, since they delivered a system that is dual-GPU only.

    Well, there's a difference IMO. Apple is the one making the nMP, they deliver it with dual-GPUs (e.g. without a single-GPU option), and they do know that a big part of their community is willing to pay more to get a really capable gaming machine. After all, they have to support the full capabilities of the machine they make themselves. It was their own decision to deliver it with dual-GPUs only.

    The 3rd party developer, on the other side, sees this market share as a very tiny target group compared to PCs & consoles when creating a game that will sell in multiple platforms. Long story short: If the manufacturer itself is not willing to support something, I cannot expect an outsider to do it.

    Yes, they control the drivers interface (e.g. they are responsible for the OpenGL running on OS X) but not the drivers themselves or their capabilities. Not sure, though, if this is strictly a matter of drivers versus a matter of the OS interface.
    Or both.


    This was very interesting info. Supporting multiple GPUs of multiple types seems to render OS X a very promising/capable platform even for games. So, as I understand it, the real thing missing here is the real support for this to work. Maybe the turn Apple has taken by delivering a machine that works exclusively with dual-GPUs is the beginning of a wider adoption of this technology ?
  21. leman macrumors G3

    Oct 14, 2008
    You have a point, but again, 'good' SLI/Crossfire support is very difficult to achieve because its hard to synchronise multiple GPUs for high-performance rendering. In the end, the OS/driver needs to speculate about what the application is doing. Its a huge hack and it often involves writing different paths for individual applications.

    If I understand correctly, the driver has no means to address multiple GPUs without some major hacks. In OS X, driver seems to be loaded strictly per device. For example, the hardware renderer id is provided not by the driver but by the OS (its numeric values are declared in the OS X OpenGL SDK)

    Many Apple computers have dual GPUs - look at the 15" laptops. And it doesn't really make it more capable for games, because of the GPU work balancing problems mentioned. Support of multiple GPUs is not an OS X exclusive, it has been in OpenGL for years and years (since the beginning actually). DirectX and Windows also allow you to use GPUs heterogeneously, but I am not sure how easy it is to share resources between them. OpenGL makes it trivial. BTW, for an example of heterogeneous GPU usage on OS X, you can see my post here: http://forums.macrumors.com/showpost.php?p=18548658&postcount=3
  22. antonis macrumors 68020


    Jun 10, 2011
    So, if I get it right, it's mostly a matter of the 3rd party developers, after all. If that's the case, I'm not sure if we are allowed to be optimistic to expect both GPUs to be used in the near future, on OS X side.

    I feel this is something many potential buyers that see this machine as a multi-purpose one are worried about and preventing them from order the nMP. Is this machine going to get better in the future (e.g. take advantage of everything its h/w has to offer for every task) or these limitations are here to stay ?

    I'm afraid this is not something that will get replied in the next few weeks.
  23. leman macrumors G3

    Oct 14, 2008
    I think that nMP is quite a niche machine in the first place and Apple has taken a considerable gamble by focusing so much on GPU computation. Well, thats what I like about Apple - they are not afraid to take risks :D Of course, this all depends on whether developers of professional software will be committed to harness all this GPU power.
  24. Sun Baked macrumors G5

    Sun Baked

    May 19, 2002
    Still feel like we are poised right at the starting line with GPUs, like we were with CPUs right after Apple picked up Daystar.

    Sort of expect Apple to follow the same path with multiple GPUs as they did with CPUs, and start rolling in OS updates, driver updates and interconnected dual GPUs into more products.
  25. Cubemmal thread starter macrumors 6502a

    Jun 13, 2013
    Well that's very interesting, thanks. I can't find the video, even from my Apple Developer paid account they only have WWDC videos going back to 2011. If anybody has a link to the video that would be helpful. However I did find this technical paper on adding multiple GPU Open GL support.

    So I wonder if OSX itself is using this, and that's how they spread graphics work across multiple GPU's in the nMP? That would only work for the Window manager in OS X (Cocoa graphics) and not games which write OpenGL itself.

    If I had time and more interest I might author a OpenGL library which makes it easier for game developers to get multiple OpenGL GPU support in OS X. Sort of a open source Crossfire or SLI.

Share This Page