Skip to content

feat(installer): add an opt-in cu124 PEAR runtime for RTX 30/40 - #141

Open
AWildRShakes wants to merge 2 commits into
CorridorTech:mainfrom
AWildRShakes:no-install-downgrade-for-older-gpus
Open

AWildRShakes wants to merge 2 commits into
CorridorTech:mainfrom
AWildRShakes:no-install-downgrade-for-older-gpus

Conversation

@AWildRShakes

Copy link
Copy Markdown

Summary

  • RTX 30/40 owners lose about a third of live PEAR throughput on the cu128 matrix (RTX 3080: 30.25 -> 20.53 NET FPS). Today the only way back is downgrading to v1.0.6-win.4, which drops every fix since.
  • The two matrices differ only in torch, torchvision and the PyTorch3D build; the PyPI lock is identical. The PEAR payload now carries the frozen cu124 matrix (hash-pinned PyTorch3D wheel reused from the v1.0.6-win.4 payload, +5.6 MB) next to the default. Users opt in from a Start-menu shortcut, and the choice survives repairs and upgrades.
  • cu128 stays the default. cu124 is refused when a Blackwell GPU is present. ADR-0019 is proposed and needs a maintainer decision, because it partly reverses ADR-0016's rejection of per-architecture payloads.

Test plan

  • uv run ruff check . / uv run ruff format --check .
  • uv run pyright --pythonplatform Windows / --pythonplatform Linux
  • uv run lint-imports
  • uv run pytest (646 passed). New behavioral tests in tests/test_pear_runtime_switch.py run the switch script under Windows PowerShell 5.1 with a stub nvidia-smi.
  • DCO, licensed-binary, zizmor and markdown-link checks
  • End to end on an RTX 3080 (driver 596.21):
    • real build_pear_payload.ps1 run
    • default cu128 install, doctor green except licensed assets
    • switch to cu124: torch 2.4.1+cu124, PyTorch3D knn_points ran on the GPU
    • switch back to cu128, preference cleared
  • Live NET FPS A/B through the switched runtime with licensed models (open in task 0044)
  • Compile the rendered Inno template with ISCC (not installed on the test machine)

Links

  • ADR-0019 (proposed), amends ADR-0016
  • Task 0044; relates to task 0041 (cu128 throughput recovery)

🤖 Generated with Claude Code

ADR-0016's cu128 matrix costs pre-Blackwell GPUs about a third of their
live throughput (RTX 3080: 30.25 -> 20.53 NET FPS), and today the only
recovery is installing v1.0.6-win.4, which drops every fix since.
Task 0041 already names a temporary cu124 path as a legitimate fallback.

ADR-0019 proposes shipping the frozen cu124 matrix as a user-selected
runtime inside the same PEAR payload, reusing the hash-pinned PyTorch3D
wheel from the v1.0.6-win.4 payload. It partially reverses ADR-0016's
rejection of per-architecture payloads, so it stays proposed until the
maintainer decides. Task 0044 tracks the implementation and records the
RTX 3080 end-to-end evidence.

Signed-off-by: RShakes <uoreyn@gmail.com>
RTX 30/40 owners lose about a third of live throughput on the default
cu128 matrix and could only recover it by downgrading to v1.0.6-win.4.
The two matrices differ only in torch, torchvision and the PyTorch3D
build (the PyPI lock is identical), so the PEAR payload now carries the
frozen cu124 matrix next to the default and the user picks one.

A PyTorch3D build only loads under the torch it was compiled against,
so the payload build stages the hash-pinned cu124 wheel from the
v1.0.6-win.4 payload under wheels/cu124/ together with its torch lock,
and the packer refuses one without the other. The choice persists in
pear_runtime.json so install, repair and upgrade honour it. The switch
script, exposed as two Start-menu shortcuts, refuses cu124 when a
Blackwell GPU is present and restores the previous choice if the
reinstall fails; the PEAR handler falls back to cu128 with a warning if
a Blackwell GPU appears later. The release notice now points RTX 30/40
owners at the shortcut instead of telling them to weigh the upgrade.

Verified end to end on an RTX 3080: default install, switch to cu124
with a PyTorch3D CUDA kernel running, and switch back.

Per ADR-0019. Refs task 0044.

Signed-off-by: RShakes <uoreyn@gmail.com>

This branch has not been deployed

No deployments
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.

1 participant