Repository navigation
fix(build): honor disabled TensorFlow for native interfaces - #6051
Conversation
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
njzjz-bot
left a comment
There was a problem hiding this comment.
Agent: dot
Reviewed exact head 063b873. No blocking findings in this scoped build-option fix.
Traced the native-interface flags through source/CMakeLists.txt: USE_TF_PYTHON_LIBS=TRUE re-enables ENABLE_TENSORFLOW there, so deriving that flag from the same boolean as TensorFlow discovery removes the contradiction for PyTorch-only builds. The default/unset and explicit-enabled paths preserve the prior flags; i-PI script selection and LAMMPS version forwarding remain unchanged. The nine-case regression checks the Python/i-PI/LAMMPS matrix, asserts disabled TensorFlow is never discovered, and clears the cached environment result before and after each invocation.
Validation: source review of both changed files plus backend discovery and CMake consumers. I could not rerun pytest in this review environment because pytest is not installed; no full native build was performed. This review does not approve or run fork CI.
|
The Python collection failure was a missing test dependency: The nine build-option regressions pass in clean Python 3.10.22 and 3.13.16 environments, with no skips. The repository's pre-commit hooks and Ruff checks pass too. The previous C++ sanitizer crash and LAMMPS exit 143 are still under investigation; this dependency fix does not resolve or suppress them. I am checking those paths against the exact base with matched dependencies. The updated upstream workflows currently require approval. The new-head Read the Docs build 35031571 also fails during installation of |
wanghan-iapcm
left a comment
There was a problem hiding this comment.
The fix is correct and complete. The unconditional -DUSE_TF_PYTHON_LIBS:BOOL=TRUE for LAMMPS/i-PI builds did override -DENABLE_TENSORFLOW=OFF through source/CMakeLists.txt:334-335, and deriving the flag from DP_ENABLE_TENSORFLOW closes that hole: I traced every consumer of USE_TF_PYTHON_LIBS (the root CMakeLists.txt, Findtensorflow.cmake, the source/lmp/source/ipi env templates and source/install/package_c.sh) and the two flags now agree in every documented 0/1/unset cell. The new test genuinely fails on the pre-PR line, and the extra test dependencies (dependency_groups, tomli for Python < 3.11) match what the backend import chain needs.
The remaining observations are non-blocking and recorded for a later cleanup: the test never asserts the -DTENSORFLOW_VERSION / -DTENSORFLOW_ROOT:PATH arguments emitted by the block whose condition this PR rewrote; it mocks and executes the PyTorch branch in every case but asserts nothing about -DENABLE_PYTORCH / -DCMAKE_PREFIX_PATH / the returned version; the module-scope from backend import read_env breaks collection in non-editable environments such as the documented pytest source/tests tox command, where the sibling source/tests/common/test_pytorch_requirements.py instead uses monkeypatch.syspath_prepend; and the commit subject "Honor disabled TensorFlow when configuring native interfaces" does not follow the repository's conventional-commit format.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #6051 +/- ##
==========================================
- Coverage 78.36% 77.85% -0.51%
==========================================
Files 1179 1207 +28
Lines 142929 146598 +3669
Branches 5079 5217 +138
==========================================
+ Hits 112002 114132 +2130
- Misses 28990 30502 +1512
- Partials 1937 1964 +27 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Head branch was pushed to by a user without write access
…eepmodeling#6052) ## Summary Do not pass charge_spin=None to scripted model methods that predate that optional argument. Preserve the keyword when a charge/spin tensor is supplied. Apply the same rule in inference and the model wrapper. The regression loads the repository's legacy scripted fixture and compares native versus external (vesin) neighbor-list evaluation for energy, forces and virial. ## Validation Based on current master (7a9510d). - `pytest -q source/tests/pt/model/test_nlist_backend.py`: 12 passed, 7 conditional GPU/backend skips. The new legacy-model regression executed and passed with vesin. - All applicable repository pre-commit hooks passed, including pylint. Tests used the proposed Python source with the existing compatible PyTorch 2.11 native operators. This is a Python schema-compatibility fix; a full native-backend rebuild was not required for that focused test. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> <!-- coderabbit-ai-generated:v1 --> ## Summary by CodeRabbit * **Bug Fixes** * Improved compatibility with older models that do not accept optional charge-spin data. Explicitly provided charge-spin values continue to be passed through during inference and training. * Added a regression check confirming consistent evaluation results between native and external neighbor-list backends for a legacy model, helping ensure users receive matching results across these options. <!-- end of auto-generated comment: release notes by coderabbit.ai --> ## CI follow-up (2026-10-07) The exact-head Read the Docs build fails while installing `doc/requirements.txt`, before Sphinx runs: the selected PyTorch headers require C++20, while the current target baseline selects C++17. The same build-standard mismatch appears on all five related contribution heads (deepmodeling#6051 through deepmodeling#6055). Existing issue deepmodeling#6048 and PR deepmodeling#6049 already address this compatibility problem; this PR leaves that repair in its independent upstream review. The Read the Docs check remains failed until that dependency is resolved and the build is rerun. The exact-head pre-commit.ci check passes; GitHub Actions still require maintainer approval. --------- Co-authored-by: Pengchao_Zhang <zpc20@mails.tsinghua.edu.cn>
Summary
When an i-PI or LAMMPS interface is requested, derive USE_TF_PYTHON_LIBS from DP_ENABLE_TENSORFLOW instead of unconditionally enabling it. This keeps a PyTorch-only native-interface build from requesting TensorFlow libraries. The existing default behavior, including the default TensorFlow-enabled setting, is preserved.
Tests
A backend-independent regression exercises 9 combinations: Python/i-PI/LAMMPS interfaces and DP_ENABLE_TENSORFLOW set to 0, 1, or unset. It checks that disabled TensorFlow is not discovered and verifies the resulting CMake flags and dp_ipi entry point.
PYTHONPATH=. python -m pytest -q source/tests/test_build_backend.py: 9 passed.Based on current master (7a9510d). This is an independent build-configuration fix and does not modify model evaluation or introduce new backend dependencies.
Summary by CodeRabbit
tomlifor Python versions below 3.11, while retaining dependency group support.CI follow-up (2026-10-07)
The exact-head Read the Docs build fails while installing
doc/requirements.txt, before Sphinx runs: the selected PyTorch headers require C++20, while the current target baseline selects C++17. The same build-standard mismatch appears on all five related contribution heads (#6051 through #6055). Existing issue #6048 and PR #6049 already address this compatibility problem; this PR leaves that repair in its independent upstream review. The Read the Docs check remains failed until that dependency is resolved and the build is rerun. The exact-head pre-commit.ci check passes; GitHub Actions still require maintainer approval.