Giter VIP home page Giter VIP logo

amdmemorytweak's Introduction

AMD Memory Tweak


Read and modify memory timings "on the fly"


Please be cautious, this --> https://github.com/ELI0VP <-- is obviously a fake account and is most probably spreading spyware/viruses, etc..

AMD Memory Tweak XL Released!

Link

Support

  • GDDR5 Based AMD GPU's
  • HBM / HBM2 Based AMD GPU's
  • Linux
  • Windows (Beta)

Requirements

  • One or more AMD Radeon GPU's
  • amdgpu-pro | ROCM (Verified working on amdgpu-pro 18.30)
  • Adrenaline (Verified working on v19.4.1/v19.5.*)

Build (Linux)

Prerequisites:

Building:

$ git clone https://github.com/Eliovp/amdmemorytweak
$ cd amdmemorytweak/linux
$ g++ AmdMemTweak.cpp -lpci -lresolv -o amdmemtweak

Build (Windows)

  • Clone repo
  • Launch VS Project
  • Build!

Usage & Instructions

Global command line options

Command User Input Extra Info
- -help Show this output
- -version|--v Show version info
- -gpu|- -i Comma-Seperated gpu indices Selected device(s)
- -current List current twiming values
Command line options: (HBM2)

Command User Input Extra Info
- -CL|- -cl [value] Cas Latency
- -RAS|- -ras [value] Active to PRECHARGE command period
- -RCDRD|- -rcdrd [value] Active to READ command delay
- -RCDWR|- -rcdwr [value] Active to WRITE command delay
- -RC|- -rc [value] Active to Active command period
- -RP|- -rp [value] Precharge command period
- -RRDS|- -rrds [value] Active bank A to Active or Single bank Refresh bank B command delay different bank group
- -RRDL|- -rrdl [value] Active bank A to Active or Single Bank Refresh bank B command delay same bank group
- -RTP|- -rtp [value] Read to precharge delay
- -FAW|- -faw [value] Four Active Window
- -CWL|- -cwl [value]
- -WTRS|- -wtrs [value] Write to read delay
- -WTRL|- -wtrl [value] tWTR = tWTRL when bank groups is enabled and both WRITE and READ
- -WR|- -wr [value] Write Recovery Time
- -RREFD|- -rrefd [value]
- -RDRDDD|- -rdrddd [value]
- -RDRDSD|- -rdrdsd [value]
- -RDRDSC|- -rdrdsc [value]
- -RDRDSCL|- -rdrdscl [value]
- -WRWRDD|- -wrwrdd [value]
- -WRWRSD|- -wrwrsd [value]
- -WRWRSC|- -wrwrsc [value]
- -WRWRSCL|- -wrwrscl [value]
- -WRRD|- -wrrd [value]
- -RDWR|- -rdwr [value]
- -REF|- -ref [value] Average Periodic Refresh Interval
- -MRD|- -mrd [value] Mode Register Set command cycle time
- -MOD|- -mod [value] Mode Register Set command update delay
- -XS|- -xs [value] Self refresh exit period
- -XSMRS|- -xsmrs [value]
- -PD|- -pd [value] Power down entry to exit time
- -CKSRE|- -cksre [value] Valid CK Clock required after self refresh or power-down entry
- -CKSRX|- -cksrx [value] Valid CK Clock required before self refresh power down exit
- -RFCPB|- -rfcpb [value]
- -STAG|- -stag [value]
- -XP|- -xp [value]
- -CPDED|- -cpded [value]
- -CKE|- -cke [value]
- -RDDATA|- -rddata [value]
- -WRLAT|- -wrlat [value]
- -RDLAT|- -rdlat [value]
- -WRDATA|- -wrdata [value]
- -CKESTAG|- -ckestag [value]
- -RFC|- -rfc [value] Auto Refresh Row Cycle Time
Command line options: (HBM)

