netkas.org

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.

Link to post on amd forum

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

Comments

  1. x986123
    September 2nd, 2009 | 1:31 am

    It great I have 2 working GTX 260’s instead of those radeons =D

  2. Similar problem with 4870
    September 2nd, 2009 | 1:39 am

    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.

  3. Oatman
    September 2nd, 2009 | 1:42 am

    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

  4. FormerlyKnownAs
    September 2nd, 2009 | 2:58 am

    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.

  5. Matty
    September 2nd, 2009 | 6:37 am

    @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

  6. cmf
    September 2nd, 2009 | 7:06 am

    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.

  7. September 2nd, 2009 | 10:50 am

    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!

  8. m82a1
    September 2nd, 2009 | 4:43 pm

    from my understanding, more nvidia cards are supported, the ones with CUDA at least

  9. Anoine
    September 2nd, 2009 | 5:33 pm

    And 4670 won’t work at all !!

  10. machinist
    September 3rd, 2009 | 11:26 am

    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

  11. machinist
    September 3rd, 2009 | 11:25 pm

    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.

  12. Jeff
    September 6th, 2009 | 3:36 pm

    One Question: Currently can HD4850 or other ATI model crossfire support in leopard?

  13. September 14th, 2009 | 1:10 am

    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…

  14. September 14th, 2009 | 3:35 pm

    Thanks for Great Information

  15. October 26th, 2009 | 7:40 pm

    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?

Leave a reply