• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

Dropping voltage on GPU drops frequency

Joined
Sep 28, 2020
Messages
70 (0.05/day)
Hello,

I am trying to undervolt my R390 and the strangest thing is happening. When i lower the voltage of the certain frequency ... it will simply avoid that frequency and use the second last one. I attached an image. On it you can see frequency and voltage. If i change voltage of the top frequency from 1275 to 1250 and try to test it, instead of getting 1050Mhz i will get anywhere from 970 to 1010Mhz. To make sure the card isn't power limited, i even increased the power limit to +30%. So how can i undervolt my GPU but keep the original frequency ?
 

Attachments

  • Capture.JPG
    Capture.JPG
    33 KB · Views: 128
Joined
Sep 28, 2020
Messages
70 (0.05/day)
I just did some more testing and this is amazing. If i lower the voltage of the top bin, it will simply ignore it. So before it was boosting to 1050Mhz at 1.275V, but if i change it to 1.274V, 1.269V or anything, it will now only boost to 1010Mhz. Anyone has any idea ?
 
Joined
Sep 20, 2019
Messages
478 (0.28/day)
Processor i9-9900K @ 5.1GHz (H2O Cooled)
Motherboard Gigabyte Z390 Aorus Master
Cooling CPU = EK Velocity / GPU = EK Vector
Memory 32GB - G-Skill Trident Z RGB @ 3200MHz
Video Card(s) AMD RX 6900 XT (H2O Cooled)
Storage Samsung 860 EVO - 970 EVO - 870 QVO
Display(s) Samsung QN90A 50" 4K TV & LG 20" 1600x900
Case Lian Li O11-D
Audio Device(s) Presonus Studio 192
Power Supply Seasonic Prime Ultra Titanium 850W
Mouse Logitech MX Anywhere 2S
Keyboard Matias RGB Backlit Keyboard
Software Windows 10 & macOS (Hackintosh)
that appears to be a version of AMD's software I haven't used since running a RX 580 (~2018 or so)....I assume you have to use a version this old based on your also older card?

I remember doing something where I put the last at least two, if not three or four "states" at the same voltage value when I undervolted a RX 580 that was my daily driver. I don't remember if it was 100% necessary, ie, I was getting the same issue you're seeing and this was the fix, or if I just wanted more of a level plateau for voltage when the card was under heavy load......I know that is what I wanted, just not if it was required. So try this, put the last two states voltages at 1206mv (to match the 3rd highest voltage state), and see if the GPU clock can reach a higher state than the 3rd lowest state. ie if you make this change and it goes above 975mhz then the undervolt is working as intended. of course, keep in mind less voltage means less juice being fed to the chips and by principle you will lose some performance as a result typically. you may even want to drag down the power % slider too as clocks, voltage, and power all work together in this GPU equation.
 
Joined
Sep 28, 2020
Messages
70 (0.05/day)
Ok, so my states are like this:

0.9V 300Mhz
0.962V 533Mhz
1.066V 766Mhz
1.106V 884Mhz
1.156V 933Mhz
1.206V 977Mhz
1.243V 1011Mhz
1.275V 1050Mhz

I have Asus R390 OC Strix, this is the default of my card. If i change the last 3 states to 1.206V and leave frequency as it is ... i will boost to 1050Mhz as intended. OCCT will give me errors but undervolt will work. BUT, if i change the voltage from 1.206V to something like 1.250V or 1.270V or anything else, it will not work. Only the voltage values i wrote up, actualy work. And this is a problem because 1.250V might be stable for 1050Mhz, but 1.243V is not. Also ... if i adjust offset voltage in MSI Afterburner, again, it works, but i would like to test voltages so i can actualy write them to bios of the card itself and i cant write an offset there (or could i maybe ... if offset -10mV works ... just write -10mV to all values in bios ? I can confirm that custom bios values do indeed work once they are in the bios)

Another funny thing ... any program i try with custom voltage like 1.250V ... will simply not boost to that clock. But if i open any GPU test in AIDA64... even just open it, before starting the test itself ... i will get a bluescreen saying thread stuck in device driver
 
