Skip to main content
Hashwarp finds your GPUs at start and mines on all of them, NVIDIA GPUs with CUDA and the others with OpenCL. Its defaults suit most GPUs: start with overclocking, which matters much more for XHash than the kernel settings below.

Listing the GPUs

Id is the number the other options use for a GPU, and Backend what Hashwarp can mine on it with: cu (CUDA) and cl (OpenCL). The log names each GPU by that number: gpu0, gpu1 …

Choosing GPUs

While mining, press a GPU’s number (0 to 9) to pause or resume it, or p and r for all of them.

GPU memory

Each GPU holds the XHash DAG, which grows by 8 MB every epoch (720 blocks, about 5 days): around 1.7 GB in late 2026, 2 GB around mid 2027. Hashwarp builds it on the GPU when mining starts and at each new epoch, which takes under a second on recent GPUs:
A GPU without enough free memory is paused until the next epoch with a warning (Epoch N needs ...). On rigs whose CPU or power supply struggles when every GPU builds its DAG at once, --dag-load-mode 1 builds them one after the other.

Checking the GPUs: —selftest

The self-test mines offline for up to 30 seconds (--selftest 60 for longer), checks every result on the CPU and ends with a verdict per GPU:
It exits with code 0 when every GPU passes and 1 otherwise, so scripts can use it. Run it after installing Hashwarp, updating drivers or changing an overclock. Its hashrate includes the start, so it reads lower than while mining. While mining, Hashwarp checks every solution on the CPU before sending it too. A wrong one isn’t submitted: it counts as F (failed) in the share counts and is logged as Wrong result, lower the overclock if it happens often. --noeval turns the check off, which isn’t recommended.

Benchmarking

mines offline on the DAG of block 60500 and prints the hashrate as when mining, without a pool. Stop it with q or Ctrl+C; it prints the highest and mean hashrate. Use a current block number, so the DAG has its current size.

Kernel tuning

These take one value per GPU, or one for all. The defaults are right for most GPUs; change one at a time, and compare with --benchmark. At start Hashwarp logs which CUDA kernel it chose, with both kernels’ hashrates:
On an RTX 4090 at stock clocks Hashwarp mines at 115.5 MH/s, about 94% of the GPU’s memory bandwidth: XHash reads 8 KB of the DAG per hash, so memory bandwidth limits it on nearly every GPU. That is why the memory clock matters most: see Overclocking.