Add Blackwell / sm_100 (B200) support: CUDA 12.8 + jax 0.4.38 - #59
Open
maxscheurer wants to merge 1 commit into
Open
Add Blackwell / sm_100 (B200) support: CUDA 12.8 + jax 0.4.38#59maxscheurer wants to merge 1 commit into
maxscheurer wants to merge 1 commit into
Conversation
The pinned torch cu126 and jax/jaxlib 0.4.29 wheels cannot target
Blackwell GPUs (compute capability 10.0 / sm_100):
- torch cu126 ships kernels only up to sm_90 -> "CUDA error: no kernel
image is available for execution on the device" on B200.
- jax/jaxlib 0.4.29 predates Blackwell and cannot build for sm_100.
Changes:
- env/build_uv_env.sh: torch -> 2.7.0+cu128 (cu128 wheels are a superset
of cu126's arch list, so no regression on Ampere/Hopper/Ada), and pin
torchvision==0.22.0+cu128 / torchaudio==2.7.0+cu128 to the versions
matching torch 2.7.0 (leaving them unpinned pulls torchaudio 2.11.0,
whose ABI mismatch crashes `import transformers`/ESMFold); PyG index ->
cu128; jax/jaxlib -> 0.4.38 (same minor as the validated 0.4.29, minimal
drift for the AF2 oracle, but Blackwell-capable) + dm-haiku==0.0.13.
- pyproject.toml: [tool.uv] extra-index cu126 -> cu128.
- community_models/colabdesign/__init__.py: restore the top-level
jax.tree_* aliases (removed in jax >= 0.4.31) from jax.tree_util. Guarded
by hasattr, so it is a no-op on older jax where the aliases still exist.
Verified end-to-end on B200 (sm_100) and L40S (sm_89): environment build,
imports, and a full complexa design run with the AF2 reward/refold oracle.
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.
Summary
The pinned
torch==2.7.0+cu126andjax/jaxlib==0.4.29cannot run on NVIDIABlackwell GPUs (compute capability 10.0 /
sm_100, e.g. B200). This PR bumps theenvironment to CUDA 12.8 + jax 0.4.38 so the stack builds and runs on Blackwell,
while remaining compatible with existing Ampere/Hopper/Ada setups.
Closes #54 and #36.
Why the current pins fail on Blackwell
2.7.0+cu126sm_90→CUDA error: no kernel image is available for execution on the device.0.4.29sm_100.Changes
env/build_uv_env.shtorch→2.7.0+cu128(cu128 wheels are a superset of cu126's arch list,so no regression on sm_70–sm_90 GPUs) and PyG wheel index →
cu128.torchvision==0.22.0+cu128/torchaudio==2.7.0+cu128to the versionsmatching torch 2.7.0. Leaving them unpinned lets uv resolve a newer torchaudio
(e.g. 2.11.0) whose ABI is incompatible with torch 2.7.0
(
undefined symbol: torch_library_impl), which breaksimport transformers/ ESMFold in the evaluate stage.
jax[cuda12]/jaxlib→0.4.38(same minor series as the previously validated0.4.29 → minimal numerical drift for the AF2 oracle, but Blackwell-capable),
plus
dm-haiku==0.0.13. CUDA 12.8 libraries come from the PyPInvidia-*wheels via
--index-strategy unsafe-best-match.pyproject.toml:[tool.uv]extra-indexcu126→cu128.community_models/colabdesign/__init__.py: restore the top-leveljax.tree_map/tree_flatten/tree_unflatten/tree_leavesaliases (removed injax ≥ 0.4.31) from
jax.tree_util. Guarded byhasattr, so it is a no-opon older jax where the aliases still exist — safe for anyone not upgrading jax.
Compatibility
sm_70–sm_120, so existing Ampere (A100), Hopper (H100), andAda (L40S) users are unaffected by the torch bump.
nothing on the previous jax 0.4.29.
Testing
Built and verified end-to-end on both B200 (sm_100) and L40S (sm_89):
env/build_uv_env.sh --cleanbuild; torch + jax import and run GPU ops.complexa designrun (generate → filter → evaluate → analyze) with theAF2 reward/refold oracle, producing valid (non-NaN) metrics.