Command User Input Extra Info
- -CKSRE|- -cksre [value]
- -CKSRX|- -cksrx [value]
- -CKE_PULSE|- -cke_pulse [value]
- -CKE|- -cke [value]
- -SEQ_IDLE|- -seq_idle [value]
- -CL|- -cl [value] CAS to data return latency
- -W2R|- -w2r [value] Write to read turn
- -R2R|- -r2r [value] Read to read time
- -CCDL|- -ccdl [value] Cycles between r/w from bank A to r/w bank B
- -R2W|- -r2w [value] Read to write turn
- -NOPR|- -nopr [value] Extra cycle(s) between successive read bursts
- -NOPW|- -nopw [value] Extra cycle(s) between successive write bursts
- -RCDW|- -rcdw [value] # of cycles from active to write
- -RCDWA|- -rcdwa [value] # of cycles from active to write with auto-precharge
- -RCDR|- -rcdr [value] # of cycles from active to read
- -RCDRA|- -rcdra [value] # of cycles from active to read with auto-precharge
- -RRD|- -rrd [value] # of cycles from active bank a to active bank b
- -RC|- -rc [value] # of cycles from active to active/auto refresh
- -MRD|- -mrd [value]
- -RRDL|- -rrdl [value]
- -RFC|- -rfc [value] Auto-refresh command period
- -TRP|- -trp [value] Precharge command period
- -RP_WRA|- -rp_wra [value] From write with auto-precharge to active
- -RP_RDA|- -rp_rda [value] From read with auto-precharge to active
- -WDATATR|- -wdatatr [value]
- -T32AW|- -t32aw [value]
- -CRCWL|- -crcwl [value]
- -CRCRL|- -crcrl [value]
- -FAW|- -faw [value]
- -PA2WDATA|- -pa2wdata [value]
- -PA2RDATA|- -pa2rdata [value]
- -REF|- -ref [value] Refresh Rate
- -ENB|- -enb [value]
- -CNT|- -cnt [value]
- -TRC|- -trc [value]
Command line options: (GDDR5)

Command User Input Extra Info
- -CKSRE|- -cksre [value]
- -CKSRX|- -cksrx [value]
- -CKE_PULSE|- -cke_pulse [value]
- -CKE|- -cke [value]
- -SEQ_IDLE|- -seq_idle [value]
- -CL|- -cl [value] CAS to data return latency
- -W2R|- -w2r [value] Write to read turn
- -R2R|- -r2r [value] Read to read time
- -CCDL|- -ccdl [value] Cycles between r/w from bank A to r/w bank B
- -R2W|- -r2w [value] Read to write turn
- -NOPR|- -nopr [value] Extra cycle(s) between successive read bursts
- -NOPW|- -nopw [value] Extra cycle(s) between successive write bursts
- -RCDW|- -rcdw [value] # of cycles from active to write
- -RCDWA|- -rcdwa [value] # of cycles from active to write with auto-precharge
- -RCDR|- -rcdr [value] # of cycles from active to read
- -RCDRA|- -rcdra [value] # of cycles from active to read with auto-precharge
- -RRD|- -rrd [value] # of cycles from active bank a to active bank b
- -RC|- -rc [value] # of cycles from active to active/auto refresh
- -RFC|- -rfc [value] Auto-refresh command period
- -TRP|- -trp [value] Precharge command period
- -RP_WRA|- -rp_wra [value] From write with auto-precharge to active
- -RP_RDA|- -rp_rda [value] From read with auto-precharge to active
- -WDATATR|- -wdatatr [value]
- -T32AW|- -t32aw [value]
- -CRCWL|- -crcwl [value]
- -CRCRL|- -crcrl [value]
- -FAW|- -faw [value]
- -PA2WDATA|- -pa2wdata [value]
- -PA2RDATA|- -pa2rdata [value]
- -RAS|- -ras [value]
- -ACTRD|- -actrd [value]
- -ACTWR|- -actwr [value]
- -RASMACTRD|- -rasmactrd [value]
- -RASMACWTR|- -rasmacwtr [value]
- -RAS2RAS|- -ras2ras [value]
- -RP|- -rp [value]
- -WRPLUSRP|- -wrplusrp [value]
- -BUS_TURN|- -bus_turn [value]
- -REF|- -ref [value] Refresh Rate
Example Usage (Linux):