Joined
Sep 20, 2019
Messages
478 (0.28/day)
Processor i9-9900K @ 5.1GHz (H2O Cooled)
Motherboard Gigabyte Z390 Aorus Master
Cooling CPU = EK Velocity / GPU = EK Vector
Memory 32GB - G-Skill Trident Z RGB @ 3200MHz
Video Card(s) AMD RX 6900 XT (H2O Cooled)
Storage Samsung 860 EVO - 970 EVO - 870 QVO
Display(s) Samsung QN90A 50" 4K TV & LG 20" 1600x900
Case Lian Li O11-D
Audio Device(s) Presonus Studio 192
Power Supply Seasonic Prime Ultra Titanium 850W
Mouse Logitech MX Anywhere 2S
Keyboard Matias RGB Backlit Keyboard
Software Windows 10 & macOS (Hackintosh)
I'm going by memory here still so I could be wrong, but your positive response confirms my suspicion that you do indeed need to have duplicate voltage value entries for at least the top two states. I advised you to do the top three states as duplicates out of abundance of caution, and it works as I hoped it would and that is good. I think you can have more or less duplicates if you want FYI. now we know that is working properly, you need to tweak values to your liking and test.

what I can recommend is I believe at least the top two states needs to be the same value for voltage. with that said, if you need more voltage, such as 1.250V instead of 1.243V then make the top two states 1.250 instead. Leave the top third state as is at 1.206V (default). I believe what goes on here is the top state needed to be duplicated to the one directly below it (2nd to top). So you should be able to adjust it to a value you want, not just making the top state the same as the default 2nd state value. So putting the top two to 1.250V would be following this advice.....you will have to test that to see if my memory is serving you well here or if I got that part mixed up....again, its been several years since I did this.

If you are trying to use AMD software (adrenaline) and MSI software (afterburner) at the same time please stop that practice. pick one, or the other. having two software programs talking to the GPU like that will cause a conflict sooner or later if it hasn't given you headaches already. I'm not sure if you are experienced with these types of adjustments, as in overlcocking and undervolting etc kind of stuff? because if you're saying 1.250V is enough but 1.243V isn't enough for a clock speed of 1050Mhz....you just talked out your own problem and solution. You either need more voltage for that clock speed, or you need to drop the clock speed (underclock). And this means only you can find the values that work for your own card. You have general starting points it seems, now you will want to spend an hour or so tweaking values and running a heavy GPU load to test those values.

I'm not familiar with AIDA64 beyond knowing it's name and its a stress test program but if things are crashing during these tests putting a load on the GPU then it suggests the card isn't stable at that heavy of a load, or type of load. Personally I worry more about how it works in real life programs. If you edit video for example, test it in Adobe Premier and see the performance and stability you get....instead of running tests in other programs. So if you are doing creative work, test with those programs, if you game, run games you're currently playing. If your card works fine in what you actually and practically use then who gives a rats ass if AIDA64 makes it crash because AIDA64 is not a program you actually need to use. That's my 2cents on that.

If you have the power slider anything above 0% then get it dragged back to 0% or even a negative % value. In case you don't know giving less voltage means when the GPU tries to consume the same or more power it's more likely to crash. Clocks, voltage, and power are typically adjustments you need to make together rather than just a single adjustment to just one of them.
 
Joined
Sep 28, 2020
Messages
70 (0.05/day)
Thank you for taking your time to help me out, i will try to answer in points to avoid confusion:

1) I tried what you suggested and sadly it doesn't work. When i am lowering a certain states voltage, it will only allow me to set voltage to the same value as it's left state or less (For instance, lets say D6 is 1.243V and D7 is 1.275V. I can set D7 to 1.243V, 1.2432V or less, but if i change it to anything else, like 1.250V, it will ignore the last state). Even if i set the last 3 states to the same value .. lets say D5, D6 and D7 ... the same rule applies: D5 must be equal or less than D4. And u can see the problem here ... my default voltage for 1050Mhz is 1.275V. It will only allow me to apply voltage of 1.243V or less, which, obviously wouldn't pass the test and OCCT throws errors. I attached an image with some examples just so you can see the situation better.

