This post is a quick guide to my success in achieving the expected hash rate for an AMD RX 580. For all benchmarks I’m using Ethminer under Windows 10. Numbers are accurate at the time of this blog (March 2021) on Ethereum mainnet (Epoch #400, 4.12GB DAG).
My goal with this project was to achieve the widely-claimed “stock” hashrate of 27MH/s for my RX 580. What I discovered is that there are several milestones between a truly unoptimized hashrate and the claimed figure, and I hope that documenting them might give others some idea where they are going wrong in the process.
I bought this card in November 2018 for gaming, and went through the RMA process in November 2020 to fix a common fault. The card was repaired under warranty and returned to me, and this is the baseline for my experiments today. The card in question is a Gigabyte RX 580 Gaming 8G v1.1 with core and memory clock of 1340MHz and 2000MHz, respectively, and 8GB of Hynix GDDR5 memory.
My initial experience with mining was quite disappointing. The GPU was running the F81 BIOS and an unknown driver (left up to Windows Update to decide). In this configuration I only achieved 7.8MH/s.
Updating the driver to 21.2.3 (the latest at the time of writing) did not offer any hashrate gains, until I turned on compute mode in the Radeon Software. This trivial change instantly boosted my hashrate to 20-21MH/s @ 110W but this still didn’t seem right – many claim 27MH/s is achievable out of the box.
I tried older drivers, opting for a fresh install – but encountered a known issue with Ethminer failing to find OpenCL platforms. Now, even the latest driver would not work with Ethminer. To work around this, I first installed the 18.6.1 driver, followed by the newer driver of my choice – without performing a clean install. I was unable to gain any further hashrate improvement with alternative drivers so reverted to 21.2.3.
I tried flashing the newer F82 BIOS from Gigabyte but again didn’t net any gains. I felt at this point that I had exhausted all options for achieving the heralded 27MH/s without overclocking, so I moved on to tweaking memory timings. This is a very straightforward process using PolarisBiosEditor since others have already found optimal settings for the RX 580, characterised by which manufacturer’s memory chips are used. The exact process is documented in many places so I won’t repeat it here. After setting appropriate straps for Hynix VRAM, my hashrate improved to 27MH/s @ 130W, which is not too bad (expected efficiency is 27MH/s @ 150W)
Having achieved my goal, the next step would be to try optimise clock rate and voltage for better efficiency. Claims of 30MH/s @ 73W (close to twice my current efficiency) have been reported.
So where did the initial claim of 27MH/s stock hashrate originate? Perhaps some don’t consider modifying memory timings and flashing a modded BIOS to be an aspect of overclocking. I think more likely is that some manufacturers have offered the RX 580 in mining variants, with tight memory timings out-of-the-box, or even with dual switch-selectable gaming/mining BIOS.
I’m surprised that in the end, the path to 27MH/s did not require any particular skill or expertise – rather, the difficulty lay in trying to piece together information across many sources – often conflicting and out of date. I’m late to the party here, but hopefully this resource can be of some use to others trying to reproduce similar results in the short future remaining for Ethereum mining.
To reach 30.5MH/s one common configuration is a core underclock to 1150MHz, memory overclock to 2150MHz, and undervolt by 100mV. This type of workload is bottlenecked by memory transfers, so having the core running at a high clock rate generates unnecessary heat.