$ sudo ./amdmemtool --i 0,3,5 --faw 100 --RFC 100
Example Usage (Windows):

C:\Users\You\Desktop\WinAMDTweak.exe --i 1,2,4 --rfc 100 --RC 100

(These are just examples! Don't try these at home! :p)

Make sure to run the program first with parameter --current to see what the current values are. Current values may change based on state of the GPU, in other words, make sure the GPU is under load when running --current. HBM2 Based GPU's do not need to be under load to apply timing changes. It is often better to apply new timings before starting a benchmark/mining tool.

Hints: Some timings are stability timings, lowering these will lower stability. Such as tRC. Some timings might require a higher value for performance to improve. Such as tREF. Some timings have a min/max value, going outside this range will result into it defaulting back to original value. Such as tCL Some timings are dynamic, they change based on the vbios values and active clocks. Dram timings. ...

Row Access Timings tRC, tRAS, tRCDRD, tRCDWR, tRRDL, tRRDS, tFAW, tRTP Column Access Timings tCCDL, tCCDS, tCCDR, tWTRL, tWTRS, tRTW, Refresh Timings tRFC, tRFCSB, tRREFD, tREFI

Some extra info

Still not all possible timings have been exposed. However, it's not such a big deal to add more of them in the tool. The ones available are more or like the most important ones.

Some users have reported very nice results already, please continue to contribute to these results. Example

Have fun!

Cheers

Tips

  • 3GBgapb49BZ7fBPXnbetqbnMn2KiGNzUXf
  • 0x8C77C212da3e12cad1AfB8824CF74b1CC04d2F7C

In the unlikely event of not owning either BTC or ETH and you do want to be an amazing person and tip, shapeshift, changelly, simpleswap, ... are great ways to solve that "issue" ;-)

Todos

  • Nothing

License

GPL

amdmemorytweak's People

Contributors

eliovp avatar lookfirst avatar vanities avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

amdmemorytweak's Issues

closed source?