2) While OCCT, 3Dmark, itd. completely ignores the bin in which i change voltage, AIDA64 is different. There are 2 GPU tests ... and it crashes before i actualy start them. I just click on the test to get a view at some stats ... and that is when it crashes, i even observed the frequency and it never got past 380Mhz ... that is where it crashed. So it would appear that when AIDA64 starts to read some values from the gpu ... the voltage i set is wrong and it crashes.

3) Right now i am using 17.7.1, it comes with Wattman by default, nothing i can do about that. I did try using afterburner before ever opening wattman to even accept the licence. Still, makes no difference. I tried using an older driver, 16.11.x i belive, the last version before wattman. And in that version, the voltage control is completely absent from the driver itself and with afterburner i can only set the offset. And since my gpu doesn't work with offset, that doesn't help me. I checked the bios for offset, there is supposed to be a 0x8D VDDC Offset table block under VRM. My cards rom doesn't have that and im using stock rom. Setting offset in afterburner works ... but im only using afterburner to get the correct values to later burn into bios.

4) When i said 1.250V is enough and 1.243V isnt, i got that information by setting the offset, i was stating the fact that i can only set 1.243V and cant set 1.250V. Though in the meantime i did some more testing and infact 1.250V isn't enough. More about that follows.

5) My power slider is at 0% right now, though i did test at +30% and -30% to see if this affects it ignoring the last state - it doesn't. I am trying to reach an undervolt that will be stable at both -30% and 0% and the range between, this is what i plan on using.

6) I did my share of overclocking, though i have to admit, not that much since the power slider has been around. It kind of changes the whole thing .. when i underclock the bin .. i actualy get a higher average frequency if i dont touch the power slider, which makes sense, if R is the same and we lower V .... I will lower also and in turn power, meaning it will take a higher frequency to reach the power limit. I verfied that with a couple examples today, an offset of -12mV will increase average frequency from 944Mhz to 964Mhz in a certain type of test. Power slider certanly makes testing interesting. For instance, voltage of 1.250V will pass the latest OCCT brutal test - in this test since its so brutal, frequency stays at around 950Mhz all the time. No error. Then i opened an older OCCT with resolution option and set it to 1024x768 - this nets about 100W less usage (monitoring with killawatt) and frequency stays around 1044-1050Mhz all the time. It reports errors after a few minutes. This is very interesting and the reason i am playing with this gpu, i like doing this.

7) I turned the net upside down and tried all possible solutions i found online regarding wattman, R9 390, oc problems, voltage problems ... i found some people with similar problems but no solution, many posts saying voltage control with wattman and R9 390 simply isnt working as it should.

8) Since i couldn't let it go, i did something quite dangerous. I started directly applying custom voltage to vbios and testing it. I did use a little safeguard though .. right now i am testing the highest state - 1050Mhz 1.275V by default. I tested it quicly with 1050Mhz 1.243V before making any changes in vbios ... it took about 2-3 minutes to crash under OCCT. If it takes that long to crash under OCCT, there is a good chance it will not crash while booting to windows. It could, but, im willing to take that gamble. So right now im just changing the last state ... first i tried 1.250V ... occt errors after few mins ... tried 1.260V .. same, 1.262V, same ... finaly 1.268V seems to be stable. It's not much but still, -7mV difference vs default, looking at my chart from previous tests should net me about 10Mhz higher clocks or 5W less power consumption. I also attached an image of some of my tests ... i was trying to determine which is more efficient: locking the frequency/voltage or just lowering the power slider. From the tests it would appear that the later is better. First column is max recorded power usage by killawatt in first 30 seconds of 3dmark test, second is the final 3dmark fire 4K score and the last 2 columns is the percentage, first one is about power usage, second is about score, for instance if i set the power limit to -30% ... i only lost 9.9% of 3dmark score but at the same time lowered the watt reading by 26.7%.

