Initial commit: jackpotminer Equihash 192,7 miner
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>
This commit is contained in:
+63
@@ -0,0 +1,63 @@
|
||||
[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 }
|
||||
# Pearl (PRL) pearlhash backend deps (feature `pearl`).
|
||||
blake3 = { version = "1.5", optional = true }
|
||||
primitive-types = { version = "0.12", optional = true }
|
||||
rand = { version = "0.9", optional = true }
|
||||
bincode = { version = "1", optional = true }
|
||||
base64 = { version = "0.22", 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. build.rs only links libcuda (no nvcc / kernel compilation needed).
|
||||
cuda = []
|
||||
# Ethash backend (miniZ's extracted Ethash solver), default-off / work-in-progress:
|
||||
# blobs + replay scaffold live in src/ethash/; needs a captured launch recording to
|
||||
# go live (see src/ethash/README.md). Pulls in the same libcuda link as `cuda`.
|
||||
ethash = ["cuda"]
|
||||
# Pearl (PRL) pearlhash backend (default-off): native CPU miner+verifier ported
|
||||
# from the open-source reference. See src/pearl/ and pearl-dump/SPEC.md.
|
||||
pearl = ["dep:blake3", "dep:primitive-types", "dep:rand", "dep:bincode", "dep:base64"]
|
||||
# Pearl GPU acceleration: NVRTC-compiled int8 GEMM+transcript kernel (links
|
||||
# libcuda + libnvrtc; no build-time nvcc). Validated against the CPU reference.
|
||||
pearl-cuda = ["pearl"]
|
||||
# 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"
|
||||
Reference in New Issue
Block a user