Skip to content

Commit

Permalink
Add LGPU docs (#525)
Browse files Browse the repository at this point in the history
* init commit

* Auto update version

* add changelog

* Update readme.

* shush CI [skip ci]

* Auto update version

* Fix README links and code-blocks. [skip ci]

* Fix card links.

* Fix obs signature to match LK/LQ

* Revert card links. [skip ci]

* update docs

* update readme

* Reorder cards and add docker support section. [skip ci]

* Build with CUDA on the CI for correct API gen

* Add docker.rst [skip ci].

* Add Cuda 11.8 install

* Lower CUDA version

* Fix typo in name and paths

* Disable CUDA checks for RTD

* update readme

* update LGPU installation steps

* Turn off GPU runners.

* Update CUDA wheel builder

* add docstring in lightning_gpu.py

* Change kokkos gpu order. [skip ci]

* Fix some headings and toctrees [skip ci].

* Add GPU test workflows to plugin test matrix [sc-48529] (#528)

* update measurement

* add openmp to adjgpu

* Auto update version

* Add support for building multiple backend simulators (#497)

* Add PL_BACKEND_LIST

* Update the support

* Exclude Python bindings

* Update HermitianObs name scope conflicts

* Auto update version

* Cleanup

* Update CI to build and check C++ tests of multiple backends (Linux)

* Update changelog

* Update .github/workflows/tests_linux.yml

Co-authored-by: Vincent Michaud-Rioux <[email protected]>

* Apply code review suggestions

* Update .github/workflows/tests_linux.yml

Co-authored-by: Amintor Dusko <[email protected]>

---------

Co-authored-by: Dev version update bot <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Vincent Michaud-Rioux <[email protected]>
Co-authored-by: Amintor Dusko <[email protected]>

* add python layer & isingxy gate in the cpp layer

* add batched adjoint method

* Update DefaultQubit to DefaultQubitLegacy (#500)

* Update DefaultQubit to DefaultQubitLegacy

* Update changelog

* update pylint disable on fallback

* Auto update version

* add batch support for adjoint method

* add gitignore

* tidy up code

* Auto update version

* make format

* revert complexT delete in LKokkosBingds

* make format

* update based on tidy

* fix tidy format

* add_gpu_runners_tests

* add cuquantum_sdk path to ci workflow

* debug

* add path to cuquantum sdk

* add python layer tests in ci workflow

* ci tests

* quick fix

* skip pr ci for some workflows

* quick fix

* quick fix

* update python ci tests

* remove dependency on lightning_qubit in ci

* fix directory

* fix directory

* quick fix

* quick fix

* test for cuda-12

* update measurement

* updata cu12 workflows

* add getDataVector support to LQubitRaw

* install lightning.qubit before lightning.gpu in ci

* update test_obs

* activate all CI checks

* quick fix

* tidy up code

* tidy up code

* make format

* update ci for more tests

* tidy up code

* tidy up code

* tidy up code

* make format

* fix for codecov

* codecov fix

* quick fix

* quick fix

* quick fix

* quick test

* fix test

* fix tests

* another quick fix

* coverage fix

* update ci tests

* update ci for no binary

* codecov fix

* update adj tests for no binary case

* update python layer tests

* fix codecov

* make format

* initial commit for MPI

* revert to cu11

* enable more py tests

* update CI

* upload codecov ci

* add more tests for statevectorcudamanaged

* add more unit tests

* add more tests

* make format

* add more cpp tests

* skip cpp tests pauli param gates

* make format

* add more files to gitignore

* Auto update version

* init commit

* Trigger CI

* update gpu runner

* quick fix

* update fix

* add cpp layer for LGPU-MPI backend

* add py layer

* quick fix

* make format

* fix for fp32 support in expval calculation

* quick fix

* fix for cray_mpich_serialize_py

* copy to move for hamiltonian operation

* add unit tests for adjoint method

* add more tests

* resolve comments py layer

* remove omp support in LGPU

* update version

* Auto update version

* fix based on comments

* Add L-GPU and L-Kokkos as package extras (#515)

* Add L-GPU and L-Kokkos as package extras

* Auto update version

* Update changelog

* Temp enable the x86 wheel cache

* Return wheel storage functionality to normal

* Update readme

* Auto update version

* Trigger CI

* Update README.rst

Co-authored-by: Amintor Dusko <[email protected]>

---------

Co-authored-by: Dev version update bot <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Amintor Dusko <[email protected]>

* Auto update version

* make format

* remove sparseH

* remove applyHostMatrixGate

* Add wheel_linux_x86_64_cu11.yml (#517)

* Add wheel_linux_x86_64_cu11.yml

* echo COMPILER=g++ >>

* python3.9 => python

* reinstall g++11

* Try that

* Use env vars for versions.

* Fix var syntax.

* Hardcode versions

* Fix custatevec-cu11

* Revert triggers.

* Update changelog [skip ci]

* resolve more comments

* add more tests to non_param gates

* resolve cpp tests comments

* remove unused methods in measurement class

* remove unused methods

* resolve more comments

* add changelog and matrixhasher

* quick update

* add more tests and merge base branch

* add mpi unit tests for algorithm base class

* add more unit tests for utils

* ctor test for MPIManager

* Add mpi tests to LGPU (#519)

* Initial commit mpi tests

* Remove label guards

* Fix PL_DEVICE

* Install lightning_qubit.

* Fix ENABLE_MPI

* print cuquantum

* export cu_sdk

* revert define

* Debug cpp tests.

* Debug cpp tests.

* Fix cmake options.

* Compile with mpicxx

* Specify backend.

* Specify backend.

* Remove obsolete line.

* Specify cov backend

* Merge test/cov & try simplifying python

* if-no-files-found: error and fix python tests.

* Fix mpi find

* Install real lightning.

* Revert python tests.

* Hardcode backend values in python tests

* Install lightning_qubit with gpu in python tests

* Remove explicit mpich mentions.

* Parametrize mpilib name.

* Add openmpi tests.

* Build only openmpi python tests.

* Add timeouts

* test/test_apply.py

* Revert pull triggers.

* Clean gpu-mpi test workflows.

* Revert to 804ed24.

* Revert back.

* Update tests_linux_x86_mpi.yml [ci skip]

* Add jobs dep.

* Remove module unload

* Simplify mpi-gpu tests.

* trigger CI

* unset CFLAGS.

* set CFLAGS

* Revert triggers.

* Fix pull_request: [skip ci]

* trigger CI

* Rename test_gpu_cu11.yml -> tests_gpu_cu11.yml [skip ci]

* add CI checks for cpp unit tests

* add cpp layer ci check for mpi backend

* Auto update version

* remove redundant blank lines

* tidy up code

* Trigger CI

* remove single GPU backend tests in mpi ci

* upload codecov results

* add more unit tests

* add tests for pauli word based expval

* add more docs

* add more tests

* skip lcov for native gates

* add mpi_helpers

* add more docstrings

* add change log

* Auto update version

* Auto update version

* fix failures caused by merging

* add changelog

* Trigger multi-GPU runner

* add more fp32 tests to the measurement class

* add number of devices and mpi procs check

* Add coverage for py-mpitests. (#522)

* Initial commit mpi tests

* Remove label guards

* Fix PL_DEVICE

* Install lightning_qubit.

* Fix ENABLE_MPI

* print cuquantum

* export cu_sdk

* revert define

* Debug cpp tests.

* Debug cpp tests.

* Fix cmake options.

* Compile with mpicxx

* Specify backend.

* Specify backend.

* Remove obsolete line.

* Specify cov backend

* Merge test/cov & try simplifying python

* if-no-files-found: error and fix python tests.

* Fix mpi find

* Install real lightning.

* Revert python tests.

* Hardcode backend values in python tests

* Install lightning_qubit with gpu in python tests

* Remove explicit mpich mentions.

* Parametrize mpilib name.

* Add openmpi tests.

* Build only openmpi python tests.

* Add timeouts

* test/test_apply.py

* Revert pull triggers.

* Clean gpu-mpi test workflows.

* Revert to 804ed24.

* Revert back.

* Update tests_linux_x86_mpi.yml [ci skip]

* Add jobs dep.

* Remove module unload

* Simplify mpi-gpu tests.

* trigger CI

* unset CFLAGS.

* set CFLAGS

* Revert triggers.

* Fix pull_request: [skip ci]

* trigger CI

* Rename test_gpu_cu11.yml -> tests_gpu_cu11.yml [skip ci]

* Add coverage for py-mpitests.

* Upload mpi-gpu test coverage.

* Try other paths.

* trigger CI

* Add mpi tests.

* Fix couple tests.

* Fixx test_apply tests?

* Add MPI sparse measurements.

* Fix format.

* Add MPI_Init checks in MPIManager constructors.

* Reformat mpitests and add cov for proc > dev error.

* Refactor makefile.

* Revert to full mpirun path.

* Fix couple tests.

* Name coverage after matrix.mpilib.

* Remove oversubscribe MPI test.

* Update changelog [skip ci].

---------

Co-authored-by: Shuli <[email protected]>

* add more tests in obs base class

* Revert "Merge branch 'add_LGPUMPI' into add_py_LGPUMPI"

This reverts commit d3af819, reversing
changes made to 6ad1c7c.

* Fix pylint [skip ci]

* resolve comments on source codes and tidy up code

* Use CRTP to define initSV and remove initSV_MPI

* resolve more typos

* resolve more typoes

* resolve adjoint class

* remove py&pybind layer

* resolve more comments

* Remove redundant blank line

* add num mpi & ngpudevice proc check

* fix typo

* remove unused lines

* add more tests

* remove initsv_mpi

* add reset

* make format

* use_mpi as _use_mpi in QuantumScriptSerializer

* resolve more comments

* check->require

* make format

* rename mpi workflow

* Update license.

* Add GPU tests in compat workflows.

* Add pull_request triggers.

* Comment pull_request triggers except compat.

* Comment pull_request triggers except compat-latest-latest.

* shush CI [skip ci]

* Add sparseH for LGPU (#526)

* Init commit

* Fix std::endl;

* Use more generic indices in base std::size_t.

* add pybind layer

* add python layer

* Quick and dirty spham bindings.

* Add sparse_ham serialization.

* Add sparse_ham tests in tests/test_adjoint_jacobian.py'

* Bug fix sparse product.

* add sparseH

* Trigger CI

* Fix python bindings LGPU idxT

* Fix serial tests and update changelog.

* add more unit tests for sparseH base class

* Fix tidy & sparse adjoint test device name.

* Fix tidy warning for sparse_ham.

* Send backend-specific ops in respective modules.

* Fix sparse_hamiltonianmpi_c and add getWires test.

* Add sparseH diff capability in LQ.

* Add sparse Hamiltonian support for Lightning-Kokkos (#527)

* Use more generic indices in base std::size_t.

* Quick and dirty spham bindings.

* Add sparse_ham serialization.

* Add sparse_ham tests in tests/test_adjoint_jacobian.py'

* Bug fix sparse product.

* Fix python bindings LGPU idxT

* Fix serial tests and update changelog.

* Fix tidy & sparse adjoint test device name.

* Fix tidy warning for sparse_ham.

* Send backend-specific ops in respective modules.

* Fix sparse_hamiltonianmpi_c and add getWires test.

* Fix clang tidy

* Comment workflows but tidy.

* Fix tidy warn

* Add override to sp::getWires

* Restore triggers

* Update tests_linux_x86_mpi.yml

* Add constructibility tests.

* Move L-Kokkos-CUDA tests to workflow call, called from tests_gpu_cu11.yml.

* Remove GPU deadlock.

* Bug fix Python MPI.

* Upload both outputs.

* Update gcc version in format.yml.

* Update .github/CHANGELOG.md [skip ci]

Co-authored-by: Amintor Dusko <[email protected]>

* Update .github/workflows/tests_gpu_kokkos.yml [skip ci]

Co-authored-by: Amintor Dusko <[email protected]>

* rename argn [skip ci]

* Remove unused lines [skip ci]

* Fix SparseHamiltonianBase::isEqual. [skip ci]

* Trigger CI

* Auto update version

* Trigger CI

* resolve comments

* rename dev_kokkos to dev

* Fix tidy.

---------

Co-authored-by: Vincent Michaud-Rioux <[email protected]>
Co-authored-by: Vincent Michaud-Rioux <[email protected]>
Co-authored-by: Amintor Dusko <[email protected]>
Co-authored-by: Dev version update bot <github-actions[bot]@users.noreply.github.com>

* update work flow

* resolve comments for unit tests

* add more unit tests for sparseH

* quick fix

* add fp32 tests

* tidy up code

* remove redundant lines

* add pylintrc to mpitests

* add mpitests dir to commit-config

* add mpitests to .coveragerc

* add mpitests path to coveragerc

* Add LGPU cu11 workflow to compat.

* Add all workflows to latest-latest.

* Fix jobs names.

* Fix mpitests/test_adjoint_jacobian.py

* Fix pylint in mpitests/test_apply [skip ci].

* pylint fix for mpi py_d_e_m_p tets

* tidy up cpp code

* fix codefactor

* revert skipp condition for openfermionpyscf

* codefactor fix

* add sparseH tests for mpi backend

* Install openfermion in CI workflows and fix H2 QChem integration test.

* Add LGPU_MPI tests to compat.

* update changelog

* Add gpu workflows to all compat [skip ci].

* Trigger CI

* Change cron time.

* Fix tests_lgpu_gpu_mpi name

* Fix gpu runner

* Turn off compat CPP tests.

* workflow_call => pull_request temp

* rm -rf Kokkos before mkdir

* Dont' run cpp-tests

* Use random parameters in test_integration_H2_Hamiltonian

* Use 2 contains

* Use pytest-rerunfailures in mpi_gpu step

* Change cov.xml name

* Remove rerun-failures

* Try symmetry-breaking mol close to eq.

* Add parallel True in .cov

* Revert params and add diff names for cov.xml

* Add barrier.

* Test runscript openmpi

* Fix yml format

* call bash

* Revert couple changes and remove MPI from compat workflows.

* Revert changes to src and tests.

* Revert triggers.

* Auto update version

* Remove pull_req trigger from compats.

* Revert changes to MPI workflow. [skip ci]

* Trigger CI

---------

Co-authored-by: Shuli Shu <[email protected]>
Co-authored-by: Dev version update bot <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ali Asadi <[email protected]>
Co-authored-by: Amintor Dusko <[email protected]>
Co-authored-by: Lee James O'Riordan <[email protected]>
Co-authored-by: Shuli Shu <[email protected]>

---------

Co-authored-by: Dev version update bot <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Vincent Michaud-Rioux <[email protected]>
Co-authored-by: Lee J. O'Riordan <[email protected]>
Co-authored-by: Lee James O'Riordan <[email protected]>
Co-authored-by: Vincent Michaud-Rioux <[email protected]>
Co-authored-by: Ali Asadi <[email protected]>
Co-authored-by: Amintor Dusko <[email protected]>
  • Loading branch information
8 people committed Oct 27, 2023
1 parent f590e47 commit 1f8032d
Show file tree
Hide file tree
Showing 16 changed files with 647 additions and 143 deletions.
7 changes: 5 additions & 2 deletions .github/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

### New features since last release

* Add documentation updates for the `lightning_gpu` backend.
[(#525)] (https://github.com/PennyLaneAI/pennylane-lightning/pull/525)

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

Expand All @@ -28,10 +31,10 @@

### 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. L-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 Down
2 changes: 1 addition & 1 deletion .github/workflows/tests_linux_x86_mpi_gpu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ on:
push:
branches:
- main
pull_request:
#pull_request:

env:
COVERAGE_FLAGS: "--cov=pennylane_lightning --cov-report=term-missing --cov-report=xml:./coverage.xml --no-flaky-report -p no:warnings --tb=native"
Expand Down
5 changes: 4 additions & 1 deletion .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,11 @@ build:
- libopenblas-base
- libopenblas-dev
- graphviz
- nvidia-cuda-toolkit
jobs:
pre_install:
- echo "setuptools~=66.0\npip~=22.0" >> ci_build_requirements.txt
post_install:
- PL_BACKEND="lightning_kokkos" pip install -e . -vv
- rm -rf ./build && PL_BACKEND="lightning_kokkos" python setup.py bdist_wheel
- rm -rf ./build && PL_BACKEND="lightning_gpu" python setup.py build_ext --define="PL_DISABLE_CUDA_SAFETY=1" && PL_BACKEND="lightning_gpu" python setup.py bdist_wheel
- python -m pip install ./dist/*.whl
341 changes: 211 additions & 130 deletions README.rst

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions doc/code/__init__.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
pennylane_lightning
===================
Python API
==========

This section contains the API documentation for the Lightning packages.

Expand All @@ -18,6 +18,10 @@ This section contains the API documentation for the Lightning packages.
:description: API documentation for the lightning_qubit package
:link: ../lightning_qubit/package.html

.. title-card::
:name: lightning_gpu
:description: API documentation for the lightning_gpu package
:link: ../lightning_gpu/package.html

.. title-card::
:name: lightning_kokkos
Expand All @@ -33,4 +37,5 @@ This section contains the API documentation for the Lightning packages.
:hidden:

../lightning_qubit/package
../lightning_gpu/package
../lightning_kokkos/package
3 changes: 3 additions & 0 deletions doc/docker.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
.. include:: ../README.rst
:start-after: docker-start-inclusion-marker-do-not-remove
:end-before: docker-end-inclusion-marker-do-not-remove
9 changes: 8 additions & 1 deletion doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Lightning plugins


Devices
-------
*******

The Lightning ecosystem provides the following devices:

Expand All @@ -23,6 +23,11 @@ The Lightning ecosystem provides the following devices:
:description: A fast state-vector qubit simulator written in C++
:link: lightning_qubit/device.html

.. title-card::
:name: 'lightning.gpu'
:description: A heterogeneous backend state-vector simulator with NVIDIA cuQuantum library support.
:link: lightning_gpu/device.html

.. title-card::
:name: 'lightning.kokkos'
:description: A heterogeneous backend state-vector simulator with Kokkos library support.
Expand All @@ -39,6 +44,7 @@ The Lightning ecosystem provides the following devices:
:hidden:

installation
docker
support

.. toctree::
Expand All @@ -47,6 +53,7 @@ The Lightning ecosystem provides the following devices:
:hidden:

lightning_qubit/device
lightning_gpu/device
lightning_kokkos/device

.. toctree::
Expand Down
5 changes: 5 additions & 0 deletions doc/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ Each device in the Lightning ecosystem is a separate Python package. Select the
:description: Guidelines to installing and testing the Lightning Qubit device.
:link: ./lightning_qubit/installation.html

.. title-card::
:name: Lightning GPU
:description: Guidelines to installing and testing the Lightning GPU device
:link: ./lightning_gpu/installation.html

.. title-card::
:name: Lightning Kokkos
Expand All @@ -23,4 +27,5 @@ Each device in the Lightning ecosystem is a separate Python package. Select the
:hidden:

lightning_qubit/installation
lightning_gpu/installation
lightning_kokkos/installation
Loading

0 comments on commit 1f8032d

Please sign in to comment.