Conclusion: I no longer need either wattman or afterburner since im playing with the bios directly. Though it is still bothering me that i wasn't able to find the reason or the solution. I usualy do find them and this time its been like 3 days and nothing. Its bothering me to be honest and i am extremely interested to find out the reason ..

edit: Oh just 1 last thing ... don't know if it matters but ... MSI Afterburner and other such programs allow me to view the GPU core voltage. If i leave everything by default, meaning top bin 1050Mhz 1.275V ... the highest reading i will ever see in Afterburner will be 1.203V. No matter what test i run. So either there is a massive offset or this reading is not right. Just thought i would add this up.
 

Attachments

  • wierd.png
    wierd.png
    91.9 KB · Views: 77
  • testing.jpg
    testing.jpg
    1.2 MB · Views: 77
Last edited:

eidairaman1

The Exiled Airman
Joined
Jul 2, 2007
Messages
40,435 (6.57/day)
Location
Republic of Texas (True Patriot)
System Name PCGOD
Processor AMD FX 8350@ 5.0GHz
Motherboard Asus TUF 990FX Sabertooth R2 2901 Bios
Cooling Scythe Ashura, 2×BitFenix 230mm Spectre Pro LED (Blue,Green), 2x BitFenix 140mm Spectre Pro LED
Memory 16 GB Gskill Ripjaws X 2133 (2400 OC, 10-10-12-20-20, 1T, 1.65V)
Video Card(s) AMD Radeon 290 Sapphire Vapor-X
Storage Samsung 840 Pro 256GB, WD Velociraptor 1TB
Display(s) NEC Multisync LCD 1700V (Display Port Adapter)
Case AeroCool Xpredator Evil Blue Edition
Audio Device(s) Creative Labs Sound Blaster ZxR
Power Supply Seasonic 1250 XM2 Series (XP3)
Mouse Roccat Kone XTD
Keyboard Roccat Ryos MK Pro
Software Windows 7 Pro 64
Does it crash in games?

Bios controls the performance levels,you would need to use a hex editor to custom write a bios

Hello,

I am trying to undervolt my R390 and the strangest thing is happening. When i lower the voltage of the certain frequency ... it will simply avoid that frequency and use the second last one. I attached an image. On it you can see frequency and voltage. If i change voltage of the top frequency from 1275 to 1250 and try to test it, instead of getting 1050Mhz i will get anywhere from 970 to 1010Mhz. To make sure the card isn't power limited, i even increased the power limit to +30%. So how can i undervolt my GPU but keep the original frequency ?

Here is a guide by @gupsterg


Another bios modified.
 
Joined
Sep 28, 2020
Messages
70 (0.05/day)
I already flashed a custom bios :) Well, a stock bios with modded voltage values and i am now testing it since that is the only way i can actualy test individual states. I used similar guides, atiflash, hawai bios reader, etc.

If i undervoltage in drivers and play a game, it doesn't crash, it just ignores the last state D7 and stays in D6. Its same with 3dmark or occt or anything. Only AIDA64 crashed but NOT while i benchmark. It crashed when i open the GPU stress test interface, at that time the frequency is still around 300Mhz and i am not touching the voltage of that frequency whatsoever. To see how absurd this is ... if i set 1.263V in bios ... its totaly stable. If i then set 1.262V in drivers ... occt and games will still be stable but never go to D7 .. while aida64 will bsod when i open the gpu part. Just to give you some perspective ... i even tried 1.243V in tons of OCCT scenarios - it will give me errors but it will not lock, freeze, crash, nothing. So yeah.

I am wondering if maybe the driver somehow cant write those voltages down the right way. Like ... i write something but in reality, he writes something different. So i am wondering, where are those temporary voltages written when i use wattman ? In register ? In file ? So i could check and see what is actualy written there.
 

eidairaman1

