Skip to content

DeroStorm 1.5.0 - A new console, GPU +9.5%, and the native sort on Linux

Choose a tag to compare

@Notoriousjoshyb Notoriousjoshyb released this 30 Aug 08:32
· 12 commits to main since this release

A new full-screen console, a faster GPU merge, and the native suffix sort on Linux at last.

The console

Eight screens, one key each: M S N T C L P H for mining,
statistics, network, threads, config, logs, pools and help, Tab to cycle,
Esc back to the dashboard, : for the command line, Q to quit.

It reflows rather than assuming a size. Panels drop out of each row as the
window narrows, columns collapse, and labels shorten before they truncate. It is
readable from about 100x32 and opens up fully around 150 columns.

  • --preview draws one real frame with sample data and exits — no node, no
    wallet. --screen=<name> picks which of the eight and --size=<WxH> a window
    you do not have.
  • --classic keeps the compact in-place panel from 1.4.x, which scrolls with
    the shell so the scrollback above it survives.
  • --no-tui is plain scrolling lines for tmux logs, systemd units and CI.
    Colour and cursor control are off automatically when output is not a terminal
    or NO_COLOR is set.
  • --termdiag reports what every source says the terminal size is and rules a
    line that wide, for the one failure that leaves the screen unreadable.
  • A sixth theme, cyber, and it is now the default.

The GPU: +9.5%

The merge that resolves colliding descriptor groups gave each group to one
thread. The average group holds seven positions — which is why it was written
that way, and why the average was the wrong thing to measure. Every thread waits
at the barrier afterwards, so the phase costs whatever the busiest thread
costs, and over the 512 reference vectors that thread does 43.5% of the whole
text's merge comparisons
. Of ~247 colliding groups in a text, the five or so
holding more than 32 positions carry 62% of them.

Those now go through a block-wide merge, one group at a time with all 256
threads on it; the per-thread loop keeps the ~242 small ones. The scatter was
folded into the same pass while the code was open — it and the merge were asking
the same question of the same words, about 50,000 loads a text spent re-deriving
what the previous loop had already worked out.

1.5.0 1.4.x
RTX 5080, --bench --gpu=all 100,640 H/s 91,870 H/s
CPU, 15 threads 34,293 H/s 33,700 – 34,500 H/s
together, real mining path 130,400 – 131,800 H/s 124,700 – 125,400 H/s

Ryzen 7 9800X3D + RTX 5080. The combined figure is
--run-for=55 --gpu=all --gpu-blocks=1252 over three runs, not the sum of the
two above.

Output is bit-identical. gpu/hash_parallel_test.exe still matches all 512 CPU
vectors, and the miner still re-verifies each device against the CPU at start-up
before it will submit anything from it.

Linux gets the native suffix sort

It was packaged as a DLL and nothing had been built for anything else, so Linux
rigs were running the Go sort and reading about a quarter of the hashrate the
same hardware managed on Windows. It was never a tuning problem.

native/buildlib.sh now builds libderostorm_sa.so, and --bench on
linux/amd64 reads +248.9% at 8 threads against the Windows +260.0% on the same
row. macOS and arm64 still use the Go sort: the descriptor merge is AVX2 and the
paired hash is the x86 SHA extensions, which is a NEON port and not a recompile.

Notes

  • All four embedded native libraries were rebuilt from current source before
    this release was cut — the check 1.4.1 existed to make up for.
  • No configuration change. Upgrading is replacing the binary.
  • Linux arm64 still ships no CUDA .so, as in every prior release.

Checksums (SHA-256)

35f037f6771b078405b59e1b12b8958b0783ba3e7cee9f7f301b7be2d38a3102  derostorm-1.5.0-windows-amd64.zip
f0fe65bac5f661e29a5f80bba95bec1d1144cba6afc1c95b88a0633e550b1097  derostorm-1.5.0-linux-amd64.zip
6fd24cf9aeb73a648145bfa3c5041168b36ddfec7fc62a00271548a6d4613da8  derostorm-1.5.0-linux-arm64.zip
26dd302930d01a712f7d79191777a129cda9c4f661ba03e4301a0123bff85717  derostorm-1.5.0-macos-amd64.zip
7cf32a997313c06cf1556175e88d3350a11f1ad6f44587e7f08e57c81d888b16  derostorm-1.5.0-macos-arm64.zip