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

Create cuda utils module #676

Merged
merged 17 commits into from
Apr 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 8 additions & 2 deletions .github/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
### New features since last release

* Add dynamic linking to LAPACK/OpenBlas shared objects in scipy.libs for both C++ and Python layer.
[(#653)](https://github.com/PennyLaneAI/pennylane-lightning/pull/651)
[(#653)](https://github.com/PennyLaneAI/pennylane-lightning/pull/653)

* `lightning.qubit` supports mid-circuit measurements.
[(#650)](https://github.com/PennyLaneAI/pennylane-lightning/pull/650)
Expand Down Expand Up @@ -35,8 +35,11 @@

### Breaking changes

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

* Deprecate static LAPACK linking support.
[(#653)](https://github.com/PennyLaneAI/pennylane-lightning/pull/651)
[(#653)](https://github.com/PennyLaneAI/pennylane-lightning/pull/653)

* Migrate `lightning.qubit` to the new device API.
[(#646)](https://github.com/PennyLaneAI/pennylane-lightning/pull/646)
Expand All @@ -46,6 +49,9 @@

### Improvements

* Create `cuda_utils` for common usage of CUDA related backends.
[(#676)](https://github.com/PennyLaneAI/pennylane-lightning/pull/676)

* Refactor `lightning_gpu_utils` unit tests to remove the dependency on statevector class.
[(#675)](https://github.com/PennyLaneAI/pennylane-lightning/pull/675)

Expand Down
2 changes: 1 addition & 1 deletion pennylane_lightning/core/_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@
Version number (major.minor.patch[-label])
"""

__version__ = "0.36.0-dev26"
__version__ = "0.36.0-dev27"
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ target_link_libraries(${PL_BACKEND}_algorithms PRIVATE lightning_compile_op

target_link_libraries(${PL_BACKEND}_algorithms PUBLIC ${PL_BACKEND}_utils
lightning_algorithms
lightning_utils
${PL_BACKEND}
${PL_BACKEND}_observables
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ project(${PL_BACKEND}_gates)
add_library(${PL_BACKEND}_gates INTERFACE)
target_include_directories(${PL_BACKEND}_gates INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})

target_link_libraries(${PL_BACKEND}_gates INTERFACE ${PL_BACKEND}_utils lightning_external_libs)
target_link_libraries(${PL_BACKEND}_gates INTERFACE ${PL_BACKEND}_utils lightning_utils lightning_external_libs)

if (BUILD_TESTS)
enable_testing()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,3 @@ findCUDATK(lightning_compile_options)
add_library(${PL_BACKEND}_utils INTERFACE)
target_include_directories(${PL_BACKEND}_utils INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_link_libraries(${PL_BACKEND}_utils INTERFACE CUDA::cudart CUDA::cublas CUDA::cusparse lightning_compile_options)

if (BUILD_TESTS)
enable_testing()
add_subdirectory("tests")
endif()
12 changes: 12 additions & 0 deletions pennylane_lightning/core/src/utils/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,18 @@ if(NOT WIN32)
list(APPEND LQUBIT_UTILS_FILES UtilLinearAlg.cpp)
endif()

set(CUDA_UTILS_ADDED FALSE CACHE BOOL "Add cuda_utils header files")

foreach(BACKEND ${PL_BACKEND})
if(${BACKEND} STREQUAL "lightning_gpu" AND NOT CUDA_UTILS_ADDED)
add_subdirectory(cuda_utils)
target_include_directories(lightning_utils INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/cuda_utils)
target_link_libraries(lightning_utils INTERFACE cuda_utils)
set(CUDA_UTILS_ADDED TRUE)
endif()
endforeach()


target_include_directories(lightning_utils INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(lightning_utils INTERFACE lightning_compile_options
lightning_external_libs
Expand Down
13 changes: 13 additions & 0 deletions pennylane_lightning/core/src/utils/cuda_utils/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
project(cuda_utils LANGUAGES CXX CUDA)
set(CMAKE_CXX_STANDARD 20)

findCUDATK(lightning_compile_options)

add_library(cuda_utils INTERFACE)
target_include_directories(cuda_utils INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_link_libraries(cuda_utils INTERFACE CUDA::cudart CUDA::cublas CUDA::cusparse lightning_compile_options)

if (BUILD_TESTS)
enable_testing()
add_subdirectory("tests")
endif()
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -14,39 +14,37 @@ FetchAndIncludeCatch()
# Define library
################################################################################

add_library(${PL_BACKEND}_utils_tests INTERFACE)
target_link_libraries(${PL_BACKEND}_utils_tests INTERFACE Catch2::Catch2
add_library(cuda_utils_tests INTERFACE)
target_link_libraries(cuda_utils_tests INTERFACE Catch2::Catch2
lightning_utils
${PL_BACKEND}_utils
${PL_BACKEND}
cuda_utils
)

ProcessTestOptions(${PL_BACKEND}_utils_tests)
ProcessTestOptions(cuda_utils_tests)

target_sources(${PL_BACKEND}_utils_tests INTERFACE runner_${PL_BACKEND}_utils.cpp)
target_sources(cuda_utils_tests INTERFACE runner_cuda_utils.cpp)

################################################################################
# Define targets
################################################################################
set(TEST_SOURCES Test_LinearAlgebra.cpp)

add_executable(${PL_BACKEND}_utils_test_runner ${TEST_SOURCES})
target_link_libraries(${PL_BACKEND}_utils_test_runner PRIVATE ${PL_BACKEND}_utils_tests)
catch_discover_tests(${PL_BACKEND}_utils_test_runner)
add_executable(cuda_utils_test_runner ${TEST_SOURCES})
target_link_libraries(cuda_utils_test_runner PRIVATE cuda_utils_tests)
catch_discover_tests(cuda_utils_test_runner)

install(TARGETS ${PL_BACKEND}_utils_test_runner DESTINATION bin)
install(TARGETS cuda_utils_test_runner DESTINATION bin)

if(ENABLE_MPI)
add_library(${PL_BACKEND}_utils_tests_mpi INTERFACE)
target_link_libraries(${PL_BACKEND}_utils_tests_mpi INTERFACE Catch2::Catch2
add_library(cuda_utils_tests_mpi INTERFACE)
target_link_libraries(cuda_utils_tests_mpi INTERFACE Catch2::Catch2
lightning_utils
${PL_BACKEND}_utils
${PL_BACKEND}
cuda_utils
)

ProcessTestOptions(${PL_BACKEND}_utils_tests_mpi)
ProcessTestOptions(cuda_utils_tests_mpi)

target_sources(${PL_BACKEND}_utils_tests_mpi INTERFACE ./mpi/runner_${PL_BACKEND}_utils_mpi.cpp)
target_sources(cuda_utils_tests_mpi INTERFACE ./mpi/runner_cuda_utils_mpi.cpp)

################################################################################
# Define targets
Expand All @@ -55,8 +53,8 @@ set(TEST_SOURCES ./mpi/Test_LinearAlgebraMPI.cpp
./mpi/Test_MPIManager.cpp
./mpi/Test_CSRMatrix.cpp)

add_executable(${PL_BACKEND}_utils_test_runner_mpi ${TEST_SOURCES})
target_link_libraries(${PL_BACKEND}_utils_test_runner_mpi PRIVATE ${PL_BACKEND}_utils_tests_mpi)
catch_discover_tests(${PL_BACKEND}_utils_test_runner_mpi)
add_executable(cuda_utils_test_runner_mpi ${TEST_SOURCES})
target_link_libraries(cuda_utils_test_runner_mpi PRIVATE cuda_utils_tests_mpi)
catch_discover_tests(cuda_utils_test_runner_mpi)

endif()
endif()
Loading