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

Improve Lightning package for external use #369

Merged
merged 26 commits into from
Nov 28, 2022
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c7b5e8d
Create RC0 version
mlxd Sep 12, 2022
a3aa994
Test BLAS routines with Python layer
mlxd Sep 12, 2022
01bd5df
Remove semicolon from CMake arg
mlxd Sep 12, 2022
53566ff
Update version string
mlxd Sep 19, 2022
71a5a4f
Finalize changelog
mlxd Sep 19, 2022
c30b520
Update Lightning for build extension and validation using Spack
mlxd Sep 26, 2022
938f38d
Fix warnings in benchmarking
mlxd Sep 27, 2022
2e4dac5
Add selective dispatch control
mlxd Sep 27, 2022
89e7982
Add support for dev-defined external path to kokkos install
mlxd Sep 28, 2022
424e71f
Add formatting to CMake
mlxd Sep 28, 2022
8ddd1a5
Update kokkos finder
mlxd Oct 6, 2022
e56fe61
Merge branch 'master' into lightning_updates
mlxd Oct 6, 2022
3689c41
Auto update version
github-actions[bot] Oct 6, 2022
dcda7ae
Merge branch 'master' into lightning_updates
mlxd Oct 27, 2022
767affc
Merge branch 'master' into lightning_updates
mlxd Oct 31, 2022
08b8c85
Merge branch 'master' into lightning_updates
mlxd Nov 17, 2022
0041280
Update path checks for kokkos
mlxd Nov 17, 2022
b0b91c0
Restructure Kokkos finder
mlxd Nov 18, 2022
3b551b5
Fix missing variable in simulators builder
mlxd Nov 18, 2022
db7960c
Update build and calling convention for Linux tests
mlxd Nov 18, 2022
8021652
Fix runner sttrcture position
mlxd Nov 18, 2022
94f75c0
Improve support for cmake in non x86 settings
mlxd Nov 18, 2022
829a6b2
Update pennylane_lightning/src/simulator/CMakeLists.txt
mlxd Nov 18, 2022
a3af6bf
Indent module definition for readability
mlxd Nov 18, 2022
ff880a7
Update CHANGELOG.md
mlxd Nov 18, 2022
99bbc3d
Merge branch 'master' into lightning_updates
mlxd Nov 25, 2022
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
9 changes: 6 additions & 3 deletions .github/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

### Improvements

