Files
jackpot-miner/Cargo.toml
T
jackpotincorporated 4b5f84959c Add AMD OpenCL kernel, runtime-loaded CUDA, mixed backend, portability
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>
2026-06-06 01:15:41 -04:00

53 lines
1.6 KiB
TOML

[package]
name = "jackpotminer"
version = "0.1.0"
edition = "2021"
description = "A GPU-accelerated Equihash 192,7 miner (ZClassic and other 192,7 coins)"
[dependencies]
blake2b_simd = "1"
sha2 = "0.10"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "0.8"
hex = "0.4"
rayon = "1"
num_cpus = "1"
core_affinity = "0.8"
clap = { version = "4", features = ["derive"] }
log = "0.4"
env_logger = "0.11"
anyhow = "1"
ctrlc = "3"
socket2 = "0.5"
ocl = { version = "0.19", optional = true }
ratatui = "0.30.0"
eframe = { version = "0.28", optional = true }
# Runtime loader for the CUDA driver / NVML (dlopen'd, not link-time, so the
# binary has no build- or load-time dependency on libcuda / libnvidia-ml).
libloading = { version = "0.8", optional = true }
[features]
default = ["gpu", "cuda", "config-gui"]
gpu = ["dep:ocl"]
# CUDA backend: drives miniZ's embedded Equihash 192,7 fatbin via the CUDA driver
# API. The driver (libcuda) and NVML are dlopen'd at runtime via libloading, so
# there is no build-time or load-time dependency on them — the binary builds and
# starts on hosts without an NVIDIA driver and simply reports no CUDA devices.
cuda = ["dep:libloading"]
# Optional native GUI config editor (the `jackpotminer-config` binary). Off by
# default so the miner never pulls in the GUI toolkit.
config-gui = ["dep:eframe"]
# The GUI config editor is a separate binary, built only with --features config-gui.
[[bin]]
name = "jackpotminer-config"
path = "src/config_gui.rs"
required-features = ["config-gui"]
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = "abort"