Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
ab94e60
Modernize conda environment (#34)
sdvillal Mar 23, 2026
ce70ebb
fix linter problems
jandom Mar 23, 2026
9b1749c
add pre-commit
jandom Mar 23, 2026
6fbef74
Merge branch 'main' into pixi-beta
jandom Mar 26, 2026
57736cd
Merge branch 'public-main' into pixi-beta
jandom Mar 31, 2026
784502b
Merge branch 'public-main' into pixi-beta
jandom Apr 4, 2026
f696d6c
add pixi.excalidraw to docs
jandom Apr 7, 2026
4ce0467
Merge branch 'public-main' into pixi-beta
jandom Apr 8, 2026
c101a86
remove blackwell build instructions (obsolete)
jandom Apr 8, 2026
cf4bfb6
update docs to recommend pixi
jandom Apr 8, 2026
4e36782
better docs on pixi
jandom Apr 8, 2026
48e06e3
update pixi.lock
jandom Apr 8, 2026
8a4a26b
docker build and tests for pixi
jandom Apr 8, 2026
3f9ed35
Merge branch 'main' into pixi-beta
jandom Apr 8, 2026
888f070
set a sensible 2mb default
jandom Apr 8, 2026
39ddce9
more context manager plus dirty dataclass
jandom Apr 8, 2026
07d3454
unit tests
jandom Apr 9, 2026
5e42337
Merge branch 'public-main' into pixi-beta
jandom Apr 9, 2026
8a745e9
more linting
jandom Apr 9, 2026
ba24b95
missed a dep: regenerate pixi.lock
jandom Apr 9, 2026
68e743e
Merge branch 'main' into pixi-beta
jandom Apr 9, 2026
feeaacd
remove duplicate projects
jandom Apr 9, 2026
de7e331
First draft for rocm env
Emrys-Merlin Apr 9, 2026
0d6d0fc
First working install
Apr 10, 2026
89815f8
Remove pytorch-lighting dep in pixi.toml
Apr 10, 2026
19961d2
test: add per-platform snapshots for triangular attention and multipl…
singagan Apr 27, 2026
386cc0d
Merge branch 'main' into rocm-pixi-env
Emrys-Merlin Apr 28, 2026
f4bd129
Regenerate pixi.lock
Emrys-Merlin Apr 28, 2026
433f266
Revert accidental formatting changes
Emrys-Merlin Apr 28, 2026
dda150d
Update docs
Emrys-Merlin Apr 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,677 changes: 961 additions & 716 deletions docs/imgs/pixi-environments-and-features.excalidraw

Large diffs are not rendered by default.

Binary file modified docs/imgs/pixi-environments-and-features.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/source/Installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ pixi run -e openfold3-cpu run_openfold
We provide the following environments:
- openfold3-cpu (linux-64, linux-aarch64, osx-64,osx-arm64)
- openfold3-cuda12 and openfold-cuda13 (linux-64, linux-aarch64)
- openfold3-rocm7 (linux-64)

For more information, including rationale, tips and tricks, see [Modern Conda Environments with Pixi](./modern-conda-environments-with-pixi.md).

Expand Down
18 changes: 14 additions & 4 deletions openfold3/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,11 @@ def _check_snapshot_env(snapshot_dir: Path) -> None:
)


def _snapshot_platform() -> str:
"""Return 'rocm' when running on an AMD GPU, 'nvidia' otherwise."""
return "rocm" if torch.version.hip is not None else "nvidia"


def _write_snapshot_env(snapshot_dir: Path) -> None:
"""Write current environment metadata alongside snapshots."""
SnapshotEnv.current().to_json(snapshot_dir / _SNAPSHOT_ENV_FILE)
Expand All @@ -150,8 +155,9 @@ def pytest_sessionfinish(session, exitstatus):
snapshots_root = Path(__file__).parent / "test_data" / "snapshots"
if snapshots_root.exists():
for subdir in snapshots_root.iterdir():
if subdir.is_dir() and any(subdir.glob("*.npz")):
_write_snapshot_env(subdir)
platform_dir = subdir / _snapshot_platform()
if platform_dir.is_dir() and any(platform_dir.glob("*.npz")):
_write_snapshot_env(platform_dir)


@pytest.fixture(scope="session", autouse=True)
Expand Down Expand Up @@ -234,9 +240,13 @@ def biotite_ccd_wrapper():

@pytest.fixture(scope="module")
def original_datadir(request: pytest.FixtureRequest) -> Path:
"""Redirect pytest-regressions snapshot storage to test_data/snapshots/."""
"""Redirect pytest-regressions snapshot storage to test_data/snapshots/<platform>/."""
datadir = (
Path(__file__).parent / "test_data" / "snapshots" / Path(request.path).stem
Path(__file__).parent
/ "test_data"
/ "snapshots"
/ Path(request.path).stem
/ _snapshot_platform()
)
_check_snapshot_env(datadir)
return datadir
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"torch_version": "2.11.0+rocm7.2",
"python_version": "3.13.13",
"cuda_version": null,
"cudnn_version": "3005001",
"gpu_name": "AMD Instinct MI300X"
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"torch_version": "2.11.0+rocm7.2",
"python_version": "3.13.13",
"cuda_version": null,
"cudnn_version": "3005001",
"gpu_name": "AMD Instinct MI300X"
}
Binary file not shown.
Binary file not shown.
8,257 changes: 4,335 additions & 3,922 deletions pixi.lock

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions pixi.toml
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,14 @@ openfold3-cuda13-pypi = { no-default-feature = true, features = [
"openfold3-editable-full",
"tests"
] }
openfold3-rocm7 = { no-default-feature = true, features = [
"python",
"openfold3-cpu",
"pytorch-pypi-rocm7",
"not-in-pypi",
"openfold3-editable",
"tests",
] }

# Maybe we should have solve-groups, but how to conciliate between e.g. cu12 and cu13?
# N.B. at the moment all these are editable installs
Expand Down Expand Up @@ -250,6 +258,18 @@ torch = { version = "*", index = "https://download.pytorch.org/whl/cu129" }
pytorch-lightning = "*"
torch = { version = "*", index = "https://download.pytorch.org/whl/cu130" }

[feature.pytorch-pypi-rocm7]

platforms = ["linux-64"]

[feature.pytorch-pypi-rocm7.dependencies]
# torch 2.11.0+rocm7.2 requires setuptools<82
setuptools = "<82"

[feature.pytorch-pypi-rocm7.pypi-dependencies]
torch = { version = "*", index = "https://download.pytorch.org/whl/rocm7.2" }
triton-rocm = { version = "*", index = "https://download.pytorch.org/whl/rocm7.2" }

[feature.cuda12]

platforms = ["linux-64", "linux-aarch64"]
Expand Down