Skip to content

Illuzen/gpu bench - #75

Open
illuzen wants to merge 14 commits into
mainfrom
illuzen/gpu-bench
Open

Illuzen/gpu bench#75
illuzen wants to merge 14 commits into
mainfrom
illuzen/gpu-bench

Conversation

@illuzen

@illuzen illuzen commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Note

Medium Risk
GPU tier table changes affect workgroup sizing on real hardware; benchmark range sizing is a small behavioral change. Mostly scripts/docs plus targeted engine logic, with new tests for tier matching.

Overview
Adds a gpu-bench/ workflow to run a --dev node + GPU miner on rented NVIDIA hosts, sample Prometheus/nvidia-smi, and append hashrate / utilization / hash_per_dollar rows to a shared results.csv. Scripts cover local setup.sh, on-host remote-run.sh + record.sh, batch-tune.sh for batch-size A/B tests, and optional RunPod orchestration via runpod-sweep.sh / runpod-shell.sh (REST API, SSH, git-built miner, Vulkan/GL userspace bootstrap on compute-only images).

Miner / GPU engine: benchmark now sizes worker nonce ranges from --gpu-batch-size / --cpu-batch-size so batch tuning is not clamped by a fixed 1M GPU chunk. gpu_tiers.rs expands NVIDIA detection (workstation Ada, datacenter H/L/B, per-class RTX A-series, Blackwell PRO) and tightens GeForce patterns so bare rtx 40 / rtx 50 no longer misclassify Ada workstation SKUs; new unit tests lock this in.

Root README documents the bench entry points; sample RunPod sweep data is committed in results.csv.

Reviewed by Cursor Bugbot for commit 7bfd6a8. Configure here.

illuzen and others added 11 commits August 1, 2026 13:19
- record.sh: driver 580+ removed multiprocessor_count from nvidia-smi;
  the failed query exited under pipefail before the fallback could run.
  Treat failure as empty and fall through (sm_count stays blank).
- setup.sh: ensure_node_key echoed its progress message to stdout, which
  the caller captured into the node-key file path, so first runs failed
  with NetworkKeyNotFound. Send the message to stderr.

Found on a Clore GTX 1080 Ti rental during Phase 0 validation.
Supports --dev node + release binaries over SSH, interactive runpod-shell debugging, SM-count fallbacks, and installing NVIDIA GL userspace on compute-only Community hosts.

Co-authored-by: Cursor <cursoragent@cursor.com>
Seed six RunPod sweep rows and point the sweep at results.csv so new samples append to the shared table.

Co-authored-by: Cursor <cursoragent@cursor.com>
Split NVIDIA workstation/datacenter dispatch tiers, prefer clone+cargo build from MINER_BRANCH for iteration, and track cost_per_sec / hash_per_dollar in results.csv.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep SM-count query_sm_count path (avoids multiprocessor_count pipefail), retain setup.sh node-key stderr fix, and fold Clore/provider notes into the README.

Co-authored-by: Cursor <cursoragent@cursor.com>
Verify with vulkaninfo and fall back to extracting the exact NVIDIA .run userspace so compute-only Community hosts can initialize WGPU.

Co-authored-by: Cursor <cursoragent@cursor.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 4 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 7bfd6a8. Configure here.

// Ampere/Turing (RTX 30/20 series)
GpuTier {
pattern: r"\b30[5-9]0\b|\b20[6-8]0\b|rtx 30|rtx 20",
pattern: r"\b30[5-9]0\b|\b20[6-8]0\b|\brtx 30[5-9]0\b|\brtx 20[6-8]0\b",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consumer GPU tiers miss entry SKUs

Medium Severity

Removing the bare rtx 50 / rtx 40 / rtx 20 catch-alls without widening the digit classes leaves real GeForce entry SKUs unmatched (RTX 5050, RTX 4050, RTX 2050), so they fall through to the NVIDIA unknown fallback. That breaks the GPU tier pattern rule requiring most-specific-first ordering and no coverage gaps when patterns change.

Additional Locations (2)
Fix in Cursor Fix in Web

Triggered by learned rule: GPU tier patterns: check ordering and overlap

Reviewed by Cursor Bugbot for commit 7bfd6a8. Configure here.

Comment thread gpu-bench/runpod-sweep.sh
printf 'ready|proxy|%s|22|%s\n' "${pod_id}" "${cost}"
return 0
fi
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proxy SSH fallback never activates

Medium Severity

Proxy SSH is gated on non-empty ip and port, and ALLOW_PROXY_SSH defaults to 0. Pods that are RUNNING without a public IP therefore never try podId@ssh.runpod.io, even though that is the case proxy mode is meant to handle. The README still claims this fallback happens automatically.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7bfd6a8. Configure here.

Comment thread gpu-bench/runpod-sweep.sh
disk=15
elif [[ "${disk}" -gt 10 ]]; then
disk=10
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disk shrink breaks git miner builds

Medium Severity

On non-capacity create errors, create_pod_with_cloud shrinks containerDiskInGb from the default 50 to 15 then 10 before trying Secure cloud. Default MINER_SOURCE=git needs the larger disk for cargo target/, so Community may accept an undersized pod that then fails during the miner build.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7bfd6a8. Configure here.

Comment thread gpu-bench/setup.sh
echo "${NODE_CONTAINER_NAME}" >"${RUN_DIR}/node.container"
echo "docker" >"${RUN_DIR}/node.mode"
echo "Node listening for miners on 127.0.0.1:${miner_listen_port}/udp"
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docker mode ignores dev flag

Medium Severity

do_start always calls start_node_docker when --docker is set, and that path never reads DEV_MODE. Combined --docker --dev still requires REWARDS_INNER_HASH and starts a Planck validator instead of a local --dev chain.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 7bfd6a8. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants