Skip to content

Commit

Permalink
Merge branch 'master' into v0.33.1_master_merge
Browse files Browse the repository at this point in the history
  • Loading branch information
mlxd committed Nov 1, 2023
2 parents 2ce1a1d + d7af3c6 commit b0fb98c
Show file tree
Hide file tree
Showing 21 changed files with 316 additions and 65 deletions.
56 changes: 46 additions & 10 deletions .github/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,40 @@
# Release 0.33.1
# Release 0.34.0-dev

### New features since last release

### Breaking changes

### Improvements

* Add the MPI test CI workflows of Lightning-GPU in compatibility cron jobs.
[(#536)] (https://github.com/PennyLaneAI/pennylane-lightning/pull/536)

* Add MPI synchronization in places to safely handle communicated data.
[(#538)](https://github.com/PennyLaneAI/pennylane-lightning/pull/538)

* Add release option in compatibility cron jobs to test the release candidates of PennyLane and the Lightning plugins against one another.
[(#531)] (https://github.com/PennyLaneAI/pennylane-lightning/pull/531)

* Add GPU workflows in compatibility cron jobs to test Lightning-GPU and Lightning-Kokkos with the Kokkos CUDA backend.
[(#528)] (https://github.com/PennyLaneAI/pennylane-lightning/pull/528)

### Documentation

### Bug fixes

* Fix MPI Python unit tests for the adjoint method.
[(#538)](https://github.com/PennyLaneAI/pennylane-lightning/pull/538)

### Contributors

This release contains contributions from (in alphabetical order):

Vincent Michaud-Rioux, Shuli Shu

--

# Release 0.33.1

* pip-installed CUDA runtime libraries can now be accessed from a virtualenv.
[(#543)](https://github.com/PennyLaneAI/pennylane-lightning/pull/543)

Expand All @@ -25,6 +58,9 @@ Lee J. O'Riordan
* Add documentation updates for the `lightning_gpu` backend.
[(#525)] (https://github.com/PennyLaneAI/pennylane-lightning/pull/525)


### New features since last release

* Add `SparseHamiltonian` support for Lightning-Qubit and Lightning-GPU.
[(#526)] (https://github.com/PennyLaneAI/pennylane-lightning/pull/526)

Expand All @@ -51,10 +87,10 @@ Lee J. O'Riordan

### Breaking changes

* Add `tests_gpu.yml` workflow to test the Lightning-Kokkos backend with CUDA-12.
* Add `tests_gpu.yml` workflow to test the Lightning-Kokkos backend with CUDA-12.
[(#494)](https://github.com/PennyLaneAI/pennylane-lightning/pull/494)

* Implement `LM::GeneratorDoubleExcitation`, `LM::GeneratorDoubleExcitationMinus`, `LM::GeneratorDoubleExcitationPlus` kernels. Lightning-Qubit default kernels are now strictly from the `LM` implementation, which requires less memory and is faster for large state vectors.
* Implement `LM::GeneratorDoubleExcitation`, `LM::GeneratorDoubleExcitationMinus`, `LM::GeneratorDoubleExcitationPlus` kernels. L-Qubit default kernels are now strictly from the `LM` implementation, which requires less memory and is faster for large state vectors.
[(#512)](https://github.com/PennyLaneAI/pennylane-lightning/pull/512)

* Add workflows validating compatibility between PennyLane and Lightning's most recent stable releases and development (latest) versions.
Expand All @@ -67,7 +103,7 @@ Lee J. O'Riordan
* Cast integral-valued arrays to the device's complex type on entry in `_preprocess_state_vector` to ensure the state is correctly represented with floating-point numbers.
[(#501)](https://github.com/PennyLaneAI/pennylane-lightning/pull/501)

* Update `DefaultQubit` to `DefaultQubitLegacy` on Lightning fallback.
* Update DefaultQubit to DefaultQubitLegacy on Lightning fallback.
[(#500)](https://github.com/PennyLaneAI/pennylane-lightning/pull/500)

* Enums defined in `GateOperation.hpp` start at `1` (previously `0`). `::BEGIN` is introduced in a few places where it was assumed `0` accordingly.
Expand All @@ -84,16 +120,16 @@ Lee J. O'Riordan
* Add support for `pip install pennylane-lightning[kokkos]` for the OpenMP backend.
[(#515)](https://github.com/PennyLaneAI/pennylane-lightning/pull/515)

* Update `setup.py` to allow for multi-package co-existence. The `PennyLane_Lightning` package now is the responsible for the core functionality, and will be depended upon by all other extensions.
* Update setup.py to allow for multi-package co-existence. The PennyLane_Lightning package now is the responsible for the core functionality, and will be depended upon by all other extensions.
[(#504)] (https://github.com/PennyLaneAI/pennylane-lightning/pull/504)

* Redesign Lightning-Kokkos `StateVectorKokkos` class to use Kokkos `RangePolicy` together with special functors in `applyMultiQubitOp` to apply 1- to 4-wire generic unitary gates. For more than 4 wires, the general implementation using Kokkos `TeamPolicy` is employed to yield the best all-around performance.
* Refactor LKokkos `StateVectorKokkos` class to use Kokkos `RangePolicy` together with special functors in `applyMultiQubitOp` to apply 1- to 4-wire generic unitary gates. For more than 4 wires, the general implementation using Kokkos `TeamPolicy` is employed to yield the best all-around performance.
[(#490)] (https://github.com/PennyLaneAI/pennylane-lightning/pull/490)

* Redesign Lightning-Kokkos `Measurements` class to use Kokkos `RangePolicy` together with special functors to obtain the expectation value of 1- to 4-wire generic unitary gates. For more than 4 wires, the general implementation using Kokkos `TeamPolicy` is employed to yield the best all-around performance.
* Refactor LKokkos `Measurements` class to use Kokkos `RangePolicy` together with special functors to obtain the expectation value of 1- to 4-wire generic unitary gates. For more than 4 wires, the general implementation using Kokkos `TeamPolicy` is employed to yield the best all-around performance.
[(#489)] (https://github.com/PennyLaneAI/pennylane-lightning/pull/489)

* Add tests to increase Lightning-Kokkos coverage.
* Add tests to increase LKokkos coverage.
[(#485)](https://github.com/PennyLaneAI/pennylane-lightning/pull/485)

* Add memory locality tag reporting and adjoint diff dispatch for `lightning.qubit` statevector classes.
Expand All @@ -112,10 +148,10 @@ Lee J. O'Riordan
* Re-add support for `pip install pennylane-lightning[gpu]`.
[(#515)](https://github.com/PennyLaneAI/pennylane-lightning/pull/515)

* Switch most Lightning-Qubit default kernels to `LM`. Add `LM::multiQubitOp` tests, failing when targeting out-of-order wires clustered close to `num_qubits-1`. Fix the `LM::multiQubitOp` kernel implementation by introducing a generic `revWireParity` routine and replacing the `bitswap`-based implementation. Mimic the changes fixing the corresponding `multiQubitOp` and `expval` functors in Lightning-Kokkos.
* Switch most L-Qubit default kernels to `LM`. Add `LM::multiQubitOp` tests, failing when targeting out-of-order wires clustered close to `num_qubits-1`. Fix the `LM::multiQubitOp` kernel implementation by introducing a generic `revWireParity` routine and replacing the `bitswap`-based implementation. Mimic the changes fixing the corresponding `multiQubitOp` and `expval` functors in L-Kokkos.
[(#511)](https://github.com/PennyLaneAI/pennylane-lightning/pull/511)

* Fix RTD builds by removing unsupported `system_packages` configuration option.
* Fix RTD builds by removing unsupported `sytem_packages` configuration option.
[(#491)](https://github.com/PennyLaneAI/pennylane-lightning/pull/491)

### Contributors
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/compat-check-latest-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ jobs:
with:
lightning-version: latest
pennylane-version: latest
tests_lgpu_gpu_mpi:
name: Lightning Compatibility test (tests_lgpu_gpu_mpi) - latest/latest
uses: ./.github/workflows/tests_linux_x86_mpi_gpu.yml
with:
lightning-version: latest
pennylane-version: latest
tests_without_binary:
name: Lightning Compatibility test (tests_without_binary) - latest/latest
uses: ./.github/workflows/tests_without_binary.yml
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/compat-check-latest-stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ jobs:
with:
lightning-version: latest
pennylane-version: stable
tests_lgpu_gpu_mpi:
name: Lightning Compatibility test (tests_lgpu_gpu_mpi) - latest/stable
uses: ./.github/workflows/tests_linux_x86_mpi_gpu.yml
with:
lightning-version: latest
pennylane-version: stable
tests_without_binary:
name: Lightning Compatibility test (tests_without_binary) - latest/stable
uses: ./.github/workflows/tests_without_binary.yml
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/compat-check-release-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Compat Check w/PL - release/release

on:
schedule:
- cron: "0 4 * * 1-5" # Run daily at 0am Mon-Fri
workflow_dispatch:

jobs:
tests_linux:
name: Lightning Compatibility test (tests_linux) - release/release
uses: ./.github/workflows/tests_linux.yml
with:
lightning-version: release
pennylane-version: release
tests_lkokkos_gpu:
name: Lightning Compatibility test (tests_lkokkos_gpu) - release/release
uses: ./.github/workflows/tests_gpu_kokkos.yml
with:
lightning-version: release
pennylane-version: release
tests_lgpu_gpu:
name: Lightning Compatibility test (tests_lgpu_gpu) - release/release
uses: ./.github/workflows/tests_gpu_cu11.yml
with:
lightning-version: release
pennylane-version: release
tests_lgpu_gpu_mpi:
name: Lightning Compatibility test (tests_lgpu_gpu_mpi) - release/release
uses: ./.github/workflows/tests_linux_x86_mpi_gpu.yml
with:
lightning-version: release
pennylane-version: release
tests_without_binary:
name: Lightning Compatibility test (tests_without_binary) - release/release
uses: ./.github/workflows/tests_without_binary.yml
with:
lightning-version: release
pennylane-version: release
6 changes: 6 additions & 0 deletions .github/workflows/compat-check-stable-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ jobs:
with:
lightning-version: stable
pennylane-version: latest
tests_lgpu_gpu_mpi:
name: Lightning Compatibility test (tests_lgpu_gpu_mpi) - stable/latest
uses: ./.github/workflows/tests_linux_x86_mpi_gpu.yml
with:
lightning-version: stable
pennylane-version: latest
tests_without_binary:
name: Lightning Compatibility test (tests_without_binary) - stable/latest
uses: ./.github/workflows/tests_without_binary.yml
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/compat-check-stable-stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ jobs:
with:
lightning-version: stable
pennylane-version: stable
tests_lgpu_gpu_mpi:
name: Lightning Compatibility test (tests_lgpu_gpu_mpi) - stable/stable
uses: ./.github/workflows/tests_linux_x86_mpi_gpu.yml
with:
lightning-version: stable
pennylane-version: stable
tests_without_binary:
name: Lightning Compatibility test (tests_without_binary) - stable/stable
uses: ./.github/workflows/tests_without_binary.yml
Expand Down
30 changes: 25 additions & 5 deletions .github/workflows/tests_gpu_cu11.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ on:
lightning-version:
type: string
required: true
description: The version of lightning to use. Valid values are either 'stable' (most recent git-tag) or 'latest' (most recent commit from master)
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 'stable' (most recent git-tag) or 'latest' (most recent commit from master)
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)

env:
CI_CUDA_ARCH: 86
Expand Down Expand Up @@ -51,7 +51,7 @@ jobs:
nvidia-smi
cpptestswithLGPU_cu11:
if: ${{ github.event_name != 'workflow_call' }}
if: ${{ !contains(fromJSON('["workflow_call"]'), github.event_name) }}
needs: [builddeps]
strategy:
matrix:
Expand Down Expand Up @@ -182,14 +182,19 @@ jobs:
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
Expand Down Expand Up @@ -232,6 +237,21 @@ jobs:
python -m pip install -r requirements-dev.txt
python -m pip install cmake custatevec-cu11 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: |
Expand Down
26 changes: 24 additions & 2 deletions .github/workflows/tests_gpu_kokkos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ on:
lightning-version:
type: string
required: true
description: The version of lightning to use. Valid values are either 'stable' (most recent git-tag) or 'latest' (most recent commit from master)
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 'stable' (most recent git-tag) or 'latest' (most recent commit from master)
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:
Expand Down Expand Up @@ -236,6 +236,13 @@ jobs:
path: main
fetch-tags: true

- 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: |
Expand All @@ -259,6 +266,21 @@ jobs:
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: |
Expand Down
Loading

0 comments on commit b0fb98c

Please sign in to comment.