RX470 compute units

Discussion in 'Mac Pro' started by Jackdown_101, Mar 4, 2017.

  1. Jackdown_101, Mar 4, 2017
    Last edited: Mar 4, 2017

    Jackdown_101 macrumors newbie

    Joined:
    Feb 28, 2017
    #1
    Hi everybody!

    Potentially got myself a good deal on an 8GB RX470 and I was just wondering about unlocking it's compute units.

    At the moment there are instructions to unlock the Fury (64?) and rx480 (36?) but not that I can find for the 32? of the rx470.

    I'd of thought that I can just update it with the RX480s code and it'll use all 32 whilst reporting that it has 36 correct?

    My concern would be if that could damage the card in any way. For example if the RX470 does have all 36 of the rx480's CU but some of them have been locked away for being slightly defective. Would running the script potentially activate them and cause problems, or something?

    I confess that I'm kind of new to all this stuff.

    Thanks for all the ongoing help here.
     
  2. h9826790 macrumors 604

    h9826790

    Joined:
    Apr 3, 2014
    Location:
    Hong Kong
    #2
    TBH, I don't know, but I don't think there is a script that can unlock the cores / units that was locked in the factory (either by hardware or firmware).
     
  3. theitsage, Mar 4, 2017
    Last edited: Mar 6, 2017

    theitsage macrumors 6502a

    Joined:
    Aug 28, 2005
    #3
    I would not worry about it at all. Original Apple system files capping the CUs at 16 and people had been using the Polaris/Fiji cards without ill effects. The unlock script allows a maximum 36 CUs for Polaris 10 GPUs. The RX 470 in particular would utilize all of its 32 CUs through OpenCL tasks. Luxmark 3.1 score for the Luxball scene is low 11K after the unlock.

    I've been using a Sapphire RX 470 4GB for nearly 6 months now. It's been great. My latest use of this card is to make an external display with built-in eGPU.

    akitio-thunder2-rx-470-monitor-built-in-egpu.jpg
     
  4. joebclash macrumors regular

    Joined:
    Jun 14, 2016
    #4
    Where are you getting this unlock script from? Can you provide a link?
     
  5. Jackdown_101 thread starter macrumors newbie

    Joined:
    Feb 28, 2017
    #5
  6. ActionableMango macrumors 604

    ActionableMango

    Joined:
    Sep 21, 2010
    #6
    That is amazing!
     
  7. theitsage macrumors 6502a

    Joined:
    Aug 28, 2005
    #7
    All credits go to okrasit, Fl0r!an, and goalque - the guys who discovered these workarounds and put the script together.
    --- Post Merged, Mar 6, 2017 ---
    It's was mounted with a $10 VESA adapter. Here it is in action with a Mid 2011 Mac mini. :D

     
  8. Fl0r!an, Mar 7, 2017
    Last edited: Mar 7, 2017

    Fl0r!an macrumors 6502a

    Joined:
    Aug 14, 2007
    #8
    Using the RX 480 patch will most likely make the card report 36 CUs (e.g. in Luxmark). Should be just cosmetic, but the "correct" solution should look like that:

    Change number of CU's from 16 to 32:
    48 B8 02 00 00 00 01 00 00 00 48 89 43 54 C7 43 7C 08 00 00 00
    48 B8 04 00 00 00 01 00 00 00 48 89 43 54 C7 43 7C 10 00 00 00

    Remove CU limit (didn't alter for P10):
    0F 42 C8 89 8B 80 00 00 00 44 88 B3 99 00 00 00 44 88 73 20
    90 90 90 89 8B 80 00 00 00 44 88 B3 99 00 00 00 44 88 73 20

    Change init function to Ellesmere instead of Baffin:
    E8 49 85 FE FF BE 48 01 00 00 4C 89 F7
    E8 46 E4 00 00 BE 48 01 00 00 4C 89 F7
     
  9. Asgorath macrumors 65816

    Joined:
    Mar 30, 2012
    #9
    Be prepared to deal with the fact that the disabled CUs are faulty in some way, which is why they were disabled in the first place. It's extremely common for imperfect GPUs to have units disabled and sold as the lower-end model, while the perfect GPUs are sold as the higher-end model (RX 480 in this case). Just because you can hack the UEFI/VBIOS on the card to re-enable the disabled units, doesn't mean you should actually do it.
     
  10. h9826790 macrumors 604

    h9826790

    Joined:
    Apr 3, 2014
    Location:
    Hong Kong
    #10
    Hold on. Isn't Fl0r!an talking about kext edit? That should not able to activate any faulty cores that disabled by the firmware/ hardware.
     
  11. Jackdown_101 thread starter macrumors newbie

    Joined:
    Feb 28, 2017
    #11
    Wow thanks!
    --- Post Merged, Mar 7, 2017 ---
    This is pretty much what I was trying to get at with my first post I think. In the case of the RX460/470/480 Sierra only has the kexts natively for the 460. The clever people above figured out how to get the 470 and 480 working in Sierra BUT the Mac's software would only allow it to recognise the 16 cores of the 460 meaninging that the 470 and 480 ran slightly crippled. Fl0rian's kext edits allow Sierra to use all the cards cores.

    (I think that's right!)

    My concern was with allowing Sierra to 'use' 36 cores on an rx470 using the kext hack of the RX480 when potentially some of them would have been locked away by AMD for being faulty/sub standard.
     
  12. Asgorath macrumors 65816

    Joined:
    Mar 30, 2012
    #12
    I'm answering the first post, not talking about kext edits specifically. My point is that if an RX 470 has several CUs disabled, then it's highly likely that this isn't a perfect GPU and that there's a physical issue on the disabled CUs. This is extremely common in all modern GPUs, and allows the GPU to be salvaged and sold as a lower-end model rather than becoming scrap.

    Edit: In other words, why would AMD/NVIDIA disable otherwise perfectly good units just to sell it at a lower price? They wouldn't, they'd use that GPU for a higher-end card and make more money. Thus, if the card could physically be an RX 480, then AMD would sell it as an RX 480 not an RX 470.
     
  13. h9826790 macrumors 604

    h9826790

    Joined:
    Apr 3, 2014
    Location:
    Hong Kong
    #13
    I totally agree with your point that we should not use those potential faulty cores. However, OP was asking about unlock those cores by kext edit / script. Which, IMO, not quite possible to activate any factory disabled cores (at hardware / firmware level), but can only activate the healthy cores that was disabled by the driver.

    My understanding is like this.

    A) In normal situation, RX470

    Hardware (32 CU) -> firmware (correctly init all 32 CU) -> driver (able to see all 32 CU)

    b) Possible situation, RX 470

    Hardware (32 good CU + 4 bad CU = total 36 CU) -> firmware (only activated the 32 good CU) -> driver (can only see 32 CU)

    c) macOS without kext mod

    Hardware (no matter case A or B) -> firmware (only "release" 32 CU) -> driver (only use 16CU out of 32)

    d) by running script / kext mod

    Hardware (no matter case A or B) -> firmware (only "release" 32 CU) -> driver (can only use up to 32 CU)

    I doubt if any script can make the driver able to "see" the cores that locked at the firmware stage. In the driver's point of view, those faulty cores should not exist, no matter how the user mod the kext, what's the number reported in Luxmark. Still only the healthy cores that released by the firmware can be used.

    Of course, I am not an expert in this area. I may be totally wrong. It's just my logic told me that the driver at down stream cannot override the upper stream's limitation. I expect there is some hard limit in the firmware (e.g. core count) which cannot be changed by the software / driver, because the manufacture never expect anyone need to unlock them. If those possible faulty cores can be unlocked, I will be very very surprise that can be done in macOS but not in Windows yet. I am sure lots of Windows' guys willing to develop a software that unlock those cores and try their luck if they can get more performance from the same card.
     
  14. Fl0r!an macrumors 6502a

    Joined:
    Aug 14, 2007
    #14
    Increasing the number of CUs beyond the actual core count will make the driver report more CUs, but they won't be used. As I said, I guess it's just cosmetic, but entering the correct number shouldn't hurt...
     
  15. Jackdown_101 thread starter macrumors newbie

    Joined:
    Feb 28, 2017
    #15
    I've started a new thread for myself here but having put the Sapphire 8GB Rx470 in and run (I think) the 4100.kext changes I've got boot but no acceleration. The card is recognised in system profiler as an R9 xxx as expected without altering it. However it is not recognised by luxmark etc.

    Thanks for even more ongoing help.
     

Share This Page