Skip to content

Enable github-first GPU CI for nightly runs + PRs.#1325

Merged
ktangsali merged 24 commits intoNVIDIA:mainfrom
coreyjadams:main
Jan 15, 2026
Merged

Enable github-first GPU CI for nightly runs + PRs.#1325
ktangsali merged 24 commits intoNVIDIA:mainfrom
coreyjadams:main

Conversation

@coreyjadams
Copy link
Collaborator

PhysicsNeMo Pull Request

Summary of two new ci workflows:

  • nightly ci builds on cpu, caches the uv env. Then runs full test suite twice on h100s. First for coverage baseline, second for pytest-testmon db. All tests still need to pass, so this serves as nightly testing too.
  • second ci triggers on PRs. It will use the database from nightly testmon to select a smaller set of tests to run, for both coverage and standard testing.

uv.lock is updated and pyproject.toml for a new dev dep: pytest-testmon.

Description

Checklist

Dependencies

Review Process

All PRs are reviewed by the PhysicsNeMo team before merging.

Depending on which files are changed, GitHub may automatically assign a maintainer for review.

We are also testing AI-based code review tools (e.g., Greptile), which may add automated comments with a confidence score.
This score reflects the AI’s assessment of merge readiness and is not a qualitative judgment of your work, nor is
it an indication that the PR will be accepted / rejected.

AI-generated feedback should be reviewed critically for usefulness.
You are not required to respond to every AI comment, but they are intended to help both authors and reviewers.
Please react to Greptile comments with 👍 or 👎 to provide feedback on their accuracy.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 15, 2026

Greptile Summary

  • Implements GitHub-first CI/CD with two new workflows: nightly builds that cache UV environment and run full test suite on H100s, and PR workflows that use pytest-testmon to select optimized test subsets
  • Adds pytest-testmon dependency and creates physicsnemo/conftest.py to handle graceful degradation when optional dependencies are missing in CI environments
  • Updates docstring examples across multiple files to use conditional CUDA device selection (torch.cuda.is_available()) for robust testing on both GPU and CPU environments

Important Files Changed

Filename Overview
.github/workflows/github-nightly.yml New comprehensive nightly CI workflow with UV caching, H100 GPU testing, and artifact generation for testmon database and coverage
.github/workflows/github-pr.yml New PR-triggered workflow that optimizes test execution using testmon database from nightly builds to run only affected tests
physicsnemo/conftest.py New pytest configuration file that enables graceful handling of missing dependencies and CUDA unavailability in CI environments

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

7 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

@coreyjadams
Copy link
Collaborator Author

Some additional context, here, on the new conftest.py and docstring tests.

Not all docstring tests pass without all optional deps installed. To get around this, I added a conftest to physicsnemo to skip tests that have import errors at collection, to make sure they don't just entirely crash. I also did an auto-device selection in two test, rather than defaulting to cuda.

When we have the proper CI container going, here, we can remove conftest.py. We should probably always keep the right device selection.

@coreyjadams
Copy link
Collaborator Author

/blossom-ci

@coreyjadams coreyjadams enabled auto-merge January 15, 2026 16:33
@ktangsali ktangsali disabled auto-merge January 15, 2026 17:04
@ktangsali ktangsali merged commit 4283372 into NVIDIA:main Jan 15, 2026
4 checks passed
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.

2 participants