Skip to main content
XHash is limited by the GPU’s memory: a higher memory clock raises the hashrate, while the core clock can usually go well below its default without costing any hashrate, which saves power. Hashwarp sets both itself, on NVIDIA GPUs (Linux and Windows) and AMD GPUs (Linux), and puts each GPU back to its previous settings when it exits.
Changing clocks needs root on Linux (sudo hashwarp ...) or administrator rights on Windows. Rig operating systems that overclock themselves, such as HiveOS and mmpOS, don’t need these options: set the overclock there.

Finding the settings: —oc-tune

The tuner mines offline at an easy difficulty and checks every result on the CPU:
  1. It raises the memory clock step by step, as long as the results stay correct and the hashrate grows. GDDR6X memory corrects its own errors, which shows as a hashrate that falls again rather than as wrong results; the tuner watches for both. It keeps the best memory clock, or the one below it when that costs almost nothing.
  2. It lowers the core clock as far as the hashrate stays within 1%.
  3. It mines a while longer with both to confirm them, and backs off a step if they fail.
It logs each step and the result per GPU, then saves the results to hashwarp-oc.json next to the configuration file (--oc-tune-file to change it). Mine with them using the tuned profile:
Tune with the GPUs otherwise idle. A desktop, a video or a game on the same GPU makes the hashrate unsteady: the tuner notices and measures longer, but its results are less precise.
  • --oc-tune=core keeps a memory clock tuned before, and only tunes the core clock.
  • A memory clock that is too high can hang a GPU. The watchdog then exits Hashwarp, which restores the settings.
  • Run --oc-tune again after changing drivers or cooling, or swapping GPUs: results are kept per GPU.

Profiles

--oc-profile takes one profile per GPU, or one for all: Your own profiles go into the configuration file, and can be chosen per GPU:
A profile’s keys are the settings below without the oc- prefix.

Settings

These take one value per GPU, or one for all; x leaves a GPU alone, for example --oc-mem-offset 2000,x,1500. They override a profile’s values. Each GPU’s settings are logged when mining starts:

AMD GPUs

On Linux, AMD GPUs only accept clock changes with overdrive enabled: add amdgpu.ppfeaturemask=0xffffffff to the kernel command line and reboot. AMD GPUs take a memory clock (--oc-mem-clock) rather than an offset. Overclocking AMD GPUs on Windows isn’t supported: use AMD Adrenalin.

Restoring the stock settings

Hashwarp restores each GPU’s previous settings when it exits, also after a watchdog exit. If it is killed (kill -9, a power loss), it can’t: reboot, or set the stock settings with