The Exiled Airman
Joined
Jul 2, 2007
Messages
40,435 (6.57/day)
Location
Republic of Texas (True Patriot)
System Name PCGOD
Processor AMD FX 8350@ 5.0GHz
Motherboard Asus TUF 990FX Sabertooth R2 2901 Bios
Cooling Scythe Ashura, 2×BitFenix 230mm Spectre Pro LED (Blue,Green), 2x BitFenix 140mm Spectre Pro LED
Memory 16 GB Gskill Ripjaws X 2133 (2400 OC, 10-10-12-20-20, 1T, 1.65V)
Video Card(s) AMD Radeon 290 Sapphire Vapor-X
Storage Samsung 840 Pro 256GB, WD Velociraptor 1TB
Display(s) NEC Multisync LCD 1700V (Display Port Adapter)
Case AeroCool Xpredator Evil Blue Edition
Audio Device(s) Creative Labs Sound Blaster ZxR
Power Supply Seasonic 1250 XM2 Series (XP3)
Mouse Roccat Kone XTD
Keyboard Roccat Ryos MK Pro
Software Windows 7 Pro 64
I already flashed a custom bios :) Well, a stock bios with modded voltage values and i am now testing it since that is the only way i can actualy test individual states. I used similar guides, atiflash, hawai bios reader, etc.

If i undervoltage in drivers and play a game, it doesn't crash, it just ignores the last state D7 and stays in D6. Its same with 3dmark or occt or anything. Only AIDA64 crashed but NOT while i benchmark. It crashed when i open the GPU stress test interface, at that time the frequency is still around 300Mhz and i am not touching the voltage of that frequency whatsoever. To see how absurd this is ... if i set 1.263V in bios ... its totaly stable. If i then set 1.262V in drivers ... occt and games will still be stable but never go to D7 .. while aida64 will bsod when i open the gpu part. Just to give you some perspective ... i even tried 1.243V in tons of OCCT scenarios - it will give me errors but it will not lock, freeze, crash, nothing. So yeah.

I am wondering if maybe the driver somehow cant write those voltages down the right way. Like ... i write something but in reality, he writes something different. So i am wondering, where are those temporary voltages written when i use wattman ? In register ? In file ? So i could check and see what is actualy written there.
Check the guides
 
Joined
Sep 28, 2020
Messages
70 (0.05/day)
Could you point me as to what i am looking for and why ? I already know how to flash the bios, i did that and it works. What else am i supposed to find there ?
 

eidairaman1

The Exiled Airman
Joined
Jul 2, 2007
Messages
40,435 (6.57/day)
Location
Republic of Texas (True Patriot)
System Name PCGOD
Processor AMD FX 8350@ 5.0GHz
Motherboard Asus TUF 990FX Sabertooth R2 2901 Bios
Cooling Scythe Ashura, 2×BitFenix 230mm Spectre Pro LED (Blue,Green), 2x BitFenix 140mm Spectre Pro LED
Memory 16 GB Gskill Ripjaws X 2133 (2400 OC, 10-10-12-20-20, 1T, 1.65V)
Video Card(s) AMD Radeon 290 Sapphire Vapor-X
Storage Samsung 840 Pro 256GB, WD Velociraptor 1TB
Display(s) NEC Multisync LCD 1700V (Display Port Adapter)
Case AeroCool Xpredator Evil Blue Edition
Audio Device(s) Creative Labs Sound Blaster ZxR
Power Supply Seasonic 1250 XM2 Series (XP3)
Mouse Roccat Kone XTD
Keyboard Roccat Ryos MK Pro
Software Windows 7 Pro 64
Could you point me as to what i am looking for and why ? I already know how to flash the bios, i did that and it works. What else am i supposed to find there ?

Other mods there,look through the threads
 
Joined
Sep 28, 2020
Messages
70 (0.05/day)
The threads have 224 and 117 pages and i dont know what im looking for. Could you help me out and give me a link please ?
 
Joined
Sep 28, 2020
Messages
70 (0.05/day)
Alright, so its been a few days so i decided to hopefuly bring something good back and share my experience. Don't think it will help anyone since most people moved away from R9 390 a long time ago, but still.

