test(pt): add common test case for model/atomic model #7656
Workflow file for this run
This file contains 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
on: | |
push: | |
branches-ignore: | |
- "gh-readonly-queue/**" | |
pull_request: | |
merge_group: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref || github.run_id }} | |
cancel-in-progress: true | |
name: Test Python | |
jobs: | |
testpython: | |
name: Test Python | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
group: [1, 2, 3, 4, 5, 6] | |
python: ["3.8", "3.11"] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
- run: python -m pip install -U uv | |
- run: | | |
uv pip install --system mpich | |
uv pip install --system "torch==2.3.0+cpu.cxx11.abi" -i https://download.pytorch.org/whl/ | |
export PYTORCH_ROOT=$(python -c 'import torch;print(torch.__path__[0])') | |
uv pip install --system --only-binary=horovod -e .[cpu,test] horovod[tensorflow-cpu] mpi4py | |
env: | |
# Please note that uv has some issues with finding | |
# existing TensorFlow package. Currently, it uses | |
# TensorFlow in the build dependency, but if it | |
# changes, setting `TENSORFLOW_ROOT`. | |
TENSORFLOW_VERSION: ${{ matrix.python == '3.8' && '2.13.1' || '2.16.1' }} | |
DP_ENABLE_PYTORCH: 1 | |
DP_BUILD_TESTING: 1 | |
UV_EXTRA_INDEX_URL: "https://pypi.anaconda.org/njzjz/simple https://pypi.anaconda.org/mpi4py/simple" | |
- run: dp --version | |
- name: Get durations from cache | |
uses: actions/cache@v4 | |
with: | |
path: test_durations | |
# the key must never match, even when restarting workflows, as that | |
# will cause durations to get out of sync between groups, the | |
# combined durations will be loaded if available | |
key: test-durations-split-${{ github.run_id }}-${{ github.run_number}}-${{ matrix.python }}-${{ matrix.group }} | |
restore-keys: | | |
test-durations-combined-${{ matrix.python }}-${{ github.sha }} | |
test-durations-combined-${{ matrix.python }} | |
- run: pytest --cov=deepmd source/tests --durations=0 --splits 6 --group ${{ matrix.group }} --store-durations --durations-path=.test_durations_${{ matrix.group }} --splitting-algorithm least_duration | |
env: | |
NUM_WORKERS: 0 | |
- name: Upload partial durations | |
uses: actions/upload-artifact@v4 | |
with: | |
name: split-${{ matrix.python }}-${{ matrix.group }} | |
path: .test_durations_${{ matrix.group }} | |
- uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
update_durations: | |
name: Combine and update integration test durations | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
python: ["3.8", "3.11"] | |
needs: testpython | |
steps: | |
- name: Get durations from cache | |
uses: actions/cache@v4 | |
with: | |
path: .test_durations | |
# key won't match during the first run for the given commit, but | |
# restore-key will if there's a previous stored durations file, | |
# so cache will both be loaded and stored | |
key: test-durations-combined-${{ matrix.python }}-${{ github.sha }} | |
restore-keys: test-durations-combined-${{ matrix.python }} | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: split-${{ matrix.python }}-* | |
merge-multiple: true | |
- name: Combine test durations | |
run: jq '. + input' .test_durations_* > .test_durations | |
pass: | |
name: Pass testing Python | |
needs: [testpython, update_durations] | |
runs-on: ubuntu-latest | |
if: always() | |
steps: | |
- name: Decide whether the needed jobs succeeded or failed | |
uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJSON(needs) }} |