Skip to content

SOAT Miner v0.1.2 - NVIDIA Vulkan was 50x too slow

Choose a tag to compare

@blindrun blindrun released this 16 Aug 01:56
· 70 commits to main since this release

If you have an NVIDIA card, replace v0.1.1. It was giving you about 3 MH/s.

Vulkan was 50x too slow on NVIDIA

The dataset was not allocated as a dedicated allocation, so the driver never
gave it large pages. Every one of the 33 random lookups per nonce missed the
TLB. The card sat at 100% utilisation doing almost nothing.

Measured at the current 7.27GB dataset:

GPU v0.1.1 v0.1.2
RTX 5080 5.7 267.6
RTX 4090 2.9 162.5
RX 6700 XT 82.9 82.9

AMD was never affected. Memory utilisation on the 5080 went from 4% to 99%.

The CUDA build only ran on 40-series cards

v0.1.1 shipped one cubin, sm_89, and no PTX. On anything else it refused to
start with "no kernel image is available for execution on the device".

Two causes. The architecture list was hardcoded to Ada. And separable
compilation was throwing away the PTX, so there was no fallback either.

Now it builds sm_75, sm_86, sm_89 and sm_120 where the toolkit supports them,
plus PTX so newer cards still work. The list comes from asking nvcc what it can
target instead of being written down.

Backend auto now goes by GPU, not by brand

Vulkan is faster on Blackwell. CUDA is faster on Ada. Both were measured on
Linux and Windows and they agree.

GPU picks margin
RTX 5080 Vulkan 22%
RTX 4090 CUDA 34%
RX 6700 XT Vulkan only option

Leave BACKEND=auto alone and it sorts itself out.

Building on Windows never worked

The CMake build did not compile run.cpp or stratum.cpp, so it failed to link.
It is the only supported way to build CUDA on Windows. Fixed and tested on a
5080 with CUDA 12.9.

RTX 50-series needs CUDA Toolkit 12.8 or newer for native code. Older toolkits
fall back to PTX and still work.

Also

  • --list-devices works in the CUDA build. It used to start mining instead.
  • The Vulkan backend is now checked by make test against the same mainnet block
    as CUDA, with a negative control. Nothing was gating it before.
  • The README is half the length and tells you how to mine in the first screen.

Verify your download

fccfc03fcb9764c8fedb196515ecdd0afa02f6f7aa2f328ba6df6b50127f35b9  soat-miner_v0.1.2_Lin64.tar.gz
f947d00359a2df1e607f4b237a28186f11e9c36e004a7c58b22705615ba37f25  soat-miner_v0.1.2_Win64.zip

The Windows zip is the Vulkan build only. CUDA cannot be cross compiled from
Linux. Build it from source if you want CUDA on Windows.