igneum/proto-cuda/build.sh
igneum-labs 27e944d8eb GPU workers on the real hash: serve protocol in Metal, CUDA and OpenCL, Windows mining package, devnet v1 log
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>
2026-10-03 19:18:19 +00:00

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"