Brings AMD cards to parity with NVIDIA for monitoring/control surface, which was
NVML-only. New src/amd_smi.rs is a gpu_tune::GpuTuner backed by Linux amdgpu
sysfs (power1_average, temp1_input edge, freq1_input sclk, pp_dpm_sclk/mclk),
matched to the device by PCI bus id from OpenCL cl_khr_pci_bus_info. gpu_tune is
un-gated to compile under the gpu feature; open() probes NVML then amd_smi.
GpuSolver carries the tuner and Backend::Gpu dispatches power/temp/clocks, so the
TUI and --benchmark now show power, temperature, clocks and Sol/W for AMD.
Telemetry-only — setters are Unsupported (amdgpu control nodes are root-only).
--target-temp <C> adds an opt-in software governor (miner::govern_cadence) that
paces solve cadence to hold edge temperature, no hardware writes/root. With small
thermal throttle it won't beat flat-out on raw Sol/s; it's a temp/efficiency
lever. Unit-tested controller; flag/plumbing verified live.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Cap the cores-per-row group size (and the dashboard 'g' cycle) by total core
count so the toggleable-row count stays sensible and small machines get finer
control: ≤4 cores toggle individually (size 1), 5-8 cores in groups of up to 2,
and more than 8 in groups of up to 4. The cap is also the default — the prior
fixed default of 4 now clamps to the tier (1/2/4), and an explicit
--cpu-group-size is clamped to the cap too.
Add max_group_size() in cpu_groups; update the help text and the cpu_groups /
control tests (the cycle test now uses 16 cores so it can exercise sizes 4/2/1).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
When neither --url nor a config file specifies a pool, fall back to
stratum+tcp://zcl.jackpot.tools:3333 instead of erroring. Resolution order is
unchanged: --url flag → config-file url → built-in default. `url` stays an
Option so config auto-discovery and the GUI terminal relaunch (which key off
url.is_none()) are unaffected.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
AMD GPU backend:
- Add the GCN-tuned equihash192_7.cl kernel (clearCounter/blake/round1..7/
combine pipeline) and its host driver src/gpu_amd.rs. GpuSolver now dispatches
AMD-vendor OpenCL devices to it and other devices to the existing kernel
(force with ZCL_OPENCL_KERNEL=amd|legacy). Validated on an RX 9060 XT: GPU
solutions match the CPU reference 1/1.
- Expose BatchHasher::midstate() for the kernel's ulong8 hashState arg.
Runtime-loaded GPU drivers (minimum host deps):
- dlopen libcuda / libnvidia-ml via libloading instead of linking them
(src/dylib.rs macro; cuda.rs, nvml.rs, gpu_probe.rs). The binary now builds
and starts on hosts without an NVIDIA driver and reports no CUDA devices
gracefully; remove build.rs (its only job was linking those libs).
- Add Dockerfile.portable + build-portable.sh: build against Debian bullseye's
glibc 2.31 for a binary that runs on older distros and drives both AMD
(OpenCL) and NVIDIA (CUDA) cards. Document the build matrix in the README.
Mixed backend (default):
- Add --backend mixed (now the default): each card on its native backend
(NVIDIA->CUDA, AMD/Intel->OpenCL), deduped so no card is mined twice.
--devices indexes the unified list shown by --list-devices.
Misc:
- Stale-work timeout (--job-timeout) default 300s -> 600s (10 minutes).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Drop the non-Equihash algorithms and their integration points:
- delete src/ethash.rs + src/ethash/ and src/pearl.rs + src/pearl/
- remove the ethash/pearl/pearl-cuda features and pearl-only deps
(blake3, primitive-types, rand, bincode, base64) from Cargo.toml
- drop the --algo flag and the pearl/ethash dispatch branches in main.rs
- remove the pearl-cuda NVRTC linking from build.rs
- drop the stale /pearl-dump/ .gitignore entry
Builds check cleanly with default features and --no-default-features.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
GPU-accelerated Equihash 192,7 miner in Rust with three solver backends:
- CPU: Wagner's algorithm, AVX2 packed slots (xenoncat-style)
- OpenCL: full on-GPU solve (kernels/equihash.cl); runs on NVIDIA and AMD
- CUDA: driver-API replay of miniZ's extracted fatbin (src/miniz/)
Also includes a default-off pearlhash backend (src/pearl/, native CPU core +
NVRTC int8-GEMM GPU kernels) and a WIP Ethash CUDA backend (src/ethash/).
Reverse-engineering scratch (alpha-miner, pearl-dump/) and the active runtime
config (mine.toml) are gitignored; mine.example.toml is the template.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>