Feature/lkokkos mpi #4656
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
name: Testing (Linux) | |
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) | |
pull_request: | |
push: | |
branches: | |
- master | |
env: | |
TF_VERSION: 2.10.0 | |
TORCH_VERSION: 1.11.0+cpu | |
COVERAGE_FLAGS: "--cov=pennylane_lightning --cov-report=term-missing --no-flaky-report -p no:warnings --tb=native" | |
GCC_VERSION: 11 | |
OMP_NUM_THREADS: "2" | |
concurrency: | |
group: tests_linux-${{ github.ref }}-${{ inputs.lightning-version }}-${{ inputs.pennylane-version }} | |
cancel-in-progress: true | |
jobs: | |
cpptests: | |
if: ${{ !contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) }} | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
pl_backend: ["lightning_qubit"] | |
timeout-minutes: 30 | |
name: C++ tests | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: '3.9' | |
- name: Checkout PennyLane-Lightning | |
uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: echo ${{ github.event_name }} && sudo apt-get update && sudo apt-get -y -q install cmake gcc-$GCC_VERSION g++-$GCC_VERSION liblapack-dev ninja-build gcovr lcov | |
- name: Build and run unit tests | |
run: | | |
cmake . -BBuild -G Ninja \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DBUILD_TESTS=ON \ | |
-DENABLE_LAPACK=ON \ | |
-DENABLE_PYTHON=OFF \ | |
-DPL_BACKEND=${{ matrix.pl_backend }} \ | |
-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) \ | |
-DENABLE_COVERAGE=ON | |
cmake . -BBuildKernelOMP -G Ninja \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DBUILD_TESTS=ON \ | |
-DENABLE_PYTHON=OFF \ | |
-DPL_BACKEND=${{ matrix.pl_backend }} \ | |
-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) \ | |
-DENABLE_COVERAGE=ON \ | |
-DLQ_ENABLE_KERNEL_OMP=ON | |
cmake --build ./Build | |
cmake --build ./BuildKernelOMP | |
for d in Build BuildKernelOMP; do | |
cd ./$d | |
mkdir -p ./tests/results | |
for file in *runner ; do ./$file --order lex --reporter junit --out ./tests/results/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 | |
cd .. | |
done | |
lcov --add-tracefile ./Build/coverage.info -a ./BuildKernelOMP/coverage.info -o 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: | | |
./Build/tests/results/ | |
./BuildKernelOMP/tests/results/ | |
if-no-files-found: error | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-cpp | |
path: ./coverage-${{ github.job }}-${{ matrix.pl_backend }}.info | |
if-no-files-found: error | |
pythontests: | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
pl_backend: ["lightning_qubit"] | |
timeout-minutes: 30 | |
name: Python tests | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout PennyLane-Lightning | |
uses: actions/checkout@v3 | |
with: | |
fetch-tags: true | |
path: main | |
- name: Switch to release build of Lightning | |
if: inputs.lightning-version == 'release' | |
run: | | |
cd main | |
git fetch --all | |
git checkout $(git branch -a --list "origin/v*rc*" | tail -1) | |
- name: Switch to stable build of Lightning | |
if: inputs.lightning-version == 'stable' | |
run: | | |
cd main | |
git fetch --tags --force | |
git checkout $(git tag | sort -V | tail -1) | |
git log -1 --format='%H' | |
git status | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: '3.9' | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get -y -q install cmake gcc-$GCC_VERSION g++-$GCC_VERSION | |
- name: Get required Python packages | |
run: | | |
cd main | |
python -m pip install -r requirements-dev.txt | |
python -m pip install openfermionpyscf | |
- name: Checkout PennyLane for release build | |
if: inputs.pennylane-version == 'release' | |
uses: actions/checkout@v3 | |
with: | |
path: pennylane | |
repository: PennyLaneAI/pennylane | |
- name: Switch to release build of PennyLane | |
if: inputs.pennylane-version == 'release' | |
run: | | |
cd pennylane | |
git fetch --all | |
git checkout $(git branch -a --list "origin/v*rc*" | tail -1) | |
python -m pip uninstall -y pennylane && python -m pip install . -vv --no-deps | |
- name: Install Stable PennyLane | |
if: inputs.pennylane-version == 'stable' | |
run: | | |
cd main | |
python -m pip uninstall -y pennylane && python -m pip install -U pennylane | |
- name: Install ML libraries for interfaces | |
run: | | |
python -m pip install --upgrade torch==$TORCH_VERSION -f https://download.pytorch.org/whl/cpu/torch_stable.html | |
python -m pip install --upgrade "jax[cpu]" # This also installs jaxlib | |
python -m pip install --upgrade tensorflow~=$TF_VERSION keras~=$TF_VERSION | |
- name: Install backend device | |
run: | | |
cd main | |
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.pl_backend }} -DLQ_ENABLE_KERNEL_OMP=ON -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \ | |
python -m pip install -e . -vv | |
- name: Run PennyLane-Lightning unit tests | |
run: | | |
cd main/ | |
DEVICENAME=`echo ${{ matrix.pl_backend }} | sed "s/_/./g"` | |
PL_DEVICE=${DEVICENAME} python -m pytest tests/ $COVERAGE_FLAGS | |
PL_DEVICE=lightning_qubit2 python -m pytest tests/ $COVERAGE_FLAGS --cov-append | |
pl-device-test --device ${DEVICENAME} --skip-ops --shots=40000 $COVERAGE_FLAGS --cov-append | |
pl-device-test --device ${DEVICENAME} --shots=None --skip-ops $COVERAGE_FLAGS --cov-append | |
mv .coverage .coverage-${{ github.job }}-${{ matrix.pl_backend }} | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-python | |
path: | | |
./main/.coverage-${{ github.job }}-${{ matrix.pl_backend }} | |
if-no-files-found: error | |
cpptestswithOpenBLAS: | |
if: ${{ !contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) }} | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
pl_backend: ["lightning_qubit"] | |
timeout-minutes: 30 | |
name: C++ tests (OpenBLAS) | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: '3.9' | |
- name: Checkout PennyLane-Lightning | |
uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get -y -q install cmake gcc-$GCC_VERSION g++-$GCC_VERSION liblapack-dev libopenblas-dev ninja-build gcovr lcov | |
- name: Build and run unit tests | |
run: | | |
cmake . -BBuild -G Ninja \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DENABLE_PYTHON=OFF \ | |
-DENABLE_BLAS=ON \ | |
-DPL_BACKEND=${{ matrix.pl_backend }} \ | |
-DBUILD_TESTS=ON \ | |
-DENABLE_LAPACK=ON \ | |
-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) \ | |
-DENABLE_COVERAGE=ON | |
cmake --build ./Build | |
cd ./Build | |
mkdir -p ./tests/results | |
for file in *runner ; do ./$file --order lex --reporter junit --out ./tests/results/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 }}-Lapack.info | |
- name: Upload test results | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: ubuntu-tests-reports-${{ github.job }}-${{ matrix.pl_backend }}-Lapack | |
path: ./Build/tests/results/ | |
if-no-files-found: error | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-cpp | |
path: ./Build/coverage-${{ github.job }}-${{ matrix.pl_backend }}-Lapack.info | |
if-no-files-found: error | |
cpptestswithOpenBLASNoLAPACK: | |
if: ${{ !contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) }} | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
pl_backend: ["lightning_qubit"] | |
timeout-minutes: 30 | |
name: C++ tests (OpenBLAS without LAPACK) | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: '3.9' | |
- name: Checkout PennyLane-Lightning | |
uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get -y -q install cmake gcc-$GCC_VERSION g++-$GCC_VERSION liblapack-dev libopenblas-dev ninja-build gcovr lcov | |
- name: Build and run unit tests | |
run: | | |
cmake . -BBuild -G Ninja \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DENABLE_PYTHON=OFF \ | |
-DPL_BACKEND=${{ matrix.pl_backend }} \ | |
-DBUILD_TESTS=ON \ | |
-DENABLE_LAPACK=OFF \ | |
-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) \ | |
-DENABLE_COVERAGE=ON \ | |
-DLQ_ENABLE_KERNEL_OMP=ON | |
cmake --build ./Build | |
cd ./Build | |
mkdir -p ./tests/results | |
for file in *runner ; do ./$file --order lex --reporter junit --out ./tests/results/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: ./Build/tests/results/ | |
if-no-files-found: error | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-cpp | |
path: ./Build/coverage-${{ github.job }}-${{ matrix.pl_backend }}.info | |
if-no-files-found: error | |
pythontestswithOpenBLAS: | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
pl_backend: ["lightning_qubit"] | |
timeout-minutes: 30 | |
name: Python tests with OpenBLAS | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout PennyLane-Lightning | |
uses: actions/checkout@v3 | |
with: | |
fetch-tags: true | |
path: main | |
- name: Switch to release build of Lightning | |
if: inputs.lightning-version == 'release' | |
run: | | |
cd main | |
git fetch --all | |
git checkout $(git branch -a --list "origin/v*rc*" | tail -1) | |
- name: Switch to stable build of Lightning | |
if: inputs.lightning-version == 'stable' | |
run: | | |
cd main | |
git fetch --tags --force | |
git checkout $(git tag | sort -V | tail -1) | |
git log -1 --format='%H' | |
git status | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: '3.9' | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get -y -q install cmake gcc-$GCC_VERSION g++-$GCC_VERSION libopenblas-dev | |
- name: Get required Python packages | |
run: | | |
cd main | |
python -m pip install -r requirements-dev.txt | |
python -m pip install openfermionpyscf | |
- name: Checkout PennyLane for release build | |
if: inputs.pennylane-version == 'release' | |
uses: actions/checkout@v3 | |
with: | |
path: pennylane | |
repository: PennyLaneAI/pennylane | |
- name: Switch to release build of PennyLane | |
if: inputs.pennylane-version == 'release' | |
run: | | |
cd pennylane | |
git fetch --all | |
git checkout $(git branch -a --list "origin/v*rc*" | tail -1) | |
python -m pip uninstall -y pennylane && python -m pip install . -vv --no-deps | |
- name: Install Stable PennyLane | |
if: inputs.pennylane-version == 'stable' | |
run: | | |
cd main | |
python -m pip uninstall -y pennylane && python -m pip install -U pennylane | |
- name: Install ML libraries for interfaces | |
run: | | |
python -m pip install --upgrade torch==$TORCH_VERSION -f https://download.pytorch.org/whl/cpu/torch_stable.html | |
python -m pip install --upgrade "jax[cpu]" # This also installs jaxlib | |
python -m pip install --upgrade tensorflow~=$TF_VERSION keras~=$TF_VERSION | |
- name: Install backend device | |
run: | | |
cd main | |
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.pl_backend }} -DENABLE_BLAS=ON -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \ | |
python -m pip install -e . -vv | |
- name: Run PennyLane-Lightning unit tests | |
run: | | |
cd main/ | |
DEVICENAME=`echo ${{ matrix.pl_backend }} | sed "s/_/./g"` | |
PL_DEVICE=${DEVICENAME} python -m pytest tests/ $COVERAGE_FLAGS | |
pl-device-test --device ${DEVICENAME} --skip-ops --shots=40000 $COVERAGE_FLAGS --cov-append | |
pl-device-test --device ${DEVICENAME} --shots=None --skip-ops $COVERAGE_FLAGS --cov-append | |
mv .coverage .coverage-${{ github.job }}-${{ matrix.pl_backend }} | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-python | |
path: ./main/.coverage-${{ github.job }}-${{ matrix.pl_backend }} | |
if-no-files-found: error | |
build_and_cache_Kokkos: | |
name: "Build and cache Kokkos" | |
uses: ./.github/workflows/build_and_cache_Kokkos_linux.yml | |
with: | |
os: ubuntu-22.04 | |
cpptestswithKokkos: | |
if: ${{ !contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) }} | |
needs: [build_and_cache_Kokkos] | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
pl_backend: ["lightning_kokkos"] | |
exec_model: ${{ fromJson(needs.build_and_cache_Kokkos.outputs.exec_model) }} | |
kokkos_version: ${{ fromJson(needs.build_and_cache_Kokkos.outputs.kokkos_version) }} | |
timeout-minutes: 30 | |
name: C++ tests (Kokkos) | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: '3.9' | |
- name: Checkout PennyLane-Lightning | |
uses: actions/checkout@v3 | |
- name: Restoring cached dependencies | |
id: kokkos-cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{ github.workspace}}/Kokkos_install/${{ matrix.exec_model }} | |
key: ${{ matrix.os }}-kokkos${{ matrix.kokkos_version }}-${{ matrix.exec_model }} | |
- name: Copy cached libraries | |
if: steps.kokkos-cache.outputs.cache-hit == 'true' | |
run: | | |
rm -rf Kokkos | |
mkdir Kokkos/ | |
cp -rf ${{ github.workspace}}/Kokkos_install/${{ matrix.exec_model }}/* Kokkos/ | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get -y -q install cmake gcc-$GCC_VERSION g++-$GCC_VERSION liblapack-dev ninja-build gcovr lcov | |
- name: Build and run unit tests | |
run: | | |
cmake . -BBuild -G Ninja \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DBUILD_TESTS=ON \ | |
-DENABLE_LAPACK=ON \ | |
-DENABLE_PYTHON=OFF \ | |
-DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos \ | |
-DPL_BACKEND=${{ matrix.pl_backend }} \ | |
-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) \ | |
-DENABLE_COVERAGE=ON | |
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: ./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: ./Build/coverage-${{ github.job }}-${{ matrix.pl_backend }}.info | |
if-no-files-found: error | |
pythontestswithKokkos: | |
needs: [build_and_cache_Kokkos] | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
pl_backend: ["lightning_kokkos", "all"] | |
exec_model: ${{ fromJson(needs.build_and_cache_Kokkos.outputs.exec_model) }} | |
kokkos_version: ${{ fromJson(needs.build_and_cache_Kokkos.outputs.kokkos_version) }} | |
exclude: | |
- pl_backend: ["all"] | |
exec_model: OPENMP | |
timeout-minutes: 30 | |
name: Python tests with Kokkos | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout PennyLane-Lightning | |
uses: actions/checkout@v3 | |
with: | |
fetch-tags: true | |
path: main | |
- name: Switch to release build of Lightning | |
if: inputs.lightning-version == 'release' | |
run: | | |
cd main | |
git fetch --all | |
git checkout $(git branch -a --list "origin/v*rc*" | tail -1) | |
- name: Switch to stable build of Lightning | |
if: inputs.lightning-version == 'stable' | |
run: | | |
cd main | |
git fetch --tags --force | |
git checkout $(git tag | sort -V | tail -1) | |
git log -1 --format='%H' | |
git status | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: '3.9' | |
- name: Restoring cached dependencies | |
id: kokkos-cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{ github.workspace}}/Kokkos_install/${{ matrix.exec_model }} | |
key: ${{ matrix.os }}-kokkos${{ matrix.kokkos_version }}-${{ matrix.exec_model }} | |
- name: Copy cached libraries | |
if: steps.kokkos-cache.outputs.cache-hit == 'true' | |
run: | | |
rm -rf Kokkos | |
mkdir Kokkos/ | |
cp -rf ${{ github.workspace}}/Kokkos_install/${{ matrix.exec_model }}/* Kokkos/ | |
pwd | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get -y -q install cmake gcc-$GCC_VERSION g++-$GCC_VERSION | |
- name: Get required Python packages | |
run: | | |
cd main | |
python -m pip install -r requirements-dev.txt | |
python -m pip install openfermionpyscf | |
- name: Checkout PennyLane for release build | |
if: inputs.pennylane-version == 'release' | |
uses: actions/checkout@v3 | |
with: | |
path: pennylane | |
repository: PennyLaneAI/pennylane | |
- name: Switch to release build of PennyLane | |
if: inputs.pennylane-version == 'release' | |
run: | | |
cd pennylane | |
git fetch --all | |
git checkout $(git branch -a --list "origin/v*rc*" | tail -1) | |
python -m pip uninstall -y pennylane && python -m pip install . -vv --no-deps | |
- name: Install Stable PennyLane | |
if: inputs.pennylane-version == 'stable' | |
run: | | |
cd main | |
python -m pip uninstall -y pennylane && python -m pip install -U pennylane | |
- name: Install ML libraries for interfaces | |
run: | | |
python -m pip install --upgrade torch==$TORCH_VERSION -f https://download.pytorch.org/whl/cpu/torch_stable.html | |
python -m pip install --upgrade "jax[cpu]" # This also installs jaxlib | |
python -m pip install --upgrade tensorflow~=$TF_VERSION keras~=$TF_VERSION | |
- name: Install backend device | |
if: ${{ matrix.pl_backend != 'all'}} | |
run: | | |
cd main | |
SKIP_COMPILATION=True PL_BACKEND="lightning_qubit" pip install -e . -vv | |
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.pl_backend }} -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \ | |
python -m pip install -e . -vv | |
- name: Run PennyLane-Lightning unit tests | |
if: ${{ matrix.pl_backend != 'all'}} | |
run: | | |
cd main/ | |
DEVICENAME=`echo ${{ matrix.pl_backend }} | sed "s/_/./g"` | |
PL_DEVICE=${DEVICENAME} python -m pytest tests/ $COVERAGE_FLAGS | |
pl-device-test --device ${DEVICENAME} --skip-ops --shots=40000 $COVERAGE_FLAGS --cov-append | |
pl-device-test --device ${DEVICENAME} --shots=None --skip-ops $COVERAGE_FLAGS --cov-append | |
mv .coverage .coverage-${{ github.job }}-${{ matrix.pl_backend }} | |
- name: Install all backend devices | |
if: ${{ matrix.pl_backend == 'all' }} | |
run: | | |
cd main | |
CMAKE_ARGS="-DPL_BACKEND="lightning_qubit" -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \ | |
python -m pip install -e . -vv | |
rm -rf build | |
CMAKE_ARGS="-DPL_BACKEND="lightning_kokkos" -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \ | |
python -m pip install -e . -vv | |
- name: Run PennyLane-Lightning unit tests for lightning.qubit with all devices installed | |
if: ${{ matrix.pl_backend == 'all' }} | |
run: | | |
cd main/ | |
PL_DEVICE=lightning.qubit python -m pytest tests/ $COVERAGE_FLAGS | |
pl-device-test --device lightning.qubit --skip-ops --shots=40000 $COVERAGE_FLAGS --cov-append | |
pl-device-test --device lightning.qubit --shots=None --skip-ops $COVERAGE_FLAGS --cov-append | |
PL_DEVICE=lightning.kokkos python -m pytest tests/ $COVERAGE_FLAGS | |
pl-device-test --device lightning.kokkos --skip-ops --shots=40000 $COVERAGE_FLAGS --cov-append | |
pl-device-test --device lightning.kokkos --shots=None --skip-ops $COVERAGE_FLAGS --cov-append | |
mv .coverage .coverage-${{ github.job }}-${{ matrix.pl_backend }} | |
- name: Upload code coverage results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-python | |
path: ./main/.coverage-${{ github.job }}-${{ matrix.pl_backend }} | |
if-no-files-found: error | |
upload-to-codecov-linux-python: | |
needs: [pythontests, pythontestswithOpenBLAS, pythontestswithKokkos] | |
name: Upload python coverage data to codecov | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-tags: true | |
path: main | |
- name: Download coverage reports | |
uses: actions/download-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-python | |
- name: Combine coverage files | |
run: | | |
python -m pip install coverage | |
python -m coverage combine .coverage-python* | |
# Added cov xml -i to ignore "No source for code" random errors | |
# https://stackoverflow.com/questions/2386975/no-source-for-code-message-in-coverage-py | |
python -m coverage xml -i -o coverage-${{ github.job }}.xml | |
- name: Upload to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
upload-to-codecov-linux-cpp: | |
needs: [cpptests, cpptestswithOpenBLAS, cpptestswithOpenBLASNoLAPACK, cpptestswithKokkos] | |
name: Upload cpp coverage data to codecov | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Download coverage reports | |
uses: actions/download-artifact@v3 | |
with: | |
name: ubuntu-codecov-results-cpp | |
- name: Upload to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
cpptestsWithMultipleBackends: | |
# Device-specific tests are performed for both. Device-agnostic tests default to LightningQubit. | |
if: ${{ !contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) }} | |
needs: [build_and_cache_Kokkos] | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
exec_model: ${{ fromJson(needs.build_and_cache_Kokkos.outputs.exec_model) }} | |
kokkos_version: ${{ fromJson(needs.build_and_cache_Kokkos.outputs.kokkos_version) }} | |
timeout-minutes: 30 | |
name: C++ tests (multiple backends) | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/setup-python@v4 | |
name: Install Python | |
with: | |
python-version: '3.9' | |
- name: Checkout PennyLane-Lightning | |
uses: actions/checkout@v3 | |
- name: Restoring cached dependencies | |
id: kokkos-cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{ github.workspace}}/Kokkos_install/${{ matrix.exec_model }} | |
key: ${{ matrix.os }}-kokkos${{ matrix.kokkos_version }}-${{ matrix.exec_model }} | |
- name: Copy cached libraries | |
if: steps.kokkos-cache.outputs.cache-hit == 'true' | |
run: | | |
rm -rf Kokkos | |
mkdir Kokkos/ | |
cp -rf ${{ github.workspace}}/Kokkos_install/${{ matrix.exec_model }}/* Kokkos/ | |
- name: Install dependencies | |
run: sudo apt-get update && sudo apt-get -y -q install cmake gcc-$GCC_VERSION g++-$GCC_VERSION liblapack-dev ninja-build gcovr lcov | |
- name: Build and run unit tests | |
run: | | |
set -x | |
cmake . -BBuild -G Ninja \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DBUILD_TESTS=ON \ | |
-DENABLE_LAPACK=ON \ | |
-DENABLE_PYTHON=OFF \ | |
-DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos \ | |
-DPL_BACKEND="lightning_qubit;lightning_kokkos" \ | |
-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) | |
cmake --build ./Build | |
cd ./Build | |
mkdir -p ./tests/results_multiple_backends | |
for file in *runner ; do ./$file --order lex --reporter junit --out ./tests/results_multiple_backends/report_$file.xml; done; | |
set +x | |
- name: Upload test results | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: ubuntu-tests-reports-${{ github.job }}-multiple-backends | |
path: ./Build/tests/results_multiple_backends/ | |
if-no-files-found: error |