proto-metal --serve compiles igneum_hash_bound at runtime and mines jobs from stdin (init words in buffer 3, program and dataset cached per seed); proto-cuda and proto-opencl host serve modes from the pack's kernel_bound.cu / .cl with a seed guard; --vendor device filter for OpenCL. windows-miner/: START-MINING.bat + start-mining.ps1 (GPU and tool detection, pack export, cached builds, MINERS identities per vendor, status every 30 s, uploads every 60 s, rebuild on seed change, Ctrl+C summary), README.txt, make-package.sh (igneum-mine-test.zip with a cross-compiled miner). docs: fork-divergence devnet v1, bench-log entry with the CPU, Metal and overnight numbers. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
28 lines
1 KiB
Bash
Executable file
28 lines
1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Build igneum-bench-cuda for one program pack (Linux).
|
|
# Usage: ./build.sh [pack] [arch]
|
|
# pack directory name under packs/ (default igneum-genesis)
|
|
# arch nvcc -arch value (default sm_120 = RTX 50 series / Blackwell, needs CUDA 12.8 or newer;
|
|
# use "native" to let nvcc pick the installed GPU's architecture)
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
|
|
PACK="${1:-igneum-genesis}"
|
|
ARCH="${2:-sm_120}"
|
|
|
|
if ! command -v nvcc >/dev/null 2>&1; then
|
|
echo "nvcc not found. Install CUDA Toolkit 12.8 or newer and put its bin/ on PATH (usually /usr/local/cuda/bin)." >&2
|
|
exit 1
|
|
fi
|
|
if [ ! -f "packs/$PACK/kernel.cu" ]; then
|
|
echo "no pack at packs/$PACK (expected kernel.cu, program.h, vectors.h)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
BOUND=()
|
|
if [ -f "packs/$PACK/kernel_bound.cu" ]; then BOUND=(-DIGNEUM_BOUND "packs/$PACK/kernel_bound.cu"); fi
|
|
nvcc --version | tail -n 2
|
|
set -x
|
|
nvcc -O3 -std=c++17 -arch="$ARCH" -I "packs/$PACK" -o "igneum-bench-cuda-$PACK" host.cu "packs/$PACK/kernel.cu" "${BOUND[@]}"
|
|
set +x
|
|
echo "built ./igneum-bench-cuda-$PACK"
|