This project is now closed source? :(

There is build options, but u make only binary releases?
Build (Windows)

Clone repo
Launch VS Project
Build!

GUI issues with applying timings

So I applied the timings I found in a youtube video for my vega 64 nitro+ (I have two of those - also if worth knowing preexisting OC was 1100 850mV core and 1100 900mV mem)

(reference link for timings https://youtu.be/xJWWEecwZoU?t=182)

And it worked GREAT for days my mh/s rate for ethereum was about 42 Mh/s and ti got to 49-50 Mh/s

The only issue was (and which I didnt notice when I applied to both GPUs the timings) that the timings stayed only for GPU0 and GPU1 had default timings (I noticed that because the Mh/s on GPU1 stayed at 42 while the other was near 50 all the time)

So I tried to manually enter them and to enter them via loading an exported value profile no luck...

Either it seems to have saved the timings (by refreshing the values on 2nd GPU the timings displayed in the desired values and also closing and reopening the gui still seemed to show the desired timings ) the problem is that now either my driver hangs or windows hang "Thread stuck in driver BSOD" or nothing happens (getting less MH/s on top of that like 37 -39 for both cards )

trying to just apply the timings to only the first GPU again (the way it worked for days with no issue) seems to apply them but Mh/s dont change (OC clocks during all those timing changing trials stayed the same btw its not that clocks have changed both in the driver and in the tool)

Also what I noticed is that the only way to enter values (and seem to stay) on the 2nd GPU is if the 2nd GPU works on something (and LEDs of 2nd GPU light up, they stay OFF when it doesnt do anything ) the problem with that is that 9 times out of 10 when the 2nd GPU works and I change values something brakes.... The issue is not present for the 1st GPU since it is "live" all the time.

My OS is windows 10 with latest updates including AMD drivers directly downloaded from amd.

EDIT:

Ok this might got ignored because you one would think that simply the GPU doesnt like the timings but I think I got indications that point that it is a glitch in the GUI.

So what I did is enable IGPU (now both graphics cards have turned off leds since they are not used -as to previously only the 2nd one that couldn't get the timings btw had its leds off-

I enter the timings

And now BOTH GPUs dont get the timings

And BOTH GPUs crash if I try to reenable the timings while they are underload.

Which indicated that in order to the settings to be registered by the gui the GPU needs to be enabled (elevated power state ? dont know what the technical term is what I mean is leds on the GPU without it having a workload )

Could you please try to figure a workaround for that ? Thanks a lot.

EDIT2 (partial workaround):

So since this works without being a programmer myself I am completely sure now that the issue is because of a bug in vega drivers or in the GUI.

So first attempt was to just run an other miner with fake pool data (so that the GPUs will get to an elevated powerstate/leds on since otherwise the timings dont get enabled by the GUI but without actually having a workload since either because of the drivers or because of the GUI the system crashes )

then enable the timings

Then run the actuall miner I am using and closing the "fake" one immediately

It seemed to work so no crashes but mh/s were at the default levels (when no timings are tuned) and the powerdraw for some reason was enormous!! like 40% more than before.... but everytime I refreshed the GUI the timings seemed to be set to the tuned ones...

but trying to re enable them just to be sure crashes the system

So the solution/trick :

It basically its the same trick than above only this time I dont open a fake miner... I load the GUI in advanced and import the timings but DONT enable them just yet.

I run the miner and while it start initializing (so enabling the GPUs/LEDS on but no workload) I quickly switched to the the GUY whic already had the timing tuning imported and click on appl;y on both GPUs/tabs

AND IT WORKS both GPUS now perform at 51Mh/s and the powerdraw is as it should be

This indicated to me that the GUI just does some garbage data when trying to set things up if not perfect conditions are met (GPU enabled and GPU not under load)

bug detecting card in pci_find_instance ?

I get the following error message when running the latest version

Cannot find DRI instance for pci:0000:01:00.0

On my system /sys/kernel/debug/dri/$X/name is an empty file, but pci_find_instance seems to expect there to be something in there. This is causing the above error (if I understand correctly).

On my test system there are 5 cards, and they are numbered 0-5 in /sys/kernel/debug/dri/ , so I removed the call to pci_find_instance entirely and replaced

int instance = pci_find_instance(buffer);

at line 1505 with

int instance = i;

and everything works as expected. However this doesn't work on all rigs.

My test system has Lexa rx550's in it, so I also had to add dev->device_id == 0x699f) || // Lexa [Radeon RX550] to IsRelevantDeviceID to get everything working. I get the same problem on a a 580/570 rig though (exactly the same kernel/amdgpu-pro version).

System details:

Ubuntu 16.04,
kernel 4.4.0
amdgpu-pro 18.10-572953

Thanks

tCL change does nothing

I tweaked my Red Devil Vega 56 and I noticed that changing the tCL does nothing at all for me. I put it all the way down to 1 and applied and nothing happened, so I assume the steps in between did nothing at all, because it had not impact on the performance too. Some stats improved the performance greatly, but I don't know if there were other timings that were not impacted by changing them. I just noticed it, because everyone on reddit said that tCL should have the biggest impact on performance.

I have to add that I flashed my Red Devil 56 with a reference Powercolor Vega 64 Bios. I don't know if this has any impact on it.

I tested it with the memory benchmark, aswell as three games.

I am using it on Win 10 GUI version and drivers 19.4.3 aswell as 19.5.1 were tested by me.

GUI: FAN controls get overwitten due time after applying them

So at least on Sapphire vega 64 nitro + cards (currently I ddint test this in other other GPU other than my 2 Nitro+ ones)

When you set fan controls (And without touching any other tweaker/OC tool or open the adrenaline window) initially they apply (I can hear the fans working harder which agrees to my settings for given temperatures )

but suddenly after some time passes and while hitting and exceeding temperatures (according to hwinfo seonsors) they seem to get to stock settings

e.g I set it to temp 65C ->60% 70C->80% 76C-> 90%

on initial application of the settings through the GUI and while the GPU is e.g at 70C I can hear the FANS working harder but suddenly after a few minutes and while the temperature either is on 70C or reaches/increases 76C the fans are more silent.

I run the Sapphire fan test application and all the fans can maintain 100% and are labeled as healthy . (obviously I reset the 100% on that program provided by sapphire and close this application before applying fan controls with the GUI of your tweaker)

on a sidenote (so less important but i'll just mention it) it is not possible to set higher fan speeds on lower temperatures

Eg 65C- > 100% 70C -> 80% 76C-> 90%

There must be a linear increase so the higher the temp flag the higher the % usage must be otherwise it returns an error.

P.S I am not sure but I also doubt that the miner resets the fan levels since on the config file there are no settings (e.g -settingname value) other than my pool and worker config

Bsod on windows

Setup
5 vega 56(4 hynix) 1(samsung). Motherboard Asus b250 mining expert. Ram 8 gb. Processor g4600
After applying settings for memory timings using cmd as administrator and starting the miner (teamred miner 0.4.4). I get bsod saying "Video Scheduler Internal error ".
I have tried both 0.16 and 0.17 version no matter what settings for powerplay table that i use it always gives me bsod.
Please could you help me what am i doing wrong.

Feature request - timings decoder

Hey,

is it possible to add something like this?
https://github.com/integralfx/BIOSTimingsDecoder

i mean just input field to put allready created memory straps. So i can save it as Export in your Amazing APP:)

i know similar feature was requested before, but other tools cant generate your exports:( u allready implemented overdrive, so it would be really nice to have it all in one tool:) Maybe build in atiflash too:D

Radeon VII - not yet implemented?

Hey,

Radeon VII :
C:\amdtweak>WinAMDTweak.exe --i 1 --current
GPU 1: Radeon VII Memory state: 0x11E (1200MHz)
Timing 1 CL: 22 RAS: 33 RCDRD: 14 RCDWR: 10
Timing 2 RCAb (RC): 47 RCPb (RC): 47 RPAb (RP): 14 RPPb (RP): 14
Timing 3 RRDS: 4 RRDL: 4 RTP: 5
Timing 4 FAW: 16
Timing 5 CWL: 7 WTRS: 4 WTRL: 9
Timing 6 WR: 16
Timing 7 RREFD: 8
Timing 8 RDRDDD: 3 RDRDSD: 2 RDRDSC: 1 RDRDSCL: 3
Timing 9 WRWRDD: 3 WRWRSD: 2 WRWRSC: 1 WRWRSCL: 3
Timing 10 WRRD: 1 RDWR: 21
Timing 12 REF: 3900
Timing 13 MRD: 8 MOD: 15
Timing 14 XS: 270
Timing 16 XSMRS: 8
Timing 17 PD: 8 CKSRE: 20 CKSRX: 20
Timing 20 RFCPB: 160 STAG: 4
Timing 21 XP: 8 CPDED: 2 CKE: 8
Timing 22 RDDATA: 20 WRLAT: 5 RDLAT: 18 WRDATA: 1
Timing 23 CKESTAG: 66
RFC Timing RFC: 260

RAS2RAS 255 etc is this ok? or not yet implemented? If not could u please implement it.

is it possible to pass parameters with GUI tool? Like i want to apply original values (only some) for Radeon VII. Cant get thees parameters working with non GUI version:(
WinAMDTweak.exe --i 1 --TRCDW 31 --TRCDWA 31 --TRCDR 31 --TRRD 15 --TR 127
WinAMDTweak.exe --i 1 --TR2W 31 --TW2R 31 --TCL 31
WinAMDTweak.exe --i 1 --TRP_RDA 127 --TRP 63 --TRFC 511
WinAMDTweak.exe --i 1 --TFAW 31 --TCRCRL 7 --TCRCWL 31 TFAW32 15
WinAMDTweak.exe --i 1 --ACTRD 27 --ACTWR 22 --RASMACTRD 44 --RASMACTWR 49

btw:

  • old tool showing as current: RFC Timing RFC: 260 and BETA GUI showing tRFC 511
  • ohgodadecode showing me differend values WinAMDTweak.exe --i 1 --current (should be showing same?)

for example:
as C:\amdtweak>ohgodadecode.exe BBB000000000000022889D0073EE8D53805515133ECF560C004E26017E0514206A8900A00200312 01C143840C5303F17

When i get this working i will send my tweaking results. THX for this awesome tool

new version with gui

downloaded, unpacked and run exe under windows. and nothing, no sign that launched

what could be wrong?

feature request - use Mesa driver

Hello,
Considering the Linux driver's kernel-side element is common to both the closed source and the open source driver, is it possible to make your tool work with the open source driver too? If not, why?
Regards

GDDR6 Support

Hello,
Yes i understand that it's for AMD but do you think that it's possible to support for AMD/NVIDIA GDDR6/X memories ?

Thank you

Cannot access file C:\Windows\system32\drivers\IOMap64.sys

image

The error as per the the attached image is displayed when running the application under windows 10.

I'm currently running drivers version 19.4.1 and windows 10 version 1809.

It might be something I'm doing or something I'm running in the background. I've run process explorer though and it doesn't show that the file IOMap64.sys is open.

Thank you

Linux Build

Need some help with the build for Ubuntu 18.04. I think I've installed the prerequisite packages, but nothing seems to happen when I execute "g++ amdmemorytweak.cpp -lpci -lresolv -o amdmemorytweak" nothing happens...

Maybe if you could provide build instructions that don't assume the prerequisites are installed? thanks

CLI 0.1.7 doesn't work --REF with Polaris

CLI 0.1.7 doesn't work --REF command with RX Polaris but in same time GUI 0.2.2 beta5 can change it without any problems. Tried with 19.4.1 and 19.5.2, same issue. It also doesn't show REF value after --current command

upd fixed in 0.8.1, my mistake

Settings not applying?

Image

As shown in the image above, my timings are not applying. I've tried 18.12.3 and 19.4.1 drivers, but they don't work either.

I also tried running GPU-Z render test while applying the timings, but that doesn't work.

I also idle at 2000MHz memory frequency so I think that might be causing it. My friend with an RX 580 also has the same issue I have and he also idled at 2000MHz.

Specs:
Nitro+ 570 4GB
Win 10 1809

Question in regards to correct values

Hi, I have successfully built the tool but I have zero knowledge on what values should be inputted into the tool. I believe it might be very good to have a brief description on what each option does and what is necessary to increase hashrate on specific devices, for example i run RX 570's and would love to get these hashing higher I just do not know what values to change in order to do so.

Opening Problem

Hi Eliovp, I tried to use the latest version, but it shows this error, anything to do? 12 Vega 64 - 19.4.1 on Windows 10
1

Can't start

Capture
Keep getting this error
tried several drivers uninstalled msi after burner
ran as admin

GPU distinguishing

Is there a way to distinguish same GPUs? For example, identify GPU by Bus or something else that can be accessed from OpenCL?

Thanks!

ADL Exeption

I am using amdmemorytweak on my ryzen pc with windows 10. works great. on my i5-4770k with windows 10 also.

on my miner a amd a6-3650 on a msi-a75ma-g55 on windows 10. i keep getting the adl exeption error. i tried the latest driver and the november amd driver for my vega 56 and 64. those drivers work on the ryzen and i5 with amdmemorytweak.

Screenshot 2021-02-23 at 21 22 02

1st window contents: ADL2 overdriveN memory Timing leveli invalid adl
then a second window pops up with the same but temperature get invalid

when u click the second window it keeps popping up. only when you hit enter twice both windows close.

i have

Memory timing levels not available through the command line

Is there a way to access the predefined AMD memory timing levels that are available on the GUI, through the command line on linux. I ask as if I try to copy the values from the GUI to the command line on Linux, I get an immediate crash. I know the drivers aren't exactly the same and the values would be natively different, but is there a way to make that option available on the command line on Linux the way it is through the GUI on windows.

Modify your build command?

Can you please change your build command from:
g++ amdmemorytweak.cpp -lpci -lresolv

To:
g++ amdmemorytweak.cpp -lpci -lresolv -o amdmemorytweak

Otherwise it produces executalbe a.out

Cheers,
Marc

Feature request: --version CLI option

Hello elio, and thank you very much for your great work!

This is a feature request to add a command line option --version to output the program's version, example: "amdmemweak 0.x.x"

This will be helpful in our changelogs and automations, and will ensure your application follows good coding convention as well. Thank you!!!

~ melt
getpimp.org | miner.farm

feature request - apply straps

Hi,

I think lot of people would love to have option to apply strap directly, just pass it to the app, let app decode timings from it and apply.

Will you have time to do it? :)

Windows Support

Please is there a possibility that you add windows support for a fee?. We the windows users too want to tweak play with the settings.
Thanks

Running from cmd ?

Im not getting any output when I run from cmd, and if I try as admin, I get "Failed to load EIO.dll"

GUI works fine, but I am trying to create shortcut to apply my stable settings when I power up my PC.

I built as x64 in debug, should I be doing that another way?

How to load a XML file from command line

Hi,

I just want to apply a XML file before starting mining, everything from the command line. Right now I have to open the gui app, load the XML file, apply it and then start mining, but I need this to be applied automatically when running a single bat file.

PD: Great tool.

Use Profiles Similar to OverdriveNTool

Hey Heliox, thanks for doing this. It looks like your tool can almost replace OverdriveNTool as well. Once exception being the profiles. If you could implement profiles we could tune each card per algorithm and save it as a profile. In ODN this is done with an .ini file. Then we could write a .bat per algorithm and have those inputs automatically applied to all cards at once. The .bat could be named CNR and would look like this

OverdriveNTool.exe -p1"Vega56" -p2"Vega56" -p3"Vega56" -p4"Vega56" -p5"Vega56" -p6"Card6" -p7"Vega56" -p8"Vega56"

Obvioulsy AMDMemTweak.exe would replace OverdriveNTool.exe and I think you use -gpu instead of -p

Vega56 and Card6 get the values from the ini file which in ODNT looks something like this.

[Profile_5]
Name=Vega56
GPU_P0=852;900;0
GPU_P1=991;900;0
GPU_P2=1084;900;0
GPU_P3=1138;900;0
GPU_P4=1150;900;0
GPU_P5=1202;900;0
GPU_P6=1212;905;0
GPU_P7=1407;950
Mem_P0=167;900;0
Mem_P1=500;900;0
Mem_P2=800;900;0
Mem_P3=945;900
Fan_Acoustic=2400
Power_Target=0

[Profile_6]
Name=Card6
GPU_P0=852;800
GPU_P1=991;900
GPU_P2=1138;950
GPU_P3=1269;1000
GPU_P4=1312;1050
GPU_P5=1474;1100
GPU_P6=1077;950
GPU_P7=1112;950
Mem_P0=167;800
Mem_P1=500;800
Mem_P2=700;900
Mem_P3=900;900
Fan_Acoustic=2400
Power_Target=0

(Those values are from an older version of ODNT)

This would allow us to switch algos quickly without having to input numbers for each card (unless you have to restart the computer between algo switches) I use RainbowMiner to switch between the most profitable algos and something like this would enable me to switch from optimized timings for eth to optimized timings for cnr automatically.

I haven't had time to play around with this tool so maybe you already have something like this or it is planned.

Option to set clocks and voltages and disable Pstates in command line version

Hi,

gui version has option to disable power states, set voltages and frequency for memory and gpu, that is great, however these options are missing from CLI.

It would be nice to have it there as on windows we could then use just one tool to set everything - no need for overdriveN tool. It would simplify things. And I think since gui supports it alrady it is most likely almost done.

Radeon 7 + RX580 Windows 10

Hey,

trying to test this awesome tool on Radeon VII.
My problem is when i run
C:\amdtweak>WinAMDTweak.exe -i 0 --current
or
C:\amdtweak>WinAMDTweak.exe -i 1 --current
or
C:\amdtweak>WinAMDTweak.exe -i X --current
it still print same current values instead of giving me gpu0 RX580 values and gpu1 R7 values(?or im doing it wrong?):

GPU 0: Ellesmere [Radeon RX 470/480/570/570X/580/580X/590]
PMG: CKSRE: 2 CKSRX: 2 CKE_PULSE: 10 CKE: 10 SEQ_IDLE: 7
CAS: CL: 8 W2R: 12 R2R: 5 CCLD: 2 R2W: 13 NOPR: 0 NOPW: 0
RAS: RC: 15 RRD: 1 RCDRA: 5 RCDR: 5 RCDWA: 3 RCDW: 0
MISC: RFC: 25 TRP: 5 RP_RDA: 8 RP_WRA: 21
MISC2: WDATATR: 0 T32AW: 2 CRCWL: 17 CRCRL: 1 FAW: 0 PA2WDATA: 0 PA2RDATA: 0
M3(MR4): RAS: 10
DRAM1: RASMACTWR: 11 RASMACTRD: 7 ACTWR: 0 ACTRD: 4
DRAM2: RAS2RAS: 17 RP: 9 WRPLUSRP: 15 BUS_TURN: 9
GPU 1: Radeon VII Memory state: 0x11E (1200MHz)
Timing 1 CL: 22 RAS: 33 RCDRD: 14 RCDWR: 10
Timing 2 RCAb (RC): 47 RCPb (RC): 47 RPAb (RP): 14 RPPb (RP): 14
Timing 3 RRDS: 4 RRDL: 4 RTP: 5
Timing 4 FAW: 16
Timing 5 CWL: 7 WTRS: 4 WTRL: 9
Timing 6 WR: 16
Timing 7 RREFD: 8
Timing 8 RDRDDD: 3 RDRDSD: 2 RDRDSC: 1 RDRDSCL: 3
Timing 9 WRWRDD: 3 WRWRSD: 2 WRWRSC: 1 WRWRSCL: 3
Timing 10 WRRD: 1 RDWR: 21
Timing 12 REF: 3900
Timing 13 MRD: 8 MOD: 15
Timing 14 XS: 270
Timing 16 XSMRS: 8
Timing 17 PD: 8 CKSRE: 20 CKSRX: 20
Timing 20 RFCPB: 160 STAG: 4
Timing 21 XP: 8 CPDED: 2 CKE: 8
Timing 22 RDDATA: 20 WRLAT: 5 RDLAT: 18 WRDATA: 1
Timing 23 CKESTAG: 66
RFC Timing RFC: 260

When i try C:\amdtweak>WinAMDTweak.exe -i 1 --rc 255 It prints SET for both gpu0 and gpu1.

Decode memory timings from the given timing string.

Will it be possible for you to make your tool be able to decode values from the given timing string?
For example

./amdmemorytweak -s 777000000000000022CC1C00AD615C41C0590E152ECC8608006007000B031420FA8900A00300000010122F3FBA354019

So the ppl can actually use it for learning what's the difference between the default and moded timings. It will speed up the learning process for average users.

AMD Memory Tweak doesn't work!!!

Hi
Thank you for your good AMD Memory Twaeak tool. But it does't work from yesterday anymore!!!
The import/export/save.... keys disappeard!!!!
Please run the good tool again
many thanks

pci_find_instance not finding gpus properly

When I try to get the memory timings for the GPUs I have (RX 580s) this happens:

$ sudo amdmemorytweak --current
Cannot find DRI instance for pci:0000:0b:00.0

I am using the AMDGPU driver and am running Arch Linux (5.10.13-arch1-2).

Looking into this further I found that /sys/kernel/debug/dri/*/name exists and has data in it, but it is not what the program seems to expect. Rather than just the PCI id or the dev= bit being there to strip off, the full string I have is this:

amdgpu dev=0000:07:00.0 unique=0000:07:00.0

Clearly this doesn't work with the current logic there to handle it. To make it work I simply modified the code to use strstr to check if the pci_string value is inside the file and that works fine, though not sure if that's the "proper" way to do it, just a potential suggestion:

if (strstr(device, pci_string))
{
    closedir(dir);
    return atoi(entry->d_name);
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.