September 1, 2009
Why only 48×0 ATI cards support openCL
Many imacs/macpro3,1 owners was wondering why their radeon hd 2600/3870 doesn’t support opencl.
Lets see why.
some quotes:
Compute shader has a higher possibility of getting peak performance because it is not part of the graphics pipeline.
For example, when you run a pixel shader, a vertex/geometry shader must be executed first in order to generate the pixels. So there is overhead involved and it requires resources. In compute shader, you basically get all the resources on the chip. Actually achieving that peak performance is another thing however.————————-
Micah Villmow
Advanced Micro Devices Inc.
Pixel Shader code (if not using some special stuff like double precision) runs on all cards. Compute shaders only on the HD4000 series.
If you write in Brook code without using AMD extensions and using the older brook codebase, you can compile to a vast majority of graphics cards using the DX/OGL backends. With pixel shader mode, you can target all Radeon HD cards and compute shader can target all HD4XXX series and later cards. So yeah, compatibility is a reason.
————————-
Micah Villmow
Advanced Micro Devices Inc.
So, obviously a reason is simple, opencl on radeons in SL uses compute shaders and they are available only on 4000 gpu series.
Lets see something else:
strings /System/Library/Frameworks/OpenCL.framework/Libraries/AMDil.dylib | grep Enable
Enable pixel shader code generation
Enable compute shader code generation
…
Enable Compute Shader instructions
Enable Double Precision instructions
…
Enable Pixel Shader instructions
…
Looks like they have ability to run opencl on old radeon cards but it isn’t enabled yet.
It can be just two reasons why – it’s not finished/ready yet and will be finished later, or they are not going to enable it and pushing users for upgrade.
p.s. opencl for nvidia cards done via CUDA (look at file /System/Library/Extensions/GeForce8xxxGLDriver.bundle/Contents/MacOS/libclh.dylib), so it supports all cuda supported gpus
It great I have 2 working GTX 260’s instead of those radeons =D
I am wondering more why my HD487o won’t work!
It has the correct device ID as used in the ATI4800Controller kext, I have installed the ATY_init kext package which also installed Natit.kext and it still stalls out with a gray screen after ATY_init. kext loads.EVOenabler is in the extensions too.
Any ideas here netkas? There is a 4870 thread on this at OSX86.
Yea my Radeon 4550 won’t run on OSX either it just shows weird staticy content… Though I’ve never heard problems on a 4870… No one has ever been able to get my card to work. Glad it supports CL though even though i cant use it LOL
Many thanks for pointing to this netkas.
It still leaves the question – do I wait for compute shaders to be enabled for 36**, which may or may not happen or do I get out now?
hmmm!
D.
@4870 issue:
http://www.insanelymac.com/forum/index.php?showtopic=183064&st=0
works in 10.6 with modded evoenabler.kext. Have to remove aty_init.kext
hm, wasn’t apples first opencl implementation based on a cl2glsl wrapper lib? so either some relics or what you said.
if they would also go the glsl way (again) then even a wider range of graphic cards would be supported … but i’d say they discarded that option for the sake of a clean implementation with true hardware support. and it’s the better choice imo.
hi netkas, love your work 🙂
is there any hope for getting the hd3870 working on hacks with 10.6? is this something you’re working on? if not ill just get a 48×0 instead.. thanks!
from my understanding, more nvidia cards are supported, the ones with CUDA at least
And 4670 won’t work at all !!
netkas:
Thank you for the information: very interesting.
If opencl can run on “older” cards like my 3870 and is inactive to increase sales of the 4800’s, is it possible to enable compute shader code generation and run opencl on a 3870?
What has been changed in snow so that my 3870 can no longer even run quartz? Device id is still in there and it prompts a megalodon framebuffer. VRAM is misidentified as 256 instead of 512 and it is coded correctly in the DSDT. The 3870 runs in VESA mode when the 2000 and 3870 kexts are removed, so I have a stable snow environment and enjoy it, but video is of course inferior to 10.5.8 Tried a variety of approaches to make it work and at a loss as how to proceed. Buying a new card is not an option for a while. Do you have any suggestions?
///you didnt get it, 3870 has no compute shaders
netkas:
Thanks for the reply. You’re right, guess I did not “get it”. When I read: “Looks like they have ability to run opencl on old radeon cards but it isn’t enabled yet” I just assumed you meant old radeon cards have the ability to run opencl but it isn’t enabled yet?
I remain perplexed how to proceed in my quest to restore gfx hardware accelerated functionality to my 3870 in Snow. I am not asking you to solve my problem. You have a much better understanding of the issues. I read your posts on the Mac forums too. All I’m asking is, if you were trying to enable hardware accelerated gfx (not opencl) for a 3870 in Snow, theoretically, how would you approach the problem?
Thank you for sharing your knowledge and thanks for responding to my post.
////I wasnt trying it.
One Question: Currently can HD4850 or other ATI model crossfire support in leopard?
Sorry if this is a silly question but is it possible to replace relevant kexts with known working ones for 3870 from 10.5.x? Or is 10.6.x just too different to cope? i have two ATI cards the 2900 and 3870 and both worked great on Leo with the old ‘Triakis’ framebuffer with a really easy .pkg installer but not unsure exactly why Snow doesnt like them any more…
Thanks for Great Information
Ok ignore the last one, here is silly question number two – does the lack of compute shaders on all 3870 cards mean that owners of real macs with the mac rom version of the 3870 card will also not have any hardware accelerated gfx in 10.6 – is that the case and should everyone with these cards look to swap them for opencl friendly cards before moving to SL?