I have been having lots of fun, this is why i got into tech in the first place, so many years ago. I learned some new things too. Testing has been slow since i had to mod vbios for every single adjustment and then test it. So i started at the back, trying to undervolt the highest state: D7 1050Mhz 1.275V. I did that, then i moved to D6 ... and so on until D3. But guess what .. when i went back to testing D7, suddenly it wasn't stable enough. Reducing D6 had an effect on D7 and broke the stable overclock. Which makes sense if u think about it ... there still has to be a transition from D6 to D7 .. So i turned the things around and started at D0 just to make sure the default settings are stable since i had some wierd problems with GPUz months back - wanted to rule this out.

So D0 300Mhz 0.9V is obviously OCCT stable, same with D1 533Mhz 0.944V. Then i moved to D2 766Mhz 1,006V. Now remember, this is all default values, i just locked all upper states to 766Mhz and 1,006. Its stable, but ... HWiNF064 is throwing me 1000s of errors every second. I went to double check the default bios just to make sure i didn't screw something up ... but i didnt. At this point i was sure the mem or the original settings were faulty so that would explain my gpuz problems. I tried lowering memory to 1430Mhz and it passed. Great i said, i can live with that. But then i went looking at the tables again ... I only locked GPU clock and left the MEM clock the way it was by default. And well ... in stock bios ... u can never see the situation where GPU clock is 766Mhz at 1,006V while the memory is at 1500Mhz. U can only see 766Mhz with 150Mhz clock ... but more importantly ... the voltage .. GPU and MEM voltages are connected. So yeah, another thing i learned.

Will be back once i finish testing to see the difference. It will be small but i love data :)

Alright, i found something interesting, writting it here incase someone else has the same problem.

So, 1 of the things that got me into undervolting was insane power draw when i was playing some 1080p youtube video. Just insane. So bad actualy that it made completely no difference if i used hardware acceleration or not, the only difference was if i didnt use it ... cpu was using all the power, if i used it ... cpu used less, graphics card used more. I will give you an example. I have i5 2500k, stock for now. Idling at 48W. If GPU is stock also, that simple 1080p@50 video on full screen will cost me a whooping 135W draw, measured from killawatt. A normal 1080p@30 video will draw around 120W.

I checked R9 390 reviews and it was the same there ... this card drawing 70W in a test where R7 270x used 30W and some nvidia card used 9W. It's embarrassing. So i did a little test and locked both gpu and ram to lowest possible: 300Mhz, 150Mhz, 0.9V. Ran those vids on youtube and surprise surprise, the same performance as before but suddenly i was using 80W instead of 135W. Now it took me a while to figure out what the problem is ... since GPU is running at 300Mhz at all times when i play youtube videos .... while memory was at 1500Mhz ... its stupid yes, but i didnt think it had any effect. But get this ... even though i was at 300Mhz which in table reads 0.900V ... i was reading a freakin 1.106V in my monitor programs. As it turns out, those tables are independant, meaning GPU can be at D0 while memory will be at D4 since they share voltage, memory will lift the voltage for itself but for gpu at the same time meaning gpu will burn a lot more power. I cant belive they left this unchecked.

Anyway i am testing solutions now. First one is to simply make D0 150Mhz, D1-D6 600Mhz and D7 1500Mhz. This lowered my 1080p vid power consumption from 135W to 100W. Now i will try setting D0-D6 to 150Mhz and see if it will stay at 150Mhz during freakin 1080p video playback. It all makes sense now ... cause i couldnt understand it that while my pc idles at 48W and at least half the day i dont do anything on it ... i still get like 120W average usage measuring kWh's with my killawatt. Well ... i always have youtube music playing .... and even though the vid is usualy static. ... it still renders it and sucks power.

Ok, excuse my language but im really happy to find this. I dont know if its with all cards or only with asus strix oc or maybe even just my sample. In anycase its interesting. Now i am wondering if this is the problem on some other cards aswell ? GPU staying on minimum frequency, but memory being dumb and lifting voltage ?
 
Top