From e6fa8059a3f9090baad5206ab22b132233f9d148 Mon Sep 17 00:00:00 2001 From: Daniel Claudino Date: Fri, 24 May 2024 10:13:02 +0000 Subject: [PATCH 1/3] Turned annealing deprecated Signed-off-by: Daniel Claudino --- CMakeLists.txt | 6 ++++++ python/compiler/CMakeLists.txt | 6 +++++- python/compiler/pyxasm_listener.cpp | 11 +++++++++-- quantum/CMakeLists.txt | 4 +++- quantum/plugins/CMakeLists.txt | 5 ++++- quantum/plugins/placement/CMakeLists.txt | 4 +++- quantum/provider/CMakeLists.txt | 6 +++++- quantum/provider/QuantumIRProvider.cpp | 24 ++++++++++++++++++------ 8 files changed, 53 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0431ea841..df065196a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,12 @@ option(XACC_BUILD_TESTS "Build test programs" OFF) option(XACC_BUILD_EXAMPLES "Build example programs" OFF) option(XACC_ENSMALLEN_INCLUDE_DIR "Path to ensmallen.hpp for mlpack optimizer" "") option(XACC_ARMADILLO_INCLUDE_DIR "Path to armadillo header for mlpack optimizer" "") +option(XACC_BUILD_ANNEALING "Build annealing libraries" OFF) +if(XACC_BUILD_ANNEALING) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DANNEALING_ENABLED") +else() + message(STATUS "${BoldYellow}Skipping Annealing libraries by default. You can turn it on with -DXACC_BUILD_ANNEALING=ON${ColorReset}") +endif() if(FROM_SETUP_PY AND NOT APPLE) message(STATUS "Running build from setup.py, linking to static libstdc++") diff --git a/python/compiler/CMakeLists.txt b/python/compiler/CMakeLists.txt index 619a112fc..48003c10d 100644 --- a/python/compiler/CMakeLists.txt +++ b/python/compiler/CMakeLists.txt @@ -42,7 +42,11 @@ usFunctionEmbedResources(TARGET ${LIBRARY_NAME} target_include_directories(${LIBRARY_NAME} PRIVATE . generated ${CMAKE_SOURCE_DIR}/tpls/antlr/runtime/src) -target_link_libraries(${LIBRARY_NAME} PUBLIC xacc xacc-quantum-gate xacc-quantum-annealing ${ANTLR_LIB}) +if(XACC_BUILD_ANNEALING) + target_link_libraries(${LIBRARY_NAME} PUBLIC xacc xacc-quantum-gate xacc-quantum-annealing ${ANTLR_LIB}) +else() + target_link_libraries(${LIBRARY_NAME} PUBLIC xacc xacc-quantum-gate ${ANTLR_LIB}) +endif() if(APPLE) set_target_properties(${LIBRARY_NAME} PROPERTIES INSTALL_RPATH "@loader_path/../lib") diff --git a/python/compiler/pyxasm_listener.cpp b/python/compiler/pyxasm_listener.cpp index c5637a6b3..dcc7bb194 100644 --- a/python/compiler/pyxasm_listener.cpp +++ b/python/compiler/pyxasm_listener.cpp @@ -18,7 +18,9 @@ #include "pyxasm_listener.hpp" #include "Circuit.hpp" -#include "AnnealingProgram.hpp" +#ifdef ANNEALING_ENABLED + #include "AnnealingProgram.hpp" +#endif #include #include @@ -49,12 +51,15 @@ void PyXASMListener::enterInstruction(pyxasmParser::InstructionContext *ctx) { instructionName = "CNOT"; } else if (instructionName == "MEASURE") { instructionName = "Measure"; - } else if (instructionName == "dwqmi") { + } +#ifdef ANNEALING_ENABLED + else if (instructionName == "dwqmi") { auto isCircuit = std::dynamic_pointer_cast(function); if (isCircuit) { function = irProvider->createComposite(function->name(), function->getVariables(), "anneal"); } } +#endif auto nRequiredBits = irProvider->getNRequiredBits(instructionName); std::vector bits; @@ -122,9 +127,11 @@ void PyXASMListener::enterInstruction(pyxasmParser::InstructionContext *ctx) { } } +#ifdef ANNEALING_ENABLED if (std::dynamic_pointer_cast(tmpInst) && std::dynamic_pointer_cast(function)) { function = irProvider->createComposite(function->name(), function->getVariables(), "anneal"); } +#endif } function->addInstruction(tmpInst); function->expand(options); diff --git a/quantum/CMakeLists.txt b/quantum/CMakeLists.txt index a10217f6f..e701d9ce7 100644 --- a/quantum/CMakeLists.txt +++ b/quantum/CMakeLists.txt @@ -11,7 +11,9 @@ # Alexander J. McCaskey - initial API and implementation # *******************************************************************************/ add_subdirectory(gate) -add_subdirectory(annealing) +if (XACC_BUILD_ANNEALING) + add_subdirectory(annealing) +endif() add_subdirectory(provider) add_subdirectory(observable) add_subdirectory(plugins) diff --git a/quantum/plugins/CMakeLists.txt b/quantum/plugins/CMakeLists.txt index 7e6681714..38701ba1f 100644 --- a/quantum/plugins/CMakeLists.txt +++ b/quantum/plugins/CMakeLists.txt @@ -13,7 +13,6 @@ add_subdirectory(ibm) add_subdirectory(rigetti) #add_subdirectory(cmr) -add_subdirectory(dwave) add_subdirectory(algorithms) add_subdirectory(decorators) add_subdirectory(circuits) @@ -37,6 +36,10 @@ else() message("-- Could NOT find Qrack library (missing: find_library(QRACK_LIBRARY NAMES qrack))") endif() +if(XACC_BUILD_ANNEALING) + add_subdirectory(dwave) +endif() + add_subdirectory(optimal_control) add_subdirectory(qsim) add_subdirectory(atos_qlm) diff --git a/quantum/plugins/placement/CMakeLists.txt b/quantum/plugins/placement/CMakeLists.txt index f1229a7c7..0f85256f2 100644 --- a/quantum/plugins/placement/CMakeLists.txt +++ b/quantum/plugins/placement/CMakeLists.txt @@ -1,4 +1,6 @@ -add_subdirectory(minor_graph_embedding) +if(XACC_BUILD_ANNEALING) + add_subdirectory(minor_graph_embedding) +endif() # Note: TriQ depends on Z3 library. # Users need to install Z3, e.g. diff --git a/quantum/provider/CMakeLists.txt b/quantum/provider/CMakeLists.txt index b48b0eb64..b83d16ba4 100644 --- a/quantum/provider/CMakeLists.txt +++ b/quantum/provider/CMakeLists.txt @@ -50,7 +50,11 @@ usFunctionEmbedResources(TARGET FILES manifest.json) -target_link_libraries(${LIBRARY_NAME} PUBLIC xacc PRIVATE xacc-quantum-gate xacc-quantum-annealing) +if(XACC_BUILD_ANNEALING) + target_link_libraries(${LIBRARY_NAME} PUBLIC xacc PRIVATE xacc-quantum-gate xacc-quantum-annealing) +else() + target_link_libraries(${LIBRARY_NAME} PUBLIC xacc PRIVATE xacc-quantum-gate) +endif() target_compile_features(${LIBRARY_NAME} PUBLIC cxx_std_14 diff --git a/quantum/provider/QuantumIRProvider.cpp b/quantum/provider/QuantumIRProvider.cpp index 30cb6474e..b1faf123c 100644 --- a/quantum/provider/QuantumIRProvider.cpp +++ b/quantum/provider/QuantumIRProvider.cpp @@ -15,8 +15,10 @@ #include "GateIR.hpp" #include "Circuit.hpp" -#include "DWIR.hpp" -#include "AnnealingProgram.hpp" +#ifdef ANNEALING_ENABLED + #include "DWIR.hpp" + #include "AnnealingProgram.hpp" +#endif #include "CompositeInstruction.hpp" #include "xacc_service.hpp" @@ -131,9 +133,13 @@ std::shared_ptr QuantumIRProvider::createInstruction( // FIXME, update to handle D-Wave... if (type == "circuit") { return std::make_shared(name,variables); - } else if (type == "anneal") { + } +#ifdef ANNEALING_ENABLED + else if (type == "anneal") { return std::make_shared(name,variables); - } else { + } +#endif + else { xacc::error("Invalid Composite type, can be circuit or anneal"); return nullptr; } @@ -142,9 +148,15 @@ std::shared_ptr QuantumIRProvider::createInstruction( std::shared_ptr QuantumIRProvider::createIR(const std::string type) { if (type == "circuit") { return std::make_shared(); -} else if (type == "anneal") { +} + +#ifdef ANNEALING_ENABLED +else if (type == "anneal") { return std::make_shared(); -} else { +} +#endif + +else { xacc::error("Invalid IR type, can be circuit or anneal"); return nullptr; } From bbca6f6e0220941eb4b7cb8e0a52053273f4dc1d Mon Sep 17 00:00:00 2001 From: Daniel Claudino Date: Thu, 30 May 2024 19:31:31 +0000 Subject: [PATCH 2/3] Updated Boost submodule Signed-off-by: Daniel Claudino --- tpls/boost-cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tpls/boost-cmake b/tpls/boost-cmake index 29b401f80..be32761fb 160000 --- a/tpls/boost-cmake +++ b/tpls/boost-cmake @@ -1 +1 @@ -Subproject commit 29b401f802739f076d0683c3d59696187617b198 +Subproject commit be32761fb35199ef712f285697e9146c75559608 From e47d47b53d1cd61c774a658560cd52332646bb0c Mon Sep 17 00:00:00 2001 From: Daniel Claudino Date: Fri, 31 May 2024 15:49:18 +0000 Subject: [PATCH 3/3] Moved optimizers into quantum/plugins Signed-off-by: Daniel Claudino --- .gitmodules | 4 +- quantum/plugins/CMakeLists.txt | 1 + .../plugins/circuit_optimizers/CMakeLists.txt | 63 ++++++++++++++++++ .../OptimizersActivator.cpp | 0 .../gate_merge/GateMergeOptimizer.cpp | 0 .../gate_merge/GateMergeOptimizer.hpp | 0 .../gate_merge/tests/CMakeLists.txt | 0 .../gate_merge/tests/GateMergingTester.cpp | 0 .../NearestNeighborTransform.cpp | 0 .../NearestNeighborTransform.hpp | 0 .../lnn_transform/tests/CMakeLists.txt | 0 .../tests/NearestNeighborTransformTester.cpp | 0 .../manifest.json | 0 .../pulse/PulseTransform.cpp | 0 .../pulse/PulseTransform.hpp | 0 .../pulse/tests/CMakeLists.txt | 0 .../pulse/tests/PulseTransformTester.cpp | 0 .../qsearch/CMakeLists.txt | 0 .../qsearch/manifest.json | 0 .../qsearch/qsearch.cpp | 0 .../qsearch/qsearch.hpp | 0 .../qsearch/tests/CMakeLists.txt | 0 .../qsearch/tests/QsearchOptimizerTester.cpp | 0 .../simple/CircuitOptimizer.cpp | 0 .../simple/CircuitOptimizer.hpp | 0 .../simple/PhasePolynomialRepresentation.cpp | 0 .../simple/PhasePolynomialRepresentation.hpp | 0 .../simple/default_placement.hpp | 0 .../simple/tests/CMakeLists.txt | 0 .../simple/tests/CircuitOptimizerTester.cpp | 0 quantum/plugins/optimizers/CMakeLists.txt | 65 +------------------ .../plugins/optimizers}/mlpack/CMakeLists.txt | 0 .../plugins/optimizers}/mlpack/manifest.json | 0 .../optimizers}/mlpack/mlpack_optimizer.cpp | 0 .../optimizers}/mlpack/mlpack_optimizer.hpp | 0 .../optimizers}/mlpack/tests/CMakeLists.txt | 0 .../mlpack/tests/MLPACKOptimizerTester.cpp | 0 .../nlopt-optimizers/CMakeLists.txt | 4 +- .../nlopt-optimizers/manifest.json | 0 .../nlopt-optimizers/nlopt_optimizer.cpp | 0 .../nlopt-optimizers/nlopt_optimizer.hpp | 0 .../nlopt-optimizers/tests/CMakeLists.txt | 0 .../tests/NLOptimizerTester.cpp | 2 +- .../optimizer/nlopt-optimizers => tpls}/nlopt | 0 xacc/CMakeLists.txt | 1 - xacc/optimizer/CMakeLists.txt | 2 - 46 files changed, 71 insertions(+), 71 deletions(-) create mode 100644 quantum/plugins/circuit_optimizers/CMakeLists.txt rename quantum/plugins/{optimizers => circuit_optimizers}/OptimizersActivator.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/gate_merge/GateMergeOptimizer.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/gate_merge/GateMergeOptimizer.hpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/gate_merge/tests/CMakeLists.txt (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/gate_merge/tests/GateMergingTester.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/lnn_transform/NearestNeighborTransform.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/lnn_transform/NearestNeighborTransform.hpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/lnn_transform/tests/CMakeLists.txt (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/lnn_transform/tests/NearestNeighborTransformTester.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/manifest.json (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/pulse/PulseTransform.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/pulse/PulseTransform.hpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/pulse/tests/CMakeLists.txt (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/pulse/tests/PulseTransformTester.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/qsearch/CMakeLists.txt (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/qsearch/manifest.json (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/qsearch/qsearch.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/qsearch/qsearch.hpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/qsearch/tests/CMakeLists.txt (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/qsearch/tests/QsearchOptimizerTester.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/simple/CircuitOptimizer.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/simple/CircuitOptimizer.hpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/simple/PhasePolynomialRepresentation.cpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/simple/PhasePolynomialRepresentation.hpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/simple/default_placement.hpp (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/simple/tests/CMakeLists.txt (100%) rename quantum/plugins/{optimizers => circuit_optimizers}/simple/tests/CircuitOptimizerTester.cpp (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/mlpack/CMakeLists.txt (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/mlpack/manifest.json (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/mlpack/mlpack_optimizer.cpp (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/mlpack/mlpack_optimizer.hpp (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/mlpack/tests/CMakeLists.txt (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/mlpack/tests/MLPACKOptimizerTester.cpp (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/nlopt-optimizers/CMakeLists.txt (93%) rename {xacc/optimizer => quantum/plugins/optimizers}/nlopt-optimizers/manifest.json (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/nlopt-optimizers/nlopt_optimizer.cpp (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/nlopt-optimizers/nlopt_optimizer.hpp (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/nlopt-optimizers/tests/CMakeLists.txt (100%) rename {xacc/optimizer => quantum/plugins/optimizers}/nlopt-optimizers/tests/NLOptimizerTester.cpp (98%) rename {xacc/optimizer/nlopt-optimizers => tpls}/nlopt (100%) delete mode 100644 xacc/optimizer/CMakeLists.txt diff --git a/.gitmodules b/.gitmodules index 0112cbde7..69b9dd425 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,8 +10,8 @@ [submodule "quantum/plugins/dwave/embedding/minorminer"] path = quantum/plugins/dwave/embedding/minorminer url = https://github.com/dwavesystems/minorminer -[submodule "xacc/optimizer/nlopt-optimizers/nlopt"] - path = xacc/optimizer/nlopt-optimizers/nlopt +[submodule "tpls/nlopt"] + path = tpls/nlopt url = https://github.com/stevengj/nlopt [submodule "quantum/plugins/dwave/tpls/legacy-sapi-clients"] path = quantum/plugins/dwave/tpls/legacy-sapi-clients diff --git a/quantum/plugins/CMakeLists.txt b/quantum/plugins/CMakeLists.txt index 38701ba1f..c837b148d 100644 --- a/quantum/plugins/CMakeLists.txt +++ b/quantum/plugins/CMakeLists.txt @@ -17,6 +17,7 @@ add_subdirectory(algorithms) add_subdirectory(decorators) add_subdirectory(circuits) add_subdirectory(optimizers) +add_subdirectory(circuit_optimizers) add_subdirectory(iontrap) add_subdirectory(ionq) add_subdirectory(placement) diff --git a/quantum/plugins/circuit_optimizers/CMakeLists.txt b/quantum/plugins/circuit_optimizers/CMakeLists.txt new file mode 100644 index 000000000..95a2555dc --- /dev/null +++ b/quantum/plugins/circuit_optimizers/CMakeLists.txt @@ -0,0 +1,63 @@ +# ******************************************************************************* +# Copyright (c) 2019 UT-Battelle, LLC. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# and Eclipse Distribution License v.10 which accompany this distribution. +# The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html +# and the Eclipse Distribution License is available at +# https://eclipse.org/org/documents/edl-v10.php +# +# Contributors: +# Alexander J. McCaskey - initial API and implementation +# *******************************************************************************/ +set (LIBRARY_NAME xacc-circuit-optimizers) + +file (GLOB_RECURSE HEADERS *.hpp) +file (GLOB SRC simple/*.cpp OptimizersActivator.cpp pulse/*.cpp gate_merge/*.cpp lnn_transform/*.cpp) + +# Set up dependencies to resources to track changes +usFunctionGetResourceSource(TARGET ${LIBRARY_NAME} OUT SRC) +# Generate bundle initialization code +usFunctionGenerateBundleInit(TARGET ${LIBRARY_NAME} OUT SRC) + +add_library(${LIBRARY_NAME} SHARED ${SRC}) + +set(_bundle_name xacc_circuit_optimizers) + +set_target_properties(${LIBRARY_NAME} PROPERTIES + # This is required for every bundle + COMPILE_DEFINITIONS US_BUNDLE_NAME=${_bundle_name} + # This is for convenience, used by other CMake functions + US_BUNDLE_NAME ${_bundle_name} + ) + +# Embed meta-data from a manifest.json file +usFunctionEmbedResources(TARGET ${LIBRARY_NAME} + WORKING_DIRECTORY + ${CMAKE_CURRENT_SOURCE_DIR} + FILES + manifest.json + ) + +target_include_directories(${LIBRARY_NAME} PUBLIC simple pulse gate_merge lnn_transform ${EIGEN_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/tpls/exprtk) +target_link_libraries(${LIBRARY_NAME} xacc xacc-quantum-gate) + +if(APPLE) + set_target_properties(${LIBRARY_NAME} PROPERTIES INSTALL_RPATH "@loader_path/../lib;@loader_path") + set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") +else() + set_target_properties(${LIBRARY_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/../lib:$ORIGIN") + set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS "-shared") +endif() + +install(TARGETS ${LIBRARY_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/plugins) + +# Gather tests +if(XACC_BUILD_TESTS) + add_subdirectory(simple/tests) + add_subdirectory(pulse/tests) + add_subdirectory(gate_merge/tests) + add_subdirectory(lnn_transform/tests) +endif() + +add_subdirectory(qsearch) \ No newline at end of file diff --git a/quantum/plugins/optimizers/OptimizersActivator.cpp b/quantum/plugins/circuit_optimizers/OptimizersActivator.cpp similarity index 100% rename from quantum/plugins/optimizers/OptimizersActivator.cpp rename to quantum/plugins/circuit_optimizers/OptimizersActivator.cpp diff --git a/quantum/plugins/optimizers/gate_merge/GateMergeOptimizer.cpp b/quantum/plugins/circuit_optimizers/gate_merge/GateMergeOptimizer.cpp similarity index 100% rename from quantum/plugins/optimizers/gate_merge/GateMergeOptimizer.cpp rename to quantum/plugins/circuit_optimizers/gate_merge/GateMergeOptimizer.cpp diff --git a/quantum/plugins/optimizers/gate_merge/GateMergeOptimizer.hpp b/quantum/plugins/circuit_optimizers/gate_merge/GateMergeOptimizer.hpp similarity index 100% rename from quantum/plugins/optimizers/gate_merge/GateMergeOptimizer.hpp rename to quantum/plugins/circuit_optimizers/gate_merge/GateMergeOptimizer.hpp diff --git a/quantum/plugins/optimizers/gate_merge/tests/CMakeLists.txt b/quantum/plugins/circuit_optimizers/gate_merge/tests/CMakeLists.txt similarity index 100% rename from quantum/plugins/optimizers/gate_merge/tests/CMakeLists.txt rename to quantum/plugins/circuit_optimizers/gate_merge/tests/CMakeLists.txt diff --git a/quantum/plugins/optimizers/gate_merge/tests/GateMergingTester.cpp b/quantum/plugins/circuit_optimizers/gate_merge/tests/GateMergingTester.cpp similarity index 100% rename from quantum/plugins/optimizers/gate_merge/tests/GateMergingTester.cpp rename to quantum/plugins/circuit_optimizers/gate_merge/tests/GateMergingTester.cpp diff --git a/quantum/plugins/optimizers/lnn_transform/NearestNeighborTransform.cpp b/quantum/plugins/circuit_optimizers/lnn_transform/NearestNeighborTransform.cpp similarity index 100% rename from quantum/plugins/optimizers/lnn_transform/NearestNeighborTransform.cpp rename to quantum/plugins/circuit_optimizers/lnn_transform/NearestNeighborTransform.cpp diff --git a/quantum/plugins/optimizers/lnn_transform/NearestNeighborTransform.hpp b/quantum/plugins/circuit_optimizers/lnn_transform/NearestNeighborTransform.hpp similarity index 100% rename from quantum/plugins/optimizers/lnn_transform/NearestNeighborTransform.hpp rename to quantum/plugins/circuit_optimizers/lnn_transform/NearestNeighborTransform.hpp diff --git a/quantum/plugins/optimizers/lnn_transform/tests/CMakeLists.txt b/quantum/plugins/circuit_optimizers/lnn_transform/tests/CMakeLists.txt similarity index 100% rename from quantum/plugins/optimizers/lnn_transform/tests/CMakeLists.txt rename to quantum/plugins/circuit_optimizers/lnn_transform/tests/CMakeLists.txt diff --git a/quantum/plugins/optimizers/lnn_transform/tests/NearestNeighborTransformTester.cpp b/quantum/plugins/circuit_optimizers/lnn_transform/tests/NearestNeighborTransformTester.cpp similarity index 100% rename from quantum/plugins/optimizers/lnn_transform/tests/NearestNeighborTransformTester.cpp rename to quantum/plugins/circuit_optimizers/lnn_transform/tests/NearestNeighborTransformTester.cpp diff --git a/quantum/plugins/optimizers/manifest.json b/quantum/plugins/circuit_optimizers/manifest.json similarity index 100% rename from quantum/plugins/optimizers/manifest.json rename to quantum/plugins/circuit_optimizers/manifest.json diff --git a/quantum/plugins/optimizers/pulse/PulseTransform.cpp b/quantum/plugins/circuit_optimizers/pulse/PulseTransform.cpp similarity index 100% rename from quantum/plugins/optimizers/pulse/PulseTransform.cpp rename to quantum/plugins/circuit_optimizers/pulse/PulseTransform.cpp diff --git a/quantum/plugins/optimizers/pulse/PulseTransform.hpp b/quantum/plugins/circuit_optimizers/pulse/PulseTransform.hpp similarity index 100% rename from quantum/plugins/optimizers/pulse/PulseTransform.hpp rename to quantum/plugins/circuit_optimizers/pulse/PulseTransform.hpp diff --git a/quantum/plugins/optimizers/pulse/tests/CMakeLists.txt b/quantum/plugins/circuit_optimizers/pulse/tests/CMakeLists.txt similarity index 100% rename from quantum/plugins/optimizers/pulse/tests/CMakeLists.txt rename to quantum/plugins/circuit_optimizers/pulse/tests/CMakeLists.txt diff --git a/quantum/plugins/optimizers/pulse/tests/PulseTransformTester.cpp b/quantum/plugins/circuit_optimizers/pulse/tests/PulseTransformTester.cpp similarity index 100% rename from quantum/plugins/optimizers/pulse/tests/PulseTransformTester.cpp rename to quantum/plugins/circuit_optimizers/pulse/tests/PulseTransformTester.cpp diff --git a/quantum/plugins/optimizers/qsearch/CMakeLists.txt b/quantum/plugins/circuit_optimizers/qsearch/CMakeLists.txt similarity index 100% rename from quantum/plugins/optimizers/qsearch/CMakeLists.txt rename to quantum/plugins/circuit_optimizers/qsearch/CMakeLists.txt diff --git a/quantum/plugins/optimizers/qsearch/manifest.json b/quantum/plugins/circuit_optimizers/qsearch/manifest.json similarity index 100% rename from quantum/plugins/optimizers/qsearch/manifest.json rename to quantum/plugins/circuit_optimizers/qsearch/manifest.json diff --git a/quantum/plugins/optimizers/qsearch/qsearch.cpp b/quantum/plugins/circuit_optimizers/qsearch/qsearch.cpp similarity index 100% rename from quantum/plugins/optimizers/qsearch/qsearch.cpp rename to quantum/plugins/circuit_optimizers/qsearch/qsearch.cpp diff --git a/quantum/plugins/optimizers/qsearch/qsearch.hpp b/quantum/plugins/circuit_optimizers/qsearch/qsearch.hpp similarity index 100% rename from quantum/plugins/optimizers/qsearch/qsearch.hpp rename to quantum/plugins/circuit_optimizers/qsearch/qsearch.hpp diff --git a/quantum/plugins/optimizers/qsearch/tests/CMakeLists.txt b/quantum/plugins/circuit_optimizers/qsearch/tests/CMakeLists.txt similarity index 100% rename from quantum/plugins/optimizers/qsearch/tests/CMakeLists.txt rename to quantum/plugins/circuit_optimizers/qsearch/tests/CMakeLists.txt diff --git a/quantum/plugins/optimizers/qsearch/tests/QsearchOptimizerTester.cpp b/quantum/plugins/circuit_optimizers/qsearch/tests/QsearchOptimizerTester.cpp similarity index 100% rename from quantum/plugins/optimizers/qsearch/tests/QsearchOptimizerTester.cpp rename to quantum/plugins/circuit_optimizers/qsearch/tests/QsearchOptimizerTester.cpp diff --git a/quantum/plugins/optimizers/simple/CircuitOptimizer.cpp b/quantum/plugins/circuit_optimizers/simple/CircuitOptimizer.cpp similarity index 100% rename from quantum/plugins/optimizers/simple/CircuitOptimizer.cpp rename to quantum/plugins/circuit_optimizers/simple/CircuitOptimizer.cpp diff --git a/quantum/plugins/optimizers/simple/CircuitOptimizer.hpp b/quantum/plugins/circuit_optimizers/simple/CircuitOptimizer.hpp similarity index 100% rename from quantum/plugins/optimizers/simple/CircuitOptimizer.hpp rename to quantum/plugins/circuit_optimizers/simple/CircuitOptimizer.hpp diff --git a/quantum/plugins/optimizers/simple/PhasePolynomialRepresentation.cpp b/quantum/plugins/circuit_optimizers/simple/PhasePolynomialRepresentation.cpp similarity index 100% rename from quantum/plugins/optimizers/simple/PhasePolynomialRepresentation.cpp rename to quantum/plugins/circuit_optimizers/simple/PhasePolynomialRepresentation.cpp diff --git a/quantum/plugins/optimizers/simple/PhasePolynomialRepresentation.hpp b/quantum/plugins/circuit_optimizers/simple/PhasePolynomialRepresentation.hpp similarity index 100% rename from quantum/plugins/optimizers/simple/PhasePolynomialRepresentation.hpp rename to quantum/plugins/circuit_optimizers/simple/PhasePolynomialRepresentation.hpp diff --git a/quantum/plugins/optimizers/simple/default_placement.hpp b/quantum/plugins/circuit_optimizers/simple/default_placement.hpp similarity index 100% rename from quantum/plugins/optimizers/simple/default_placement.hpp rename to quantum/plugins/circuit_optimizers/simple/default_placement.hpp diff --git a/quantum/plugins/optimizers/simple/tests/CMakeLists.txt b/quantum/plugins/circuit_optimizers/simple/tests/CMakeLists.txt similarity index 100% rename from quantum/plugins/optimizers/simple/tests/CMakeLists.txt rename to quantum/plugins/circuit_optimizers/simple/tests/CMakeLists.txt diff --git a/quantum/plugins/optimizers/simple/tests/CircuitOptimizerTester.cpp b/quantum/plugins/circuit_optimizers/simple/tests/CircuitOptimizerTester.cpp similarity index 100% rename from quantum/plugins/optimizers/simple/tests/CircuitOptimizerTester.cpp rename to quantum/plugins/circuit_optimizers/simple/tests/CircuitOptimizerTester.cpp diff --git a/quantum/plugins/optimizers/CMakeLists.txt b/quantum/plugins/optimizers/CMakeLists.txt index 95a2555dc..d764e5c20 100644 --- a/quantum/plugins/optimizers/CMakeLists.txt +++ b/quantum/plugins/optimizers/CMakeLists.txt @@ -1,63 +1,2 @@ -# ******************************************************************************* -# Copyright (c) 2019 UT-Battelle, LLC. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License v1.0 -# and Eclipse Distribution License v.10 which accompany this distribution. -# The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html -# and the Eclipse Distribution License is available at -# https://eclipse.org/org/documents/edl-v10.php -# -# Contributors: -# Alexander J. McCaskey - initial API and implementation -# *******************************************************************************/ -set (LIBRARY_NAME xacc-circuit-optimizers) - -file (GLOB_RECURSE HEADERS *.hpp) -file (GLOB SRC simple/*.cpp OptimizersActivator.cpp pulse/*.cpp gate_merge/*.cpp lnn_transform/*.cpp) - -# Set up dependencies to resources to track changes -usFunctionGetResourceSource(TARGET ${LIBRARY_NAME} OUT SRC) -# Generate bundle initialization code -usFunctionGenerateBundleInit(TARGET ${LIBRARY_NAME} OUT SRC) - -add_library(${LIBRARY_NAME} SHARED ${SRC}) - -set(_bundle_name xacc_circuit_optimizers) - -set_target_properties(${LIBRARY_NAME} PROPERTIES - # This is required for every bundle - COMPILE_DEFINITIONS US_BUNDLE_NAME=${_bundle_name} - # This is for convenience, used by other CMake functions - US_BUNDLE_NAME ${_bundle_name} - ) - -# Embed meta-data from a manifest.json file -usFunctionEmbedResources(TARGET ${LIBRARY_NAME} - WORKING_DIRECTORY - ${CMAKE_CURRENT_SOURCE_DIR} - FILES - manifest.json - ) - -target_include_directories(${LIBRARY_NAME} PUBLIC simple pulse gate_merge lnn_transform ${EIGEN_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/tpls/exprtk) -target_link_libraries(${LIBRARY_NAME} xacc xacc-quantum-gate) - -if(APPLE) - set_target_properties(${LIBRARY_NAME} PROPERTIES INSTALL_RPATH "@loader_path/../lib;@loader_path") - set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") -else() - set_target_properties(${LIBRARY_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN/../lib:$ORIGIN") - set_target_properties(${LIBRARY_NAME} PROPERTIES LINK_FLAGS "-shared") -endif() - -install(TARGETS ${LIBRARY_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/plugins) - -# Gather tests -if(XACC_BUILD_TESTS) - add_subdirectory(simple/tests) - add_subdirectory(pulse/tests) - add_subdirectory(gate_merge/tests) - add_subdirectory(lnn_transform/tests) -endif() - -add_subdirectory(qsearch) \ No newline at end of file +add_subdirectory(nlopt-optimizers) +add_subdirectory(mlpack) \ No newline at end of file diff --git a/xacc/optimizer/mlpack/CMakeLists.txt b/quantum/plugins/optimizers/mlpack/CMakeLists.txt similarity index 100% rename from xacc/optimizer/mlpack/CMakeLists.txt rename to quantum/plugins/optimizers/mlpack/CMakeLists.txt diff --git a/xacc/optimizer/mlpack/manifest.json b/quantum/plugins/optimizers/mlpack/manifest.json similarity index 100% rename from xacc/optimizer/mlpack/manifest.json rename to quantum/plugins/optimizers/mlpack/manifest.json diff --git a/xacc/optimizer/mlpack/mlpack_optimizer.cpp b/quantum/plugins/optimizers/mlpack/mlpack_optimizer.cpp similarity index 100% rename from xacc/optimizer/mlpack/mlpack_optimizer.cpp rename to quantum/plugins/optimizers/mlpack/mlpack_optimizer.cpp diff --git a/xacc/optimizer/mlpack/mlpack_optimizer.hpp b/quantum/plugins/optimizers/mlpack/mlpack_optimizer.hpp similarity index 100% rename from xacc/optimizer/mlpack/mlpack_optimizer.hpp rename to quantum/plugins/optimizers/mlpack/mlpack_optimizer.hpp diff --git a/xacc/optimizer/mlpack/tests/CMakeLists.txt b/quantum/plugins/optimizers/mlpack/tests/CMakeLists.txt similarity index 100% rename from xacc/optimizer/mlpack/tests/CMakeLists.txt rename to quantum/plugins/optimizers/mlpack/tests/CMakeLists.txt diff --git a/xacc/optimizer/mlpack/tests/MLPACKOptimizerTester.cpp b/quantum/plugins/optimizers/mlpack/tests/MLPACKOptimizerTester.cpp similarity index 100% rename from xacc/optimizer/mlpack/tests/MLPACKOptimizerTester.cpp rename to quantum/plugins/optimizers/mlpack/tests/MLPACKOptimizerTester.cpp diff --git a/xacc/optimizer/nlopt-optimizers/CMakeLists.txt b/quantum/plugins/optimizers/nlopt-optimizers/CMakeLists.txt similarity index 93% rename from xacc/optimizer/nlopt-optimizers/CMakeLists.txt rename to quantum/plugins/optimizers/nlopt-optimizers/CMakeLists.txt index 6cdbadc8c..e1c56ae54 100644 --- a/xacc/optimizer/nlopt-optimizers/CMakeLists.txt +++ b/quantum/plugins/optimizers/nlopt-optimizers/CMakeLists.txt @@ -9,7 +9,7 @@ SET(NLOPT_SWIG OFF CACHE BOOL "") set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE INTERNAL "No dev warnings") endif() set(CMAKE_INSTALL_LIBDIR ${CMAKE_INSTALL_PREFIX}/lib) -add_subdirectory(nlopt) +add_subdirectory(${CMAKE_SOURCE_DIR}/tpls/nlopt ${CMAKE_BINARY_DIR}/tpls/nlopt) set(LIBRARY_NAME xacc-optimizer-nlopt) @@ -22,7 +22,7 @@ add_library(${LIBRARY_NAME} SHARED ${SRC}) target_include_directories( ${LIBRARY_NAME} - PUBLIC . .. ${CMAKE_BUILD_DIR}/xacc/optimizer/nlopt-optimizers/nlopt/src/api) + PUBLIC . .. ${CMAKE_SOURCE_DIR}/tpls/nlopt/src/api) target_link_libraries(${LIBRARY_NAME} PUBLIC nlopt xacc CppMicroServices) diff --git a/xacc/optimizer/nlopt-optimizers/manifest.json b/quantum/plugins/optimizers/nlopt-optimizers/manifest.json similarity index 100% rename from xacc/optimizer/nlopt-optimizers/manifest.json rename to quantum/plugins/optimizers/nlopt-optimizers/manifest.json diff --git a/xacc/optimizer/nlopt-optimizers/nlopt_optimizer.cpp b/quantum/plugins/optimizers/nlopt-optimizers/nlopt_optimizer.cpp similarity index 100% rename from xacc/optimizer/nlopt-optimizers/nlopt_optimizer.cpp rename to quantum/plugins/optimizers/nlopt-optimizers/nlopt_optimizer.cpp diff --git a/xacc/optimizer/nlopt-optimizers/nlopt_optimizer.hpp b/quantum/plugins/optimizers/nlopt-optimizers/nlopt_optimizer.hpp similarity index 100% rename from xacc/optimizer/nlopt-optimizers/nlopt_optimizer.hpp rename to quantum/plugins/optimizers/nlopt-optimizers/nlopt_optimizer.hpp diff --git a/xacc/optimizer/nlopt-optimizers/tests/CMakeLists.txt b/quantum/plugins/optimizers/nlopt-optimizers/tests/CMakeLists.txt similarity index 100% rename from xacc/optimizer/nlopt-optimizers/tests/CMakeLists.txt rename to quantum/plugins/optimizers/nlopt-optimizers/tests/CMakeLists.txt diff --git a/xacc/optimizer/nlopt-optimizers/tests/NLOptimizerTester.cpp b/quantum/plugins/optimizers/nlopt-optimizers/tests/NLOptimizerTester.cpp similarity index 98% rename from xacc/optimizer/nlopt-optimizers/tests/NLOptimizerTester.cpp rename to quantum/plugins/optimizers/nlopt-optimizers/tests/NLOptimizerTester.cpp index 4560b2f47..e7578d95c 100644 --- a/xacc/optimizer/nlopt-optimizers/tests/NLOptimizerTester.cpp +++ b/quantum/plugins/optimizers/nlopt-optimizers/tests/NLOptimizerTester.cpp @@ -1,7 +1,7 @@ #include #include "xacc.hpp" #include "xacc_service.hpp" -#include "nlopt_optimizer.hpp" +//#include "nlopt_optimizer.hpp" using namespace xacc; diff --git a/xacc/optimizer/nlopt-optimizers/nlopt b/tpls/nlopt similarity index 100% rename from xacc/optimizer/nlopt-optimizers/nlopt rename to tpls/nlopt diff --git a/xacc/CMakeLists.txt b/xacc/CMakeLists.txt index 6c9f1bc7d..40f827085 100644 --- a/xacc/CMakeLists.txt +++ b/xacc/CMakeLists.txt @@ -151,7 +151,6 @@ endif() install(FILES ${HEADERS} DESTINATION include/xacc) install(TARGETS xacc DESTINATION lib) -add_subdirectory(optimizer) add_subdirectory(utils/exprtk_parsing) add_subdirectory(ir/graph-impl) add_subdirectory(utils/ini_config_parsing) diff --git a/xacc/optimizer/CMakeLists.txt b/xacc/optimizer/CMakeLists.txt deleted file mode 100644 index d764e5c20..000000000 --- a/xacc/optimizer/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -add_subdirectory(nlopt-optimizers) -add_subdirectory(mlpack) \ No newline at end of file