* Improve Lightning package structure for external use as a C++ library.
[(#369)](https://github.com/PennyLaneAI/pennylane-lightning/pull/369)

### Documentation

### Bug fixes
Expand All @@ -14,6 +17,8 @@

This release contains contributions from (in alphabetical order):

Lee J. O'Riordan

---

# Release 0.27.0
Expand Down Expand Up @@ -99,8 +104,6 @@ def circuit():
return qml.expval(obs)
```

### Documentation

### Bug fixes

* Test updates to reflect new measurement error messages.
Expand All @@ -116,7 +119,7 @@ def circuit():

This release contains contributions from (in alphabetical order):

Amintor Dusko, Christina Lee, Chae-Yeun Park
Amintor Dusko, Christina Lee, Lee J. O'Riordan, Chae-Yeun Park
AmintorDusko marked this conversation as resolved.
Show resolved Hide resolved

---

Expand Down
40 changes: 20 additions & 20 deletions .github/workflows/tests_linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ jobs:

- name: Build and run unit tests
run: |
cmake pennylane_lightning/src -BBuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake . -BBuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS=ON -DENABLE_KOKKOS=OFF -DENABLE_PYTHON=OFF -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake --build ./Build
cd ./Build
mkdir -p ./tests/results
./tests/runner --order lex --reporter junit --out ./tests/results/report_${{ github.job }}.xml
./runner --order lex --reporter junit --out ./tests/results/report_${{ github.job }}.xml

- name: Upload test results
uses: actions/upload-artifact@v3
Expand All @@ -57,10 +57,10 @@ jobs:

- name: Build and run unit tests for code coverage
run: |
cmake pennylane_lightning/src -BBuildCov -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake . -BBuildCov -DCMAKE_BUILD_TYPE=Debug -DENABLE_KOKKOS=OFF -DENABLE_PYTHON=OFF -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake --build ./BuildCov
cd ./BuildCov
./tests/runner
./runner
lcov --directory . -b ../pennylane_lightning/src --capture --output-file coverage.info
lcov --remove coverage.info '/usr/*' --output-file coverage.info
mv coverage.info coverage-${{ github.job }}.info
Expand Down Expand Up @@ -109,7 +109,7 @@ jobs:
- name: Install lightning.qubit device
run: |
cd main
python setup.py build_ext -i --define="ENABLE_KOKKOS=OFF;CMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)"
python setup.py build_ext -i --define="ENABLE_KOKKOS=OFF;ENABLE_PYTHON=ON;CMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)"
pip install -e .

- name: Run PennyLane-Lightning unit tests
Expand Down Expand Up @@ -155,11 +155,11 @@ jobs:

- name: Build and run unit tests
run: |
cmake pennylane_lightning/src -BBuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_BLAS=ON -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake . -BBuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_KOKKOS=OFF -DENABLE_PYTHON=OFF -DENABLE_BLAS=ON -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake --build ./Build
cd ./Build
mkdir -p ./tests/results
./tests/runner --order lex --reporter junit --out ./tests/results/report_${{ github.job }}.xml
./runner --order lex --reporter junit --out ./tests/results/report_${{ github.job }}.xml

- name: Upload test results
uses: actions/upload-artifact@v3
Expand All @@ -170,10 +170,10 @@ jobs:

- name: Build and run unit tests for code coverage
run: |
cmake pennylane_lightning/src -BBuildCov -DCMAKE_BUILD_TYPE=Debug -DENABLE_BLAS=ON -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake . -BBuildCov -DCMAKE_BUILD_TYPE=Debug -DENABLE_KOKKOS=OFF -DENABLE_PYTHON=OFF -DENABLE_BLAS=ON -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake --build ./BuildCov
cd ./BuildCov
./tests/runner
./runner
lcov --directory . -b ../pennylane_lightning/src --capture --output-file coverage.info
lcov --remove coverage.info '/usr/*' --output-file coverage.info
mv coverage.info coverage-${{ github.job }}.info
Expand Down Expand Up @@ -227,7 +227,7 @@ jobs:
- name: Install lightning.qubit device
run: |
cd main
python setup.py build_ext -i --define="ENABLE_BLAS=ON;ENABLE_KOKKOS=OFF;CMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)"
python setup.py build_ext -i --define="ENABLE_BLAS=ON;ENABLE_KOKKOS=OFF;ENABLE_PYTHON=ON;CMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)"
pip install -e .

- name: Run PennyLane-Lightning unit tests
Expand Down Expand Up @@ -294,11 +294,11 @@ jobs:

- name: Build and run unit tests
run: |
cmake pennylane_lightning/src -BBuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_KOKKOS=ON -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake . -BBuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_KOKKOS=ON -DENABLE_PYTHON=OFF -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake --build ./Build
cd ./Build
mkdir -p ./tests/results
./tests/runner --order lex --reporter junit --out ./tests/results/report_${{ github.job }}.xml
./runner --order lex --reporter junit --out ./tests/results/report_${{ github.job }}.xml

- name: Upload test results
uses: actions/upload-artifact@v3
Expand All @@ -309,10 +309,10 @@ jobs:

- name: Build and run unit tests for code coverage
run: |
cmake pennylane_lightning/src -BBuildCov -DCMAKE_BUILD_TYPE=Debug -DENABLE_KOKKOS=ON -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake . -BBuildCov -DCMAKE_BUILD_TYPE=Debug -DENABLE_KOKKOS=ON -DENABLE_PYTHON=OFF -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake --build ./BuildCov
cd ./BuildCov
./tests/runner
./runner
lcov --directory . -b ../pennylane_lightning/src --capture --output-file coverage.info
lcov --remove coverage.info '/usr/*' --output-file coverage.info
mv coverage.info coverage-${{ github.job }}.info
Expand Down Expand Up @@ -382,7 +382,7 @@ jobs:
- name: Install lightning.qubit device
run: |
cd main
python setup.py build_ext -i --define="CMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos;CMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)"
python setup.py build_ext -i --define="CMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos;ENABLE_KOKKOS=ON;ENABLE_PYTHON=ON;CMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)"
pip install -e .

- name: Run PennyLane-Lightning unit tests
Expand Down Expand Up @@ -443,11 +443,11 @@ jobs:

- name: Build and run unit tests
run: |
cmake pennylane_lightning/src -BBuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_BLAS=ON -DENABLE_KOKKOS=ON -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake . -BBuild -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_BLAS=ON -DENABLE_KOKKOS=ON -DENABLE_PYTHON=OFF -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake --build ./Build
cd ./Build
mkdir -p ./tests/results
./tests/runner --order lex --reporter junit --out ./tests/results/report_${{ github.job }}.xml
./runner --order lex --reporter junit --out ./tests/results/report_${{ github.job }}.xml

- name: Upload test results
uses: actions/upload-artifact@v3
Expand All @@ -458,10 +458,10 @@ jobs:

- name: Build and run unit tests for code coverage
run: |
cmake pennylane_lightning/src -BBuildCov -DCMAKE_BUILD_TYPE=Debug -DENABLE_BLAS=ON -DENABLE_KOKKOS=ON -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake . -BBuildCov -DCMAKE_BUILD_TYPE=Debug -DENABLE_BLAS=ON -DENABLE_KOKKOS=ON -DENABLE_PYTHON=OFF -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DBUILD_TESTS=ON -DENABLE_COVERAGE=ON -DCMAKE_CXX_COMPILER="$(which g++-$GCC_VERSION)" -G Ninja
cmake --build ./BuildCov
cd ./BuildCov
./tests/runner
./runner
lcov --directory . -b ../pennylane_lightning/src --capture --output-file coverage.info
lcov --remove coverage.info '/usr/*' --output-file coverage.info
mv coverage.info coverage-${{ github.job }}.info
Expand Down Expand Up @@ -531,7 +531,7 @@ jobs:
- name: Install lightning.qubit device
run: |
cd main
python setup.py build_ext -i --define="ENABLE_BLAS=ON;ENABLE_KOKKOS=ON;CMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos;CMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)"
python setup.py build_ext -i --define="ENABLE_BLAS=ON;ENABLE_KOKKOS=ON;DENABLE_PYTHON=ON;CMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos;CMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)"
pip install -e .

- name: Run PennyLane-Lightning unit tests
Expand Down
51 changes: 34 additions & 17 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ option(ENABLE_NATIVE "Enable native CPU build tuning" OFF)
option(ENABLE_OPENMP "Enable OpenMP" ON)
option(ENABLE_KOKKOS "Enable Kokkos" ON)
option(ENABLE_BLAS "Enable BLAS" OFF)
option(ENABLE_PYTHON "Enable compilation of the Python module" ON)
option(ENABLE_GATE_DISPATCHER "Enable gate kernel dispatching on AVX/AVX2/AVX512" ON)

# Other build options
option(BUILD_TESTS "Build cpp tests" OFF)
Expand All @@ -59,12 +61,17 @@ include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/process_options.cmake")
set(CMAKE_POLICY_DEFAULT_CMP0127 NEW) # To suppress pybind11 CMP0127 warning
# Add pybind11
include(FetchContent)
FetchContent_Declare(pybind11
GIT_REPOSITORY https://github.com/pybind/pybind11.git
GIT_TAG v2.10.1
)
FetchContent_MakeAvailable(pybind11)

if(ENABLE_PYTHON)
find_package(Python COMPONENTS Interpreter Development)
FetchContent_Declare(pybind11
GIT_REPOSITORY https://github.com/pybind/pybind11.git
GIT_TAG v2.10.1
)
FetchContent_MakeAvailable(pybind11)
endif()

set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})

# All CMakeLists.txt in subdirectories use pennylane_lightning_compile_options and pennylane_lightning_external_libs
add_subdirectory(pennylane_lightning/src)
Expand All @@ -76,22 +83,32 @@ add_library(pennylane_lightning INTERFACE)

target_link_libraries(pennylane_lightning INTERFACE lightning_utils
lightning_simulator
lightning_algorithms)
lightning_algorithms
lightning_gates
)
target_include_directories(pennylane_lightning INTERFACE "pennylane_lightning/src")

#####################################################
if(ENABLE_PYTHON)
mlxd marked this conversation as resolved.
Show resolved Hide resolved
pybind11_add_module(lightning_qubit_ops "pennylane_lightning/src/bindings/Bindings.cpp")
target_link_libraries(lightning_qubit_ops PRIVATE lightning_algorithms
lightning_gates
lightning_simulator
lightning_utils)

target_link_libraries(lightning_qubit_ops PRIVATE lightning_compile_options
lightning_external_libs)
set_target_properties(lightning_qubit_ops PROPERTIES CXX_VISIBILITY_PRESET hidden)

target_compile_definitions(lightning_qubit_ops PRIVATE VERSION_INFO=${VERSION_STRING})
endif()

pybind11_add_module(lightning_qubit_ops "pennylane_lightning/src/bindings/Bindings.cpp")
target_link_libraries(lightning_qubit_ops PRIVATE lightning_algorithms
lightning_gates
lightning_simulator
lightning_utils)

target_link_libraries(lightning_qubit_ops PRIVATE lightning_compile_options
lightning_external_libs)
set_target_properties(lightning_qubit_ops PROPERTIES CXX_VISIBILITY_PRESET hidden)

target_compile_definitions(lightning_qubit_ops PRIVATE VERSION_INFO=${VERSION_STRING})
install(TARGETS pennylane_lightning
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
INCLUDES DESTINATION include
)

if (BUILD_TESTS)
enable_testing()
Expand Down
Loading