Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Cubemmal

macrumors 6502a
Original poster
Jun 13, 2013
824
1
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?
 

iBug2

macrumors 601
Jun 12, 2005
4,531
851
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.
 

Cubemmal

macrumors 6502a
Original poster
Jun 13, 2013
824
1
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.

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.
 

antonis

macrumors 68020
Jun 10, 2011
2,085
1,009
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?

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.
 

goMac

Contributor
Apr 15, 2004
7,662
1,694
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.
 

aleksoctop

macrumors regular
May 8, 2011
126
53
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.
 

iBug2

macrumors 601
Jun 12, 2005
4,531
851
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.

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.
 

goMac

Contributor
Apr 15, 2004
7,662
1,694
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.

They could, but to answer the original question, they don't.
 

derbothaus

macrumors 601
Jul 17, 2010
4,093
30
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.
 

keigo

macrumors regular
Nov 6, 2006
247
7
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.

Apple only want you to play game on their iDevices only.. :p
 

leman

macrumors Core
Oct 14, 2008
19,183
19,030
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.

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.
 

antonis

macrumors 68020
Jun 10, 2011
2,085
1,009
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.

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.
 

iBug2

macrumors 601
Jun 12, 2005
4,531
851
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.

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.
 

derbothaus

macrumors 601
Jul 17, 2010
4,093
30
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.
+1.
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.
 

leman

macrumors Core
Oct 14, 2008
19,183
19,030
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).

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.

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.

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

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.

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.
 

iBug2

macrumors 601
Jun 12, 2005
4,531
851
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.

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.
 

2128506

macrumors regular
Dec 28, 2013
186
184
Heart of Mordor
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.

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.
 

leman

macrumors Core
Oct 14, 2008
19,183
19,030
One device vs multiple devices is irrelevant.

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.

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.

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.
 

goMac

Contributor
Apr 15, 2004
7,662
1,694
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.

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.
 

antonis

macrumors 68020
Jun 10, 2011
2,085
1,009
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.

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

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.

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.

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

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.

----------

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.

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 ?
 

leman

macrumors Core
Oct 14, 2008
19,183
19,030
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.

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.


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.


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)

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 ?

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: https://forums.macrumors.com/posts/18548658/
 

antonis

macrumors 68020
Jun 10, 2011
2,085
1,009
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: https://forums.macrumors.com/posts/18548658/

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.
 

leman

macrumors Core
Oct 14, 2008
19,183
19,030
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.

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.
 

Sun Baked

macrumors G5
May 19, 2002
14,937
157
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.
 

Cubemmal

macrumors 6502a
Original poster
Jun 13, 2013
824
1
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". ...

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.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.