From 69ef5828a2dadf5c5fcb4aad177f1f25efca7d91 Mon Sep 17 00:00:00 2001 From: Hiroshi Horii Date: Tue, 4 Jul 2023 23:37:46 +0900 Subject: [PATCH 1/2] support all platform for libaer. fix a bug in aer_apply_measure in libaer --- CMakeLists.txt | 35 +++++++++++++++------------------ contrib/runtime/aer_runtime.cpp | 4 ++-- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1db8b19893..ff62003bac 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -452,25 +452,22 @@ else() # Standalone build install(TARGETS qasm_simulator DESTINATION bin) - # build libaer.so (currently, Linux on x86 is supportted) - if (CMAKE_SYSTEM_NAME STREQUAL "Linux") - set(AER_RUNTIME_SOURCE "${PROJECT_SOURCE_DIR}/contrib/runtime/aer_runtime.cpp") - if(CUDA_FOUND AND AER_THRUST_BACKEND STREQUAL "CUDA") - build_cuda(aer ${AER_RUNTIME_SOURCE} FALSE) - else() - build_cpu(aer ${AER_RUNTIME_SOURCE} FALSE) - endif() - install(TARGETS aer) - - # Tests - if(BUILD_TESTS AND NOT AER_MPI) - add_executable(test_libaer "${PROJECT_SOURCE_DIR}/test/runtime/runtime_sample.c") - target_include_directories(test_libaer PUBLIC "${PROJECT_SOURCE_DIR}/contrib/runtime/") - set_target_properties(test_libaer PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE bin) - target_link_libraries(test_libaer PRIVATE ${AER_LIBRARIES}) - target_link_libraries(test_libaer PRIVATE aer) - add_test(NAME aer_runtime_test COMMAND bin/test_libaer) - endif() + set(AER_RUNTIME_SOURCE "${PROJECT_SOURCE_DIR}/contrib/runtime/aer_runtime.cpp") + if(CUDA_FOUND AND AER_THRUST_BACKEND STREQUAL "CUDA") + build_cuda(aer ${AER_RUNTIME_SOURCE} FALSE) + else() + build_cpu(aer ${AER_RUNTIME_SOURCE} FALSE) + endif() + install(TARGETS aer) + + # Tests + if(BUILD_TESTS AND NOT AER_MPI) + add_executable(test_libaer "${PROJECT_SOURCE_DIR}/test/runtime/runtime_sample.c") + target_include_directories(test_libaer PUBLIC "${PROJECT_SOURCE_DIR}/contrib/runtime/") + set_target_properties(test_libaer PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE bin) + target_link_libraries(test_libaer PRIVATE ${AER_LIBRARIES}) + target_link_libraries(test_libaer PRIVATE aer) + add_test(NAME aer_runtime_test COMMAND bin/test_libaer) endif() endif() diff --git a/contrib/runtime/aer_runtime.cpp b/contrib/runtime/aer_runtime.cpp index 037b60da7c..2a4d65cc2f 100644 --- a/contrib/runtime/aer_runtime.cpp +++ b/contrib/runtime/aer_runtime.cpp @@ -13,6 +13,7 @@ */ #include "controllers/state_controller.hpp" #include +#include // initialize and return state extern "C" { @@ -51,8 +52,7 @@ uint_t aer_allocate_qubits(void *handler, uint_t num_qubits) { // measure qubits uint_t aer_apply_measure(void *handler, uint_t *qubits_, size_t num_qubits) { AER::AerState *state = reinterpret_cast(handler); - std::vector qubits; - qubits.insert(qubits.end(), &(qubits_[0]), &(qubits[num_qubits - 1])); + std::vector qubits(qubits_, qubits_ + num_qubits); return state->apply_measure(qubits); }; From dc9341a2dd67901670ee2fa0255a2f85425913b0 Mon Sep 17 00:00:00 2001 From: Hiroshi Horii Date: Wed, 5 Jul 2023 13:58:45 +0900 Subject: [PATCH 2/2] build libaer only in Linux and Darwin --- CMakeLists.txt | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ff62003bac..69758c6991 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -452,22 +452,24 @@ else() # Standalone build install(TARGETS qasm_simulator DESTINATION bin) - set(AER_RUNTIME_SOURCE "${PROJECT_SOURCE_DIR}/contrib/runtime/aer_runtime.cpp") - if(CUDA_FOUND AND AER_THRUST_BACKEND STREQUAL "CUDA") - build_cuda(aer ${AER_RUNTIME_SOURCE} FALSE) - else() - build_cpu(aer ${AER_RUNTIME_SOURCE} FALSE) - endif() - install(TARGETS aer) - - # Tests - if(BUILD_TESTS AND NOT AER_MPI) - add_executable(test_libaer "${PROJECT_SOURCE_DIR}/test/runtime/runtime_sample.c") - target_include_directories(test_libaer PUBLIC "${PROJECT_SOURCE_DIR}/contrib/runtime/") - set_target_properties(test_libaer PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE bin) - target_link_libraries(test_libaer PRIVATE ${AER_LIBRARIES}) - target_link_libraries(test_libaer PRIVATE aer) - add_test(NAME aer_runtime_test COMMAND bin/test_libaer) + if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Darwin") + set(AER_RUNTIME_SOURCE "${PROJECT_SOURCE_DIR}/contrib/runtime/aer_runtime.cpp") + if(CUDA_FOUND AND AER_THRUST_BACKEND STREQUAL "CUDA") + build_cuda(aer ${AER_RUNTIME_SOURCE} FALSE) + else() + build_cpu(aer ${AER_RUNTIME_SOURCE} FALSE) + endif() + install(TARGETS aer) + + # Tests + if(BUILD_TESTS AND NOT AER_MPI) + add_executable(test_libaer "${PROJECT_SOURCE_DIR}/test/runtime/runtime_sample.c") + target_include_directories(test_libaer PUBLIC "${PROJECT_SOURCE_DIR}/contrib/runtime/") + set_target_properties(test_libaer PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE bin) + target_link_libraries(test_libaer PRIVATE ${AER_LIBRARIES}) + target_link_libraries(test_libaer PRIVATE aer) + add_test(NAME aer_runtime_test COMMAND bin/test_libaer) + endif() endif() endif()