From 665fb4743e2d5578223ee389f84bb6d14bfac68b Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Thu, 11 Apr 2024 09:06:49 -0400 Subject: [PATCH 01/14] Remove StateVector dependency for utils tests --- .../utils/tests/Test_LinearAlgebra.cpp | 38 ++++++++------ .../utils/tests/mpi/Test_LinearAlgebraMPI.cpp | 50 ++++++++++++------- 2 files changed, 55 insertions(+), 33 deletions(-) diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp b/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp index a2b35d0742..dc5315f592 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp @@ -17,10 +17,11 @@ #include +#include "DataBuffer.hpp" #include "LinearAlg.hpp" -#include "StateVectorCudaManaged.hpp" #include "TestHelpers.hpp" #include "Util.hpp" // exp2 +#include "cuda_helpers.hpp" /** * @file @@ -31,18 +32,21 @@ /// @cond DEV namespace { using namespace Pennylane::LightningGPU; +using namespace Pennylane::LightningGPU::Util; using namespace Pennylane::Util; } // namespace /// @endcond TEMPLATE_TEST_CASE("Linear Algebra::SparseMV", "[Linear Algebra]", float, double) { - using StateVectorT = StateVectorCudaManaged; - using ComplexT = StateVectorT::ComplexT; - using CFP_t = StateVectorT::CFP_t; + using ComplexT = std::complex; using IdxT = typename std::conditional::value, int32_t, int64_t>::type; + using CFP_t = + typename std::conditional::value, + cuFloatComplex, cuDoubleComplex>::type; + std::size_t num_qubits = 3; std::size_t data_size = exp2(num_qubits); @@ -50,6 +54,12 @@ TEMPLATE_TEST_CASE("Linear Algebra::SparseMV", "[Linear Algebra]", float, {0.1, 0.2}, {0.2, 0.2}, {0.3, 0.3}, {0.3, 0.4}, {0.4, 0.5}}; + std::vector vectors_cu; + + std::transform(vectors.begin(), vectors.end(), + std::back_inserter(vectors_cu), + [](ComplexT x) { return complexToCu(x); }); + const std::vector result_refs = { {0.2, -0.1}, {-0.1, 0.2}, {0.2, 0.1}, {0.1, 0.2}, {0.7, -0.2}, {-0.1, 0.6}, {0.6, 0.1}, {0.2, 0.7}}; @@ -63,26 +73,26 @@ TEMPLATE_TEST_CASE("Linear Algebra::SparseMV", "[Linear Algebra]", float, {1.0, 0.0}, {0.0, -1.0}, {1.0, 0.0}, {0.0, 1.0}, {0.0, -1.0}, {1.0, 0.0}, {0.0, 1.0}, {1.0, 0.0}}; - StateVectorT sv_x{num_qubits}; - StateVectorT sv_y{num_qubits}; + DataBuffer sv_x(data_size); + DataBuffer sv_y(data_size); - sv_x.CopyHostDataToGpu(vectors.data(), vectors.size()); + sv_x.CopyHostDataToGpu(vectors_cu.data(), vectors_cu.size()); SECTION("Testing sparse matrix vector product:") { - std::vector result(data_size); + std::vector result(data_size); + auto cusparsehandle = make_shared_cusparse_handle(); - cuUtil::SparseMV_cuSparse( + SparseMV_cuSparse( indptr.data(), static_cast(indptr.size()), indices.data(), values.data(), static_cast(values.size()), sv_x.getData(), - sv_y.getData(), sv_x.getDataBuffer().getDevTag().getDeviceID(), - sv_x.getDataBuffer().getDevTag().getStreamID(), - sv_x.getCusparseHandle()); + sv_y.getData(), sv_x.getDevice(), sv_x.getStream(), + cusparsehandle.get()); sv_y.CopyGpuDataToHost(result.data(), result.size()); for (std::size_t j = 0; j < exp2(num_qubits); j++) { - CHECK(imag(result[j]) == Approx(imag(result_refs[j]))); - CHECK(real(result[j]) == Approx(real(result_refs[j]))); + CHECK(result[j].x == Approx(real(result_refs[j]))); + CHECK(result[j].y == Approx(imag(result_refs[j]))); } } } diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/Test_LinearAlgebraMPI.cpp b/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/Test_LinearAlgebraMPI.cpp index 371bc66f75..8a113a1c3b 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/Test_LinearAlgebraMPI.cpp +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/Test_LinearAlgebraMPI.cpp @@ -11,35 +11,39 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +#include #include #include #include #include +#include "DataBuffer.hpp" #include "MPILinearAlg.hpp" #include "MPIManager.hpp" -#include "StateVectorCudaMPI.hpp" #include "TestHelpers.hpp" #include "Util.hpp" // exp2 +#include "cuda_helpers.hpp" /** * @file - * Tests linear algebra functionality defined for the class StateVectorCudaMPI. + * Tests distributed linear algebra functionality. */ /// @cond DEV namespace { using namespace Pennylane::LightningGPU; +using namespace Pennylane::LightningGPU::Util; using namespace Pennylane::Util; } // namespace /// @endcond TEMPLATE_TEST_CASE("Linear Algebra::SparseMV", "[Linear Algebra]", float, double) { - using StateVectorT = StateVectorCudaMPI; - using ComplexT = StateVectorT::ComplexT; - using CFP_t = StateVectorT::CFP_t; + using ComplexT = std::complex; + using CFP_t = + typename std::conditional::value, + cuFloatComplex, cuDoubleComplex>::type; using IdxT = typename std::conditional::value, int32_t, int64_t>::type; @@ -52,6 +56,11 @@ TEMPLATE_TEST_CASE("Linear Algebra::SparseMV", "[Linear Algebra]", float, {0.1, 0.2}, {0.2, 0.2}, {0.3, 0.3}, {0.3, 0.4}, {0.4, 0.5}}; + std::vector state_cu; + + std::transform(state.begin(), state.end(), std::back_inserter(state_cu), + [](ComplexT x) { return complexToCu(x); }); + std::vector result_refs = {{0.2, -0.1}, {-0.1, 0.2}, {0.2, 0.1}, {0.1, 0.2}, {0.7, -0.2}, {-0.1, 0.6}, {0.6, 0.1}, {0.2, 0.7}}; @@ -65,7 +74,6 @@ TEMPLATE_TEST_CASE("Linear Algebra::SparseMV", "[Linear Algebra]", float, {1.0, 0.0}, {0.0, -1.0}, {1.0, 0.0}, {0.0, 1.0}, {0.0, -1.0}, {1.0, 0.0}, {0.0, 1.0}, {1.0, 0.0}}; - size_t mpi_buffersize = 1; size_t nGlobalIndexBits = std::bit_width(static_cast(mpi_manager.getSize())) - 1; size_t nLocalIndexBits = num_qubits - nGlobalIndexBits; @@ -80,6 +88,12 @@ TEMPLATE_TEST_CASE("Linear Algebra::SparseMV", "[Linear Algebra]", float, subSvLength, 0); mpi_manager.Barrier(); + std::vector local_state_cu; + + std::transform(local_state.begin(), local_state.end(), + std::back_inserter(local_state_cu), + [](ComplexT x) { return complexToCu(x); }); + int nDevices = 0; cudaGetDeviceCount(&nDevices); REQUIRE(nDevices >= 2); @@ -89,29 +103,27 @@ TEMPLATE_TEST_CASE("Linear Algebra::SparseMV", "[Linear Algebra]", float, mpi_manager.Barrier(); SECTION("Testing sparse matrix vector product:") { - std::vector local_result(local_state.size()); + std::vector local_result(local_state.size()); + auto cusparsehandle = make_shared_cusparse_handle(); + + DataBuffer sv_x(local_state.size()); + DataBuffer sv_y(local_state.size()); - StateVectorT sv_x(mpi_manager, dt_local, mpi_buffersize, - nGlobalIndexBits, nLocalIndexBits); - StateVectorT sv_y(mpi_manager, dt_local, mpi_buffersize, - nGlobalIndexBits, nLocalIndexBits); - sv_x.CopyHostDataToGpu(local_state, false); + sv_x.CopyHostDataToGpu(local_state_cu.data(), local_state_cu.size()); - cuUtil::SparseMV_cuSparseMPI( + SparseMV_cuSparseMPI( mpi_manager, sv_x.getLength(), indptr.data(), static_cast(indptr.size()), indices.data(), values.data(), - sv_x.getData(), sv_y.getData(), - sv_x.getDataBuffer().getDevTag().getDeviceID(), - sv_x.getDataBuffer().getDevTag().getStreamID(), - sv_x.getCusparseHandle()); + sv_x.getData(), sv_y.getData(), sv_x.getDevice(), sv_x.getStream(), + cusparsehandle.get()); mpi_manager.Barrier(); sv_y.CopyGpuDataToHost(local_result.data(), local_result.size()); for (std::size_t j = 0; j < local_result.size(); j++) { - CHECK(imag(local_result[j]) == Approx(imag(local_result_refs[j]))); - CHECK(real(local_result[j]) == Approx(real(local_result_refs[j]))); + CHECK(local_result[j].y == Approx(imag(local_result_refs[j]))); + CHECK(local_result[j].x == Approx(real(local_result_refs[j]))); } } } From 3621d239ddbbb7f6dbcc9567becbb139b126329b Mon Sep 17 00:00:00 2001 From: Dev version update bot Date: Thu, 11 Apr 2024 13:08:17 +0000 Subject: [PATCH 02/14] Auto update version --- pennylane_lightning/core/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pennylane_lightning/core/_version.py b/pennylane_lightning/core/_version.py index bdedc820ba..3180e9d655 100644 --- a/pennylane_lightning/core/_version.py +++ b/pennylane_lightning/core/_version.py @@ -16,4 +16,4 @@ Version number (major.minor.patch[-label]) """ -__version__ = "0.36.0-dev25" +__version__ = "0.36.0-dev26" From 7254de65df58a3ff4e11142b3cd0a924b321beba Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Thu, 11 Apr 2024 09:13:23 -0400 Subject: [PATCH 03/14] update changelog --- .github/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 1686d72ba5..092e5e796c 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -46,6 +46,9 @@ ### Improvements +* Refactor lightning_gpu_utils unit tests to remove the dependency on statevector class. + [(#675)](https://github.com/PennyLaneAI/pennylane-lightning/pull/675) + * Upgrade GitHub actions versions from v3 to v4. [(#669)](https://github.com/PennyLaneAI/pennylane-lightning/pull/669) From b08d8d1563a510191dcfb936a20827b43923975d Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Thu, 11 Apr 2024 09:21:29 -0400 Subject: [PATCH 04/14] add missing header file --- .../simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp b/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp index dc5315f592..b5b837f1e2 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp @@ -11,6 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +#include #include #include #include From 033ec018f05ed3ec68b8f47ca906c74ca32aa02d Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Thu, 11 Apr 2024 11:36:46 -0400 Subject: [PATCH 05/14] Initial commit --- CMakeLists.txt | 1 + .../lightning_gpu/algorithms/CMakeLists.txt | 1 + .../lightning_gpu/bindings/CMakeLists.txt | 1 + .../lightning_gpu/gates/CMakeLists.txt | 2 +- .../lightning_gpu/measurements/CMakeLists.txt | 1 + .../lightning_gpu/observables/CMakeLists.txt | 1 + .../lightning_gpu/utils/CMakeLists.txt | 7 +--- .../core/src/utils/CMakeLists.txt | 4 +++ .../core/src/utils/cuda_utils/CMakeLists.txt | 13 +++++++ .../utils => utils/cuda_utils}/CSRMatrix.hpp | 0 .../utils => utils/cuda_utils}/DataBuffer.hpp | 0 .../utils => utils/cuda_utils}/DevTag.hpp | 0 .../utils => utils/cuda_utils}/DevicePool.hpp | 0 .../utils => utils/cuda_utils}/LinearAlg.hpp | 0 .../cuda_utils}/MPILinearAlg.hpp | 0 .../utils => utils/cuda_utils}/MPIManager.hpp | 0 .../cuda_utils}/MPI_helpers.hpp | 0 .../utils => utils/cuda_utils}/TSQueue.hpp | 0 .../utils => utils/cuda_utils}/cuError.hpp | 0 .../cuda_utils}/cuda_helpers.hpp | 0 .../cuda_utils}/tests/CMakeLists.txt | 36 +++++++++---------- .../cuda_utils}/tests/Test_LinearAlgebra.cpp | 0 .../cuda_utils}/tests/mpi/Test_CSRMatrix.cpp | 0 .../tests/mpi/Test_LinearAlgebraMPI.cpp | 0 .../cuda_utils}/tests/mpi/Test_MPIManager.cpp | 0 .../mpi/runner_lightning_gpu_utils_mpi.cpp | 0 .../cuda_utils/tests/runner_cuda_utils.cpp} | 0 27 files changed, 41 insertions(+), 26 deletions(-) create mode 100644 pennylane_lightning/core/src/utils/cuda_utils/CMakeLists.txt rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/CSRMatrix.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/DataBuffer.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/DevTag.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/DevicePool.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/LinearAlg.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/MPILinearAlg.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/MPIManager.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/MPI_helpers.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/TSQueue.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/cuError.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/cuda_helpers.hpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/tests/CMakeLists.txt (54%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/tests/Test_LinearAlgebra.cpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/tests/mpi/Test_CSRMatrix.cpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/tests/mpi/Test_LinearAlgebraMPI.cpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/tests/mpi/Test_MPIManager.cpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils => utils/cuda_utils}/tests/mpi/runner_lightning_gpu_utils_mpi.cpp (100%) rename pennylane_lightning/core/src/{simulators/lightning_gpu/utils/tests/runner_lightning_gpu_utils.cpp => utils/cuda_utils/tests/runner_cuda_utils.cpp} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a4792ebd7..05f8f1478e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -149,6 +149,7 @@ if(ENABLE_PYTHON) if("${PL_BACKEND}" STREQUAL "lightning_gpu") set(CMAKE_BUILD_RPATH_USE_ORIGIN ON) set_target_properties("${PL_BACKEND}_ops" PROPERTIES BUILD_RPATH "$ORIGIN/../cuquantum/lib:$ORIGIN/../nvidia/cuda_runtime/lib:$ORIGIN/../nvidia/cublas/lib:$ORIGIN/../nvidia/cusparse/lib:$ORIGIN") + target_link_libraries("${PL_BACKEND}_ops" PRIVATE cuda_utils) endif() target_link_libraries("${PL_BACKEND}_ops" PRIVATE lightning_compile_options diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/algorithms/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/algorithms/CMakeLists.txt index 642ef99ffe..eea8f854bd 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/algorithms/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/algorithms/CMakeLists.txt @@ -16,6 +16,7 @@ target_link_libraries(${PL_BACKEND}_algorithms PRIVATE lightning_compile_op ) target_link_libraries(${PL_BACKEND}_algorithms PUBLIC ${PL_BACKEND}_utils + cuda_utils lightning_algorithms ${PL_BACKEND} ${PL_BACKEND}_observables diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/bindings/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/bindings/CMakeLists.txt index 043275e3e6..b868dd9d9b 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/bindings/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/bindings/CMakeLists.txt @@ -11,6 +11,7 @@ target_link_libraries(${PL_BACKEND}_bindings INTERFACE lightning_bindings ${PL_BACKEND} ${PL_BACKEND}_gates ${PL_BACKEND}_measurements + cuda_utils ${PL_BACKEND}_utils ) diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/gates/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/gates/CMakeLists.txt index b5574753d6..2e6735a898 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/gates/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/gates/CMakeLists.txt @@ -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 cuda_utils lightning_external_libs) if (BUILD_TESTS) enable_testing() diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/measurements/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/measurements/CMakeLists.txt index ee5646c83b..ad231c2ec0 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/measurements/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/measurements/CMakeLists.txt @@ -13,6 +13,7 @@ target_link_libraries(${PL_BACKEND}_measurements INTERFACE lightning_compile_op lightning_utils ${PL_BACKEND} ${PL_BACKEND}_utils + cuda_utils ${PL_BACKEND}_observables ) diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/observables/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/observables/CMakeLists.txt index 73e8f34d3f..8d52244464 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/observables/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/observables/CMakeLists.txt @@ -19,6 +19,7 @@ target_link_libraries(${PL_BACKEND}_observables PUBLIC lightning_utils lightning_gates lightning_observables ${PL_BACKEND}_utils + cuda_utils ${PL_BACKEND}_gates ${PL_BACKEND} ) diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/utils/CMakeLists.txt index 9423f0b83b..2a569d28f4 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/utils/CMakeLists.txt @@ -5,9 +5,4 @@ findCUDATK(lightning_compile_options) add_library(${PL_BACKEND}_utils INTERFACE) target_include_directories(${PL_BACKEND}_utils INTERFACE $) -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() +target_link_libraries(${PL_BACKEND}_utils INTERFACE CUDA::cudart CUDA::cublas CUDA::cusparse lightning_compile_options) \ No newline at end of file diff --git a/pennylane_lightning/core/src/utils/CMakeLists.txt b/pennylane_lightning/core/src/utils/CMakeLists.txt index 22a3811467..cd52f51451 100644 --- a/pennylane_lightning/core/src/utils/CMakeLists.txt +++ b/pennylane_lightning/core/src/utils/CMakeLists.txt @@ -11,6 +11,10 @@ if(NOT WIN32) list(APPEND LQUBIT_UTILS_FILES UtilLinearAlg.cpp) endif() +if(${PL_BACKEND} STREQUAL "lightning_gpu") + add_subdirectory(cuda_utils) +endif() + target_include_directories(lightning_utils INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(lightning_utils INTERFACE lightning_compile_options lightning_external_libs diff --git a/pennylane_lightning/core/src/utils/cuda_utils/CMakeLists.txt b/pennylane_lightning/core/src/utils/cuda_utils/CMakeLists.txt new file mode 100644 index 0000000000..85ebf279e2 --- /dev/null +++ b/pennylane_lightning/core/src/utils/cuda_utils/CMakeLists.txt @@ -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 $) +target_link_libraries(cuda_utils INTERFACE CUDA::cudart CUDA::cublas CUDA::cusparse lightning_compile_options) + +if (BUILD_TESTS) + enable_testing() + add_subdirectory("tests") +endif() diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/CSRMatrix.hpp b/pennylane_lightning/core/src/utils/cuda_utils/CSRMatrix.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/CSRMatrix.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/CSRMatrix.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/DataBuffer.hpp b/pennylane_lightning/core/src/utils/cuda_utils/DataBuffer.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/DataBuffer.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/DataBuffer.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/DevTag.hpp b/pennylane_lightning/core/src/utils/cuda_utils/DevTag.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/DevTag.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/DevTag.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/DevicePool.hpp b/pennylane_lightning/core/src/utils/cuda_utils/DevicePool.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/DevicePool.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/DevicePool.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/LinearAlg.hpp b/pennylane_lightning/core/src/utils/cuda_utils/LinearAlg.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/LinearAlg.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/LinearAlg.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/MPILinearAlg.hpp b/pennylane_lightning/core/src/utils/cuda_utils/MPILinearAlg.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/MPILinearAlg.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/MPILinearAlg.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/MPIManager.hpp b/pennylane_lightning/core/src/utils/cuda_utils/MPIManager.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/MPIManager.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/MPIManager.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/MPI_helpers.hpp b/pennylane_lightning/core/src/utils/cuda_utils/MPI_helpers.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/MPI_helpers.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/MPI_helpers.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/TSQueue.hpp b/pennylane_lightning/core/src/utils/cuda_utils/TSQueue.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/TSQueue.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/TSQueue.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/cuError.hpp b/pennylane_lightning/core/src/utils/cuda_utils/cuError.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/cuError.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/cuError.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/cuda_helpers.hpp b/pennylane_lightning/core/src/utils/cuda_utils/cuda_helpers.hpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/cuda_helpers.hpp rename to pennylane_lightning/core/src/utils/cuda_utils/cuda_helpers.hpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/CMakeLists.txt b/pennylane_lightning/core/src/utils/cuda_utils/tests/CMakeLists.txt similarity index 54% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/CMakeLists.txt rename to pennylane_lightning/core/src/utils/cuda_utils/tests/CMakeLists.txt index 9f92d7e85c..9b4e476f7a 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/CMakeLists.txt +++ b/pennylane_lightning/core/src/utils/cuda_utils/tests/CMakeLists.txt @@ -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 @@ -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() \ No newline at end of file diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp b/pennylane_lightning/core/src/utils/cuda_utils/tests/Test_LinearAlgebra.cpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/Test_LinearAlgebra.cpp rename to pennylane_lightning/core/src/utils/cuda_utils/tests/Test_LinearAlgebra.cpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/Test_CSRMatrix.cpp b/pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/Test_CSRMatrix.cpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/Test_CSRMatrix.cpp rename to pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/Test_CSRMatrix.cpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/Test_LinearAlgebraMPI.cpp b/pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/Test_LinearAlgebraMPI.cpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/Test_LinearAlgebraMPI.cpp rename to pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/Test_LinearAlgebraMPI.cpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/Test_MPIManager.cpp b/pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/Test_MPIManager.cpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/Test_MPIManager.cpp rename to pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/Test_MPIManager.cpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/runner_lightning_gpu_utils_mpi.cpp b/pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/runner_lightning_gpu_utils_mpi.cpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/mpi/runner_lightning_gpu_utils_mpi.cpp rename to pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/runner_lightning_gpu_utils_mpi.cpp diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/runner_lightning_gpu_utils.cpp b/pennylane_lightning/core/src/utils/cuda_utils/tests/runner_cuda_utils.cpp similarity index 100% rename from pennylane_lightning/core/src/simulators/lightning_gpu/utils/tests/runner_lightning_gpu_utils.cpp rename to pennylane_lightning/core/src/utils/cuda_utils/tests/runner_cuda_utils.cpp From de452330fa4508c98cae2748c397af2f95fef452 Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Thu, 11 Apr 2024 11:54:19 -0400 Subject: [PATCH 06/14] fix for multiple backends --- pennylane_lightning/core/src/utils/CMakeLists.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pennylane_lightning/core/src/utils/CMakeLists.txt b/pennylane_lightning/core/src/utils/CMakeLists.txt index cd52f51451..dd92cd51b1 100644 --- a/pennylane_lightning/core/src/utils/CMakeLists.txt +++ b/pennylane_lightning/core/src/utils/CMakeLists.txt @@ -11,9 +11,15 @@ if(NOT WIN32) list(APPEND LQUBIT_UTILS_FILES UtilLinearAlg.cpp) endif() -if(${PL_BACKEND} STREQUAL "lightning_gpu") - add_subdirectory(cuda_utils) -endif() +set(CUDA_UTILS_ADDED FALSE) + +foreach(BACKEND ${PL_BACKEND}) + if(${PL_BACKEND} STREQUAL "lightning_gpu" AND NOT CUDA_UTILS_ADDED) + add_subdirectory(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 From e480920f728026e5a58d8a8c40215ffccd9a1f2c Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Thu, 11 Apr 2024 12:03:37 -0400 Subject: [PATCH 07/14] add change log --- .github/CHANGELOG.md | 10 ++++++++-- pennylane_lightning/core/src/utils/CMakeLists.txt | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 092e5e796c..d6f581b3ab 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -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. - [(#651)](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) @@ -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. - [(#651)](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) @@ -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) diff --git a/pennylane_lightning/core/src/utils/CMakeLists.txt b/pennylane_lightning/core/src/utils/CMakeLists.txt index dd92cd51b1..fef20b5dfc 100644 --- a/pennylane_lightning/core/src/utils/CMakeLists.txt +++ b/pennylane_lightning/core/src/utils/CMakeLists.txt @@ -14,7 +14,7 @@ endif() set(CUDA_UTILS_ADDED FALSE) foreach(BACKEND ${PL_BACKEND}) - if(${PL_BACKEND} STREQUAL "lightning_gpu" AND NOT CUDA_UTILS_ADDED) + if(${BACKEND} STREQUAL "lightning_gpu" AND NOT CUDA_UTILS_ADDED) add_subdirectory(cuda_utils) set(CUDA_UTILS_ADDED TRUE) endif() From 9cd6c424b1c5db77ad1c5a7be9af83b4705aaa92 Mon Sep 17 00:00:00 2001 From: Dev version update bot Date: Fri, 12 Apr 2024 01:24:33 +0000 Subject: [PATCH 08/14] Auto update version --- pennylane_lightning/core/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pennylane_lightning/core/_version.py b/pennylane_lightning/core/_version.py index 3180e9d655..9be711cbdb 100644 --- a/pennylane_lightning/core/_version.py +++ b/pennylane_lightning/core/_version.py @@ -16,4 +16,4 @@ Version number (major.minor.patch[-label]) """ -__version__ = "0.36.0-dev26" +__version__ = "0.36.0-dev27" From 7990a81eba540589a59041d4ba5b08efa73e3f66 Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Thu, 11 Apr 2024 21:27:41 -0400 Subject: [PATCH 09/14] Trigger CI From 86daa95c2777dfb23de30ba0465fd9ef9286d653 Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Fri, 12 Apr 2024 01:44:26 +0000 Subject: [PATCH 10/14] rename utils_mpi test cpp --- ...nner_lightning_gpu_utils_mpi.cpp => runner_cuda_utils_mpi.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/{runner_lightning_gpu_utils_mpi.cpp => runner_cuda_utils_mpi.cpp} (100%) diff --git a/pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/runner_lightning_gpu_utils_mpi.cpp b/pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/runner_cuda_utils_mpi.cpp similarity index 100% rename from pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/runner_lightning_gpu_utils_mpi.cpp rename to pennylane_lightning/core/src/utils/cuda_utils/tests/mpi/runner_cuda_utils_mpi.cpp From ca3bad3bb7d1e3b6fed16f61e7af48c52fcaafcc Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Fri, 12 Apr 2024 10:25:41 -0400 Subject: [PATCH 11/14] update format --- CMakeLists.txt | 4 ++-- .../core/src/utils/cuda_utils/tests/CMakeLists.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 05f8f1478e..f5bf6d95c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -149,10 +149,10 @@ if(ENABLE_PYTHON) if("${PL_BACKEND}" STREQUAL "lightning_gpu") set(CMAKE_BUILD_RPATH_USE_ORIGIN ON) set_target_properties("${PL_BACKEND}_ops" PROPERTIES BUILD_RPATH "$ORIGIN/../cuquantum/lib:$ORIGIN/../nvidia/cuda_runtime/lib:$ORIGIN/../nvidia/cublas/lib:$ORIGIN/../nvidia/cusparse/lib:$ORIGIN") - target_link_libraries("${PL_BACKEND}_ops" PRIVATE cuda_utils) + target_link_libraries("${PL_BACKEND}_ops" PRIVATE cuda_utils) endif() - target_link_libraries("${PL_BACKEND}_ops" PRIVATE lightning_compile_options + target_link_libraries("${PL_BACKEND}_ops" PRIVATE lightning_compile_options lightning_external_libs ) diff --git a/pennylane_lightning/core/src/utils/cuda_utils/tests/CMakeLists.txt b/pennylane_lightning/core/src/utils/cuda_utils/tests/CMakeLists.txt index 9b4e476f7a..b72365a315 100644 --- a/pennylane_lightning/core/src/utils/cuda_utils/tests/CMakeLists.txt +++ b/pennylane_lightning/core/src/utils/cuda_utils/tests/CMakeLists.txt @@ -57,4 +57,4 @@ 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() \ No newline at end of file +endif() From aed4495bebb53cb3cb345679e96ada54a7070cc7 Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Fri, 12 Apr 2024 11:10:10 -0400 Subject: [PATCH 12/14] Link utils against cuda_utils --- CMakeLists.txt | 3 +-- .../src/simulators/lightning_gpu/algorithms/CMakeLists.txt | 2 +- .../core/src/simulators/lightning_gpu/bindings/CMakeLists.txt | 1 - .../core/src/simulators/lightning_gpu/gates/CMakeLists.txt | 2 +- .../src/simulators/lightning_gpu/measurements/CMakeLists.txt | 1 - .../src/simulators/lightning_gpu/observables/CMakeLists.txt | 1 - pennylane_lightning/core/src/utils/CMakeLists.txt | 2 ++ 7 files changed, 5 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f5bf6d95c5..3a4792ebd7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -149,10 +149,9 @@ if(ENABLE_PYTHON) if("${PL_BACKEND}" STREQUAL "lightning_gpu") set(CMAKE_BUILD_RPATH_USE_ORIGIN ON) set_target_properties("${PL_BACKEND}_ops" PROPERTIES BUILD_RPATH "$ORIGIN/../cuquantum/lib:$ORIGIN/../nvidia/cuda_runtime/lib:$ORIGIN/../nvidia/cublas/lib:$ORIGIN/../nvidia/cusparse/lib:$ORIGIN") - target_link_libraries("${PL_BACKEND}_ops" PRIVATE cuda_utils) endif() - target_link_libraries("${PL_BACKEND}_ops" PRIVATE lightning_compile_options + target_link_libraries("${PL_BACKEND}_ops" PRIVATE lightning_compile_options lightning_external_libs ) diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/algorithms/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/algorithms/CMakeLists.txt index eea8f854bd..057be8b50d 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/algorithms/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/algorithms/CMakeLists.txt @@ -16,8 +16,8 @@ target_link_libraries(${PL_BACKEND}_algorithms PRIVATE lightning_compile_op ) target_link_libraries(${PL_BACKEND}_algorithms PUBLIC ${PL_BACKEND}_utils - cuda_utils lightning_algorithms + lightning_utils ${PL_BACKEND} ${PL_BACKEND}_observables ) diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/bindings/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/bindings/CMakeLists.txt index b868dd9d9b..043275e3e6 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/bindings/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/bindings/CMakeLists.txt @@ -11,7 +11,6 @@ target_link_libraries(${PL_BACKEND}_bindings INTERFACE lightning_bindings ${PL_BACKEND} ${PL_BACKEND}_gates ${PL_BACKEND}_measurements - cuda_utils ${PL_BACKEND}_utils ) diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/gates/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/gates/CMakeLists.txt index 2e6735a898..7fe1a24237 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/gates/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/gates/CMakeLists.txt @@ -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 cuda_utils lightning_external_libs) +target_link_libraries(${PL_BACKEND}_gates INTERFACE ${PL_BACKEND}_utils lightning_utils lightning_external_libs) if (BUILD_TESTS) enable_testing() diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/measurements/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/measurements/CMakeLists.txt index ad231c2ec0..ee5646c83b 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/measurements/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/measurements/CMakeLists.txt @@ -13,7 +13,6 @@ target_link_libraries(${PL_BACKEND}_measurements INTERFACE lightning_compile_op lightning_utils ${PL_BACKEND} ${PL_BACKEND}_utils - cuda_utils ${PL_BACKEND}_observables ) diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/observables/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/observables/CMakeLists.txt index 8d52244464..73e8f34d3f 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/observables/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/observables/CMakeLists.txt @@ -19,7 +19,6 @@ target_link_libraries(${PL_BACKEND}_observables PUBLIC lightning_utils lightning_gates lightning_observables ${PL_BACKEND}_utils - cuda_utils ${PL_BACKEND}_gates ${PL_BACKEND} ) diff --git a/pennylane_lightning/core/src/utils/CMakeLists.txt b/pennylane_lightning/core/src/utils/CMakeLists.txt index fef20b5dfc..6dc2d67402 100644 --- a/pennylane_lightning/core/src/utils/CMakeLists.txt +++ b/pennylane_lightning/core/src/utils/CMakeLists.txt @@ -16,6 +16,8 @@ set(CUDA_UTILS_ADDED FALSE) 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() From bcb0ad0da3f5eccf4a96800bbe36c65ad7e47883 Mon Sep 17 00:00:00 2001 From: Shuli Shu <31480676+multiphaseCFD@users.noreply.github.com> Date: Fri, 12 Apr 2024 13:36:53 -0400 Subject: [PATCH 13/14] Update pennylane_lightning/core/src/utils/CMakeLists.txt Co-authored-by: Ali Asadi <10773383+maliasadi@users.noreply.github.com> --- pennylane_lightning/core/src/utils/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pennylane_lightning/core/src/utils/CMakeLists.txt b/pennylane_lightning/core/src/utils/CMakeLists.txt index 6dc2d67402..0334c2e442 100644 --- a/pennylane_lightning/core/src/utils/CMakeLists.txt +++ b/pennylane_lightning/core/src/utils/CMakeLists.txt @@ -11,7 +11,7 @@ if(NOT WIN32) list(APPEND LQUBIT_UTILS_FILES UtilLinearAlg.cpp) endif() -set(CUDA_UTILS_ADDED FALSE) +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) From 963f3efaa5d5d2aa6ebf602a02dd17c9180e2d96 Mon Sep 17 00:00:00 2001 From: Shuli Shu <08cnbj@gmail.com> Date: Fri, 12 Apr 2024 13:41:59 -0400 Subject: [PATCH 14/14] update format --- .../core/src/simulators/lightning_gpu/utils/CMakeLists.txt | 2 +- pennylane_lightning/core/src/utils/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/CMakeLists.txt b/pennylane_lightning/core/src/simulators/lightning_gpu/utils/CMakeLists.txt index 2a569d28f4..1ae029ac61 100644 --- a/pennylane_lightning/core/src/simulators/lightning_gpu/utils/CMakeLists.txt +++ b/pennylane_lightning/core/src/simulators/lightning_gpu/utils/CMakeLists.txt @@ -5,4 +5,4 @@ findCUDATK(lightning_compile_options) add_library(${PL_BACKEND}_utils INTERFACE) target_include_directories(${PL_BACKEND}_utils INTERFACE $) -target_link_libraries(${PL_BACKEND}_utils INTERFACE CUDA::cudart CUDA::cublas CUDA::cusparse lightning_compile_options) \ No newline at end of file +target_link_libraries(${PL_BACKEND}_utils INTERFACE CUDA::cudart CUDA::cublas CUDA::cusparse lightning_compile_options) diff --git a/pennylane_lightning/core/src/utils/CMakeLists.txt b/pennylane_lightning/core/src/utils/CMakeLists.txt index 0334c2e442..3e0f251e91 100644 --- a/pennylane_lightning/core/src/utils/CMakeLists.txt +++ b/pennylane_lightning/core/src/utils/CMakeLists.txt @@ -11,7 +11,7 @@ if(NOT WIN32) list(APPEND LQUBIT_UTILS_FILES UtilLinearAlg.cpp) endif() -set(CUDA_UTILS_ADDED FALSE CACHE BOOL "Add cuda_utils header files")) +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)