Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run CI conditionally with paths #695

Merged
merged 38 commits into from
Apr 25, 2024
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
c4ff75a
Try update lightning CI paths
rashidnhm Nov 13, 2023
55091b9
Auto update version
github-actions[bot] Nov 13, 2023
5522a63
Update kokkos tests to trigger on changes to pl core
rashidnhm Nov 13, 2023
89575df
Merge branch 'sc-49020-ci-lighten-investigation' of github.com:PennyL…
rashidnhm Nov 13, 2023
6e1784d
Merge branch 'master' into sc-49020-ci-lighten-investigation
vincentmr Dec 6, 2023
6a67588
Auto update version
github-actions[bot] Dec 6, 2023
d7b1c29
Merge remote-tracking branch 'origin/sc-49020-ci-lighten-investigatio…
vincentmr Apr 24, 2024
72202f9
Split tests_linux.yml into cpp/python.
vincentmr Apr 24, 2024
c128ab3
Auto update version from '0.36.0-dev36' to '0.36.0-dev38'
ringo-but-quantum Apr 24, 2024
bb7671d
Split GPU tests into cpp/python.
vincentmr Apr 24, 2024
080ae28
Merge remote-tracking branch 'origin/master' into feature/ci_conditio…
vincentmr Apr 24, 2024
2865ab5
Split MPI-GPU tests into cpp/python.
vincentmr Apr 24, 2024
7d712b6
Fix LGPU triggers.
vincentmr Apr 24, 2024
2701e14
Remove python tests from LGPU-C++.
vincentmr Apr 24, 2024
12d455c
Remove upload-to-codecov-linux-cpp from LGPUMPI tests.
vincentmr Apr 24, 2024
b5e4c5e
Rename test workflows.
vincentmr Apr 24, 2024
576268a
Update changelog.
vincentmr Apr 24, 2024
cec9d10
Change group names.
vincentmr Apr 24, 2024
7bc6402
Use paths-ignore to simplify workflow paths
vincentmr Apr 24, 2024
65d59c8
Auto update version from '0.36.0-dev38' to '0.36.0-dev39'
ringo-but-quantum Apr 24, 2024
a6ace27
Merge branch 'master' into feature/ci_conditional_tests
vincentmr Apr 24, 2024
07446cc
Fix test names.
vincentmr Apr 24, 2024
b3b3ecd
you may only define one of `paths` and `paths-ignore` for a single event
vincentmr Apr 24, 2024
3c40f07
Fix formatting
vincentmr Apr 24, 2024
185f85e
Merge remote-tracking branch 'origin/master' into feature/ci_conditio…
vincentmr Apr 24, 2024
e189a69
Auto update version from '0.36.0-dev39' to '0.36.0-dev40'
ringo-but-quantum Apr 24, 2024
296da01
Change to paths-ignore in no-bin tests.
vincentmr Apr 24, 2024
1ba1269
Merge branch 'master' into feature/ci_conditional_tests
vincentmr Apr 24, 2024
c57761b
Auto update version from '0.36.0-dev40' to '0.36.0-dev41'
ringo-but-quantum Apr 24, 2024
b4e9373
trigger ci
vincentmr Apr 24, 2024
b514fe4
Update .github/workflows/tests_windows_cpp.yml
vincentmr Apr 25, 2024
e05017d
Update .github/workflows/tests_lkcuda_python.yml
vincentmr Apr 25, 2024
9e98fab
Update .github/workflows/tests_lkcuda_cpp.yml
vincentmr Apr 25, 2024
82d8f26
Update .github/workflows/tests_lkcuda_cpp.yml
vincentmr Apr 25, 2024
3cf7a07
Use ! to exclude paths.
vincentmr Apr 25, 2024
26d3089
Merge streaming ops
mlxd Apr 25, 2024
3c3055f
Auto update version from '0.36.0-dev41' to '0.36.0-dev42'
ringo-but-quantum Apr 25, 2024
cafc1d6
Update compat workflows.
vincentmr Apr 25, 2024
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
3 changes: 3 additions & 0 deletions .github/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@

### Breaking changes

* Add `paths` directives to test workflows to avoid running tests that cannot be impacted by changes.
[(#695)](https://github.com/PennyLaneAI/pennylane-lightning/pull/695)

* Move common components of `/src/simulator/lightning_gpu/utils/` to `/src/utils/cuda_utils/`.
[(#676)](https://github.com/PennyLaneAI/pennylane-lightning/pull/676)

Expand Down
197 changes: 197 additions & 0 deletions .github/workflows/tests_lgpu_cpp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
name: Testing::Linux::x86_64::LGPU::C++
on:
workflow_call:
inputs:
lightning-version:
type: string
required: true
description: The version of Lightning to use. Valid values are either 'release' (most recent release candidate), 'stable' (most recent git-tag) or 'latest' (most recent commit from master)
pennylane-version:
type: string
required: true
description: The version of PennyLane to use. Valid values are either 'release' (most recent release candidate), 'stable' (most recent git-tag) or 'latest' (most recent commit from master)
release:
pull_request:
paths:
- .github/workflows/tests_lgpu_cpp.yml
- pennylane_lightning/core/src/*
- pennylane_lightning/core/src/algorithms/**
- pennylane_lightning/core/src/bindings/**
- pennylane_lightning/core/src/gates/**
- pennylane_lightning/core/src/measurements/**
- pennylane_lightning/core/src/observables/**
- pennylane_lightning/core/src/simulators/base/**
- pennylane_lightning/core/src/simulators/lightning_gpu/**
- pennylane_lightning/core/src/utils
vincentmr marked this conversation as resolved.
Show resolved Hide resolved
maliasadi marked this conversation as resolved.
Show resolved Hide resolved
push:
branches:
- master

env:
CI_CUDA_ARCH: 86
COVERAGE_FLAGS: "--cov=pennylane_lightning --cov-report=term-missing --cov-report=xml:./coverage.xml --no-flaky-report -p no:warnings --tb=native"
GCC_VERSION: 11
TF_VERSION: 2.10.0
TORCH_VERSION: 1.11.0+cpu

concurrency:
group: tests_lgpu_cpp-${{ github.ref }}
cancel-in-progress: true

jobs:
builddeps:
runs-on:
- self-hosted
- ubuntu-22.04
- gpu

strategy:
max-parallel: 1
matrix:
os: [ubuntu-22.04]
pl_backend: ["lightning_gpu"]
cuda_version: ["12"]

steps:
- name: Validate GPU version and installed compiler
run: |
source /etc/profile.d/modules.sh
module use /opt/modules
module load cuda/${{ matrix.cuda_version }}
echo "${PATH}" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}" >> $GITHUB_ENV
nvcc --version
nvidia-smi

cpptestswithLGPU:
if: ${{ !contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) }}
needs: [builddeps]
strategy:
matrix:
os: [ubuntu-22.04]
pl_backend: ["lightning_gpu"]
cuda_version: ["12"]

name: C++ tests (Lightning-GPU)
runs-on:
- ${{ matrix.os }}
- self-hosted
- gpu

steps:
- name: Validate GPU version and installed compiler
run: |
source /etc/profile.d/modules.sh
module use /opt/modules
module load cuda/${{ matrix.cuda_version }}
echo "${PATH}" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}" >> $GITHUB_ENV
nvcc --version
nvidia-smi

- name: Checkout PennyLane-Lightning-GPU
uses: actions/checkout@v4
with:
path: main

- uses: actions/setup-python@v5
name: Install Python
with:
python-version: '3.9'

- name: Setup Python virtual environment
id: setup_venv
env:
VENV_NAME: ${{ github.workspace }}/venv_${{ steps.setup_python.outputs.python-version }}_${{ github.sha }}
run: |
# Clear any pre-existing venvs
rm -rf venv_*

# Create new venv for this workflow_run
python --version
python -m venv ${{ env.VENV_NAME }}

# Add the venv to PATH for subsequent steps
echo ${{ env.VENV_NAME }}/bin >> $GITHUB_PATH

# Adding venv name as an output for subsequent steps to reference if needed
echo "venv_name=${{ env.VENV_NAME }}" >> $GITHUB_OUTPUT

- name: Display Python-Path
id: python_path
run: |
py_path=$(which python)
echo "Python Interpreter Path => $py_path"
echo "python=$py_path" >> $GITHUB_OUTPUT

pip_path=$(which python)
echo "PIP Path => $pip_path"
echo "pip=$pip_path" >> $GITHUB_OUTPUT

- name: Install required packages
run: |
python -m pip install ninja cmake custatevec-cu${{ matrix.cuda_version }}
sudo apt-get -y -q install liblapack-dev

- name: Build and run unit tests
run: |
cd main
cmake . -BBuild \
-DCUQUANTUM_SDK=$(python -c "import site; print( f'{site.getsitepackages()[0]}/cuquantum')")\
-DBUILD_TESTS=ON \
-DENABLE_PYTHON=OFF \
-DPL_BACKEND=${{ matrix.pl_backend }} \
-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) \
-DENABLE_COVERAGE=ON \
-G Ninja
cmake --build ./Build
cd ./Build
mkdir -p ./tests/results_${{ github.job }}_${{ matrix.pl_backend }}
for file in *runner ; do ./$file --order lex --reporter junit --out ./tests/results_${{ github.job }}_${{ matrix.pl_backend }}/report_$file.xml; done;
lcov --directory . -b ../pennylane_lightning/core/src --capture --output-file coverage.info
lcov --remove coverage.info '/usr/*' --output-file coverage.info
mv coverage.info coverage-${{ github.job }}-${{ matrix.pl_backend }}.info
- name: Upload test results
uses: actions/upload-artifact@v3
if: always()
with:
name: ubuntu-tests-reports-${{ github.job }}_${{ matrix.pl_backend }}
path: ./main/Build/tests/results_${{ github.job }}_${{ matrix.pl_backend }}
if-no-files-found: error

- name: Upload code coverage results
uses: actions/upload-artifact@v3
with:
name: ubuntu-codecov-results-cpp
path: ./main/Build/coverage-${{ github.job }}-${{ matrix.pl_backend }}.info
if-no-files-found: error

upload-to-codecov-linux-cpp:
needs: [cpptestswithLGPU]
name: Upload coverage data to codecov
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Download coverage reports
uses: actions/download-artifact@v3
with:
name: ubuntu-codecov-results-cpp

- name: Upload to Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}

- name: Cleanup
if: always()
run: |
rm -rf ${{ steps.setup_venv.outputs.venv_name }}
rm -rf *
rm -rf .git
rm -rf .gitignore
rm -rf .github
pip cache purge
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Testing::Linux::x86_64::LGPU
name: Testing::Linux::x86_64::LGPU::Python
on:
workflow_call:
inputs:
Expand All @@ -12,6 +12,19 @@ on:
description: The version of PennyLane to use. Valid values are either 'release' (most recent release candidate), 'stable' (most recent git-tag) or 'latest' (most recent commit from master)
release:
pull_request:
paths:
- .github/workflows/tests_lgpu_python.yml
- pennylane_lightning/core/src/*
- pennylane_lightning/core/src/algorithms/**
- pennylane_lightning/core/src/bindings/**
- pennylane_lightning/core/src/gates/**
- pennylane_lightning/core/src/measurements/**
- pennylane_lightning/core/src/observables/**
- pennylane_lightning/core/src/simulators/base/**
- pennylane_lightning/core/src/simulators/lightning_gpu/**
- pennylane_lightning/core/src/utils
- pennylane_lightning/lightning_gpu/**
- tests/**
push:
branches:
- master
Expand All @@ -24,7 +37,7 @@ env:
TORCH_VERSION: 1.11.0+cpu

concurrency:
group: tests_gpu-${{ github.ref }}
group: tests_lgpu_python-${{ github.ref }}
cancel-in-progress: true

jobs:
Expand Down Expand Up @@ -52,109 +65,6 @@ jobs:
nvcc --version
nvidia-smi

cpptestswithLGPU:
if: ${{ !contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) }}
needs: [builddeps]
strategy:
matrix:
os: [ubuntu-22.04]
pl_backend: ["lightning_gpu"]
cuda_version: ["12"]

name: C++ tests (Lightning-GPU)
runs-on:
- ${{ matrix.os }}
- self-hosted
- gpu

steps:
- name: Validate GPU version and installed compiler
run: |
source /etc/profile.d/modules.sh
module use /opt/modules
module load cuda/${{ matrix.cuda_version }}
echo "${PATH}" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}" >> $GITHUB_ENV
nvcc --version
nvidia-smi

- name: Checkout PennyLane-Lightning-GPU
uses: actions/checkout@v4
with:
path: main

- uses: actions/setup-python@v5
name: Install Python
with:
python-version: '3.9'

- name: Setup Python virtual environment
id: setup_venv
env:
VENV_NAME: ${{ github.workspace }}/venv_${{ steps.setup_python.outputs.python-version }}_${{ github.sha }}
run: |
# Clear any pre-existing venvs
rm -rf venv_*

# Create new venv for this workflow_run
python --version
python -m venv ${{ env.VENV_NAME }}

# Add the venv to PATH for subsequent steps
echo ${{ env.VENV_NAME }}/bin >> $GITHUB_PATH

# Adding venv name as an output for subsequent steps to reference if needed
echo "venv_name=${{ env.VENV_NAME }}" >> $GITHUB_OUTPUT

- name: Display Python-Path
id: python_path
run: |
py_path=$(which python)
echo "Python Interpreter Path => $py_path"
echo "python=$py_path" >> $GITHUB_OUTPUT

pip_path=$(which python)
echo "PIP Path => $pip_path"
echo "pip=$pip_path" >> $GITHUB_OUTPUT

- name: Install required packages
run: |
python -m pip install ninja cmake custatevec-cu${{ matrix.cuda_version }}
sudo apt-get -y -q install liblapack-dev

- name: Build and run unit tests
run: |
cd main
cmake . -BBuild \
-DCUQUANTUM_SDK=$(python -c "import site; print( f'{site.getsitepackages()[0]}/cuquantum')")\
-DBUILD_TESTS=ON \
-DENABLE_PYTHON=OFF \
-DPL_BACKEND=${{ matrix.pl_backend }} \
-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) \
-DENABLE_COVERAGE=ON \
-G Ninja
cmake --build ./Build
cd ./Build
mkdir -p ./tests/results_${{ github.job }}_${{ matrix.pl_backend }}
for file in *runner ; do ./$file --order lex --reporter junit --out ./tests/results_${{ github.job }}_${{ matrix.pl_backend }}/report_$file.xml; done;
lcov --directory . -b ../pennylane_lightning/core/src --capture --output-file coverage.info
lcov --remove coverage.info '/usr/*' --output-file coverage.info
mv coverage.info coverage-${{ github.job }}-${{ matrix.pl_backend }}.info
- name: Upload test results
uses: actions/upload-artifact@v3
if: always()
with:
name: ubuntu-tests-reports-${{ github.job }}_${{ matrix.pl_backend }}
path: ./main/Build/tests/results_${{ github.job }}_${{ matrix.pl_backend }}
if-no-files-found: error

- name: Upload code coverage results
uses: actions/upload-artifact@v3
with:
name: ubuntu-codecov-results-cpp
path: ./main/Build/coverage-${{ github.job }}-${{ matrix.pl_backend }}.info
if-no-files-found: error

pythontestswithLGPU:
needs: [builddeps]
strategy:
Expand Down Expand Up @@ -345,33 +255,3 @@ jobs:
fail_ci_if_error: true
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}

upload-to-codecov-linux-cpp:
needs: [cpptestswithLGPU]
name: Upload coverage data to codecov
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Download coverage reports
uses: actions/download-artifact@v3
with:
name: ubuntu-codecov-results-cpp

- name: Upload to Codecov
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}

- name: Cleanup
if: always()
run: |
rm -rf ${{ steps.setup_venv.outputs.venv_name }}
rm -rf *
rm -rf .git
rm -rf .gitignore
rm -rf .github
pip cache purge
Loading
Loading