fix(eval): install host C compiler for Triton on scoring image - #239
Merged
Conversation
Triton needs gcc on first CUDA kernel compile after Qwen weight load. Stay on the runtime CUDA base and add build-essential instead of devel. Co-authored-by: Mathis <echobt@users.noreply.github.com>
echobt
marked this pull request as ready for review
September 8, 2026 09:36
Greptile SummaryThis update adds host C/C++ compiler support to the proof scoring image, restores compiler environment variables when absent, and adds checks and documentation for Triton kernel compilation. T-Rex validation blockedThe complete CUDA-enabled scoring-image build did not finish before the execution limit while runtime packages were installing. No built image was available for the planned in-container compiler and stripped-environment assertions. Confidence Score: 5/5No validated defects require changes before merging. No severity-bearing findings were established. Files Needing Attention: No files require changes based on the completed validation.
What T-Rex did
Reviews (1): Last reviewed commit: "fix(eval): install host cc for triton ji..." | Re-trigger Greptile |
4 tasks
cursor Bot
pushed a commit
that referenced
this pull request
Sep 8, 2026
Live 1x BYOK harvest after #239 still refused PROOF_EVAL_OK: gcc works, but Triton's nvidia/driver.c fails on missing Python.h. Co-authored-by: Mathis <echobt@users.noreply.github.com>
cursor Bot
pushed a commit
that referenced
this pull request
Sep 8, 2026
Live 1x BYOK harvest after #239 still refused PROOF_EVAL_OK: gcc works, but Triton's nvidia/driver.c fails on missing Python.h. Co-authored-by: Mathis <echobt@users.noreply.github.com>
echobt
added a commit
that referenced
this pull request
Sep 8, 2026
Live 1x BYOK harvest after #239 still refused PROOF_EVAL_OK: gcc works, but Triton's nvidia/driver.c fails on missing Python.h. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Mathis <echobt@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Live Proof eval on a 1× B200 Lium pod (pin prefix
ff21fd98) loaded Qwen proxy weights then died:PROOF_EVAL_OKnever printed, so the control plane stayed 503.eval/Dockerfile.scoringusednvidia/cuda:12.8.1-runtime-ubuntu24.04and only installedca-certificates curl openssh-server iproute2 python3 python3-pip python3-venv(+ tini). Nogcc/g++. Torch pulls Triton; Triton's first CUDA kernel compile (Qwen SDPA/flash after weight load) needs a host C compiler.The failure was missing CC, not missing
nvcc/cuda.h. Triton's LLVM backend compiles the GPU kernel itself; gcc is only for the host launcher.What changed
eval/Dockerfile.scoring: keep the runtime CUDA base (smaller). Installbuild-essential. SetENV CC=gcc CXX=g++ CUDAHOSTCXX=g++. Build-timetest -x /usr/bin/gccandgcc --versionon a cleanPATH.build-essentialis ~200MB vs switching tonvidia/cuda:12.8.1-devel-ubuntu24.04(several GB of nvcc + CUDA headers). If a later kernel compile fails on missingcuda.h, switchBASE_IMAGEto the matching devel digest — do not invent a sha256.eval/src/proof_eval/harness.py: score-neutral belt-and-suspenders: setCC/CXX/CUDAHOSTCXXwhen unset (harvest SSH may drop Docker ENV). Does not disable flash/SDPA ortorch.compile— that would change tokens/sec and possibly NLL.eval/README.md: scoring image requires a C compiler for Triton.publish-proof-eval-image: after pull, assertgcc/g++exist andCC=gcc.baked_proxies.jsonstays[]. No HF bake, secrets, or holdouts. Fabric selftest /proof-evalentrypoint unchanged.Operator: republish + re-pin
This PR does not bump
config/proof-pin.toml. Do not invent a digest.publish-proof-eval-imagerun on thiscursor/**branch — it buildseval/Dockerfile.scoring).eval_image_digest = "sha256:…").eval_image_digest(and the pin comment /proof_git_sha) inconfig/proof-pin.tomlto that published digest.Empty digest stays fail-closed (503). A pin +
can_scoreis not proof of scientific reproduction.Test plan
pytest eval/tests(contract + new CC helper tests)publish-proof-eval-imageon this branch: digest pull, gcc present,CC=gcc, emptybaked_proxies,proof-eval selftestPROOF_EVAL_OKRust fmt/clippy/xtask gates are not in scope (eval image + workflow only).
Risk
Live Proof scoring image only. No
BASE_*rename, no emission/consensus change, no invented sha256. Next live rent still 503 until operators republish and re-pin.Naming
I did not rename
BASE_*environment variables, deployed host paths, GHCR package names, orbase-*-v1cryptographic domain tags.