RX470 compute units

Jackdown_101

macrumors newbie
Original poster
Feb 28, 2017
27
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.
 
Last edited:

h9826790

macrumors G5
Apr 3, 2014
14,264
6,861
Hong Kong
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).
 

theitsage

Suspended
Aug 28, 2005
795
860
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
 
Last edited:

joebclash

macrumors regular
Jun 14, 2016
196
114
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.
Where are you getting this unlock script from? Can you provide a link?
 

theitsage

Suspended
Aug 28, 2005
795
860
The forum superstar itsage who replied above has a good link to it in his how to install rx480 blog. Look in the performance Easter egg section
https://www.theitsage.com/install-radeon-rx-480-gpu-macos-sierra/
All credits go to okrasit, Fl0r!an, and goalque - the guys who discovered these workarounds and put the script together.
[doublepost=1488859649][/doublepost]
That is amazing!
It's was mounted with a $10 VESA adapter. Here it is in action with a Mid 2011 Mac mini. :D

 
  • Like
Reactions: thornslack

Fl0r!an

macrumors 6502a
Aug 14, 2007
906
526
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
 
Last edited:
  • Like
Reactions: theitsage

Asgorath

macrumors 68000
Mar 30, 2012
1,573
479
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.
 

h9826790

macrumors G5
Apr 3, 2014
14,264
6,861
Hong Kong
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.
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.
 

Jackdown_101

macrumors newbie
Original poster
Feb 28, 2017
27
1
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
Wow thanks!
[doublepost=1488911100][/doublepost]
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.
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.
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.
 

Asgorath

macrumors 68000
Mar 30, 2012
1,573
479
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.
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.
 

h9826790

macrumors G5
Apr 3, 2014
14,264
6,861
Hong Kong
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.
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.
 
  • Like
Reactions: JoSch

Fl0r!an

macrumors 6502a
Aug 14, 2007
906
526
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...
 

Jackdown_101

macrumors newbie
Original poster
Feb 28, 2017
27
1
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.

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