From 9867d3bea145ddd1b7669b6aac01fbe973f36274 Mon Sep 17 00:00:00 2001 From: Alex McCaskey <mccaskeyaj@ornl.gov> Date: Mon, 30 Jan 2017 21:40:50 +0000 Subject: [PATCH] Fixing bug that broke build - started FireTensorAccelerator --- examples/quantum/gate/CMakeLists.txt | 2 +- quantum/gate/CMakeLists.txt | 3 - quantum/gate/accelerators/CMakeLists.txt | 9 +- .../accelerators/FireTensorAccelerator.hpp | 84 +++++++++++++++++++ quantum/gate/{ => accelerators}/Qubits.hpp | 0 .../tests/FireTensorAcceleratorTester.cpp | 40 +++++++++ .../{ => accelerators}/tests/QubitsTester.cpp | 0 quantum/gate/utils/CMakeLists.txt | 4 + .../{ => utils}/tests/QasmToGraphTester.cpp | 0 xacc/accelerator/Accelerator.hpp | 17 ++-- xacc/program/Program.hpp | 3 +- 11 files changed, 143 insertions(+), 19 deletions(-) create mode 100644 quantum/gate/accelerators/FireTensorAccelerator.hpp rename quantum/gate/{ => accelerators}/Qubits.hpp (100%) create mode 100644 quantum/gate/accelerators/tests/FireTensorAcceleratorTester.cpp rename quantum/gate/{ => accelerators}/tests/QubitsTester.cpp (100%) rename quantum/gate/{ => utils}/tests/QasmToGraphTester.cpp (100%) diff --git a/examples/quantum/gate/CMakeLists.txt b/examples/quantum/gate/CMakeLists.txt index 84d10749a..77bd2da42 100644 --- a/examples/quantum/gate/CMakeLists.txt +++ b/examples/quantum/gate/CMakeLists.txt @@ -28,6 +28,6 @@ # Initial API and implementation - Alex McCaskey # #**********************************************************************************/ -include_directories(${CMAKE_SOURCE_DIR}/quantum/gate) +include_directories(${CMAKE_SOURCE_DIR}/quantum/gate/accelerators) add_executable(teleport_scaffold teleport_scaffold.cpp) target_link_libraries(teleport_scaffold xacc-scaffold ${Boost_LIBRARIES}) \ No newline at end of file diff --git a/quantum/gate/CMakeLists.txt b/quantum/gate/CMakeLists.txt index 55766fb17..827450d99 100644 --- a/quantum/gate/CMakeLists.txt +++ b/quantum/gate/CMakeLists.txt @@ -34,7 +34,4 @@ add_subdirectory(compilers) add_subdirectory(accelerators) add_subdirectory(utils) -# Gather tests -file (GLOB test_files tests/*.cpp) -add_tests("${test_files}" "${CMAKE_CURRENT_SOURCE_DIR}/utils;${CMAKE_CURRENT_SOURCE_DIR}" "${Boost_LIBRARIES}") diff --git a/quantum/gate/accelerators/CMakeLists.txt b/quantum/gate/accelerators/CMakeLists.txt index 2bb538200..121ba18ad 100644 --- a/quantum/gate/accelerators/CMakeLists.txt +++ b/quantum/gate/accelerators/CMakeLists.txt @@ -28,11 +28,10 @@ # Initial API and implementation - Alex McCaskey # #**********************************************************************************/ -#add_subdirectory(compilers) -#add_subdirectory(accelerators) -#add_subdirectory(utils) + +include_directories(${CMAKE_SOURCE_DIR}/tpls/common/tpls/fire/tensor) # Gather tests -#file (GLOB test_files tests/*.cpp) -#add_tests("${test_files}" "${CMAKE_CURRENT_SOURCE_DIR}/utils;${CMAKE_CURRENT_SOURCE_DIR}" "${Boost_LIBRARIES}") +file (GLOB test_files tests/*.cpp) +add_tests("${test_files}" "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_SOURCE_DIR}/tpls/common/tpls/fire/tensors;${CMAKE_SOURCE_DIR}/tpls/common/tpls/fire/tensors/impl;${CMAKE_SOURCE_DIR}/tpls/common/tpls/fire/tpls/eigen" "${Boost_LIBRARIES}") diff --git a/quantum/gate/accelerators/FireTensorAccelerator.hpp b/quantum/gate/accelerators/FireTensorAccelerator.hpp new file mode 100644 index 000000000..e02bcc0bb --- /dev/null +++ b/quantum/gate/accelerators/FireTensorAccelerator.hpp @@ -0,0 +1,84 @@ +/*********************************************************************************** + * Copyright (c) 2016, UT-Battelle + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the xacc nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Contributors: + * Initial API and implementation - Alex McCaskey + * + **********************************************************************************/ +#ifndef QUANTUM_GATE_ACCELERATORS_FIRETENSORACCELERATOR_HPP_ +#define QUANTUM_GATE_ACCELERATORS_FIRETENSORACCELERATOR_HPP_ + +#include "Accelerator.hpp" +#include "Tensor.hpp" +#include "Graph.hpp" +#include "QasmToGraph.hpp" +#include "GraphIR.hpp" + +namespace xacc { +namespace quantum { + +/** + * + */ +class FireTensorAccelerator : public Accelerator { +public: + + virtual AcceleratorType getType() { + return AcceleratorType::qpu_gate; + } + + virtual std::vector<xacc::IRTransformation> getIRTransformations() { + std::vector<xacc::IRTransformation> v; + return v; + } + + virtual void execute(const std::shared_ptr<xacc::IR> ir) { + + using GraphType = qci::common::Graph<CircuitNode>; + + // Cast to a GraphIR, if we can... + auto graphir = std::dynamic_pointer_cast<xacc::GraphIR<GraphType>>(ir); + if (!graphir) { + QCIError("Invalid IR - this Accelerator on accepts GraphIR<Graph<CircuitNode>>."); + } + + } + + virtual ~FireTensorAccelerator() { + } + +protected: + bool canAllocate(const int N) { + return true; + } + +}; +} +} + + + +#endif /* QUANTUM_GATE_ACCELERATORS_FIRETENSORACCELERATOR_HPP_ */ diff --git a/quantum/gate/Qubits.hpp b/quantum/gate/accelerators/Qubits.hpp similarity index 100% rename from quantum/gate/Qubits.hpp rename to quantum/gate/accelerators/Qubits.hpp diff --git a/quantum/gate/accelerators/tests/FireTensorAcceleratorTester.cpp b/quantum/gate/accelerators/tests/FireTensorAcceleratorTester.cpp new file mode 100644 index 000000000..19dda0d9b --- /dev/null +++ b/quantum/gate/accelerators/tests/FireTensorAcceleratorTester.cpp @@ -0,0 +1,40 @@ +/*********************************************************************************** + * Copyright (c) 2016, UT-Battelle + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the xacc nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Contributors: + * Initial API and implementation - Alex McCaskey + * + **********************************************************************************/ +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MODULE FireTensorAcceleratorTester + +#include <boost/test/included/unit_test.hpp> +#include "FireTensorAccelerator.hpp" + + +BOOST_AUTO_TEST_CASE(checkConstruction) { +} + diff --git a/quantum/gate/tests/QubitsTester.cpp b/quantum/gate/accelerators/tests/QubitsTester.cpp similarity index 100% rename from quantum/gate/tests/QubitsTester.cpp rename to quantum/gate/accelerators/tests/QubitsTester.cpp diff --git a/quantum/gate/utils/CMakeLists.txt b/quantum/gate/utils/CMakeLists.txt index 38812e294..a48e77a3d 100644 --- a/quantum/gate/utils/CMakeLists.txt +++ b/quantum/gate/utils/CMakeLists.txt @@ -33,5 +33,9 @@ set (PACKAGE_DESCIPTION "Quantum XACC Common Utilities") file (GLOB HEADERS *.hpp) +# Gather tests +file (GLOB test_files tests/*.cpp) +add_tests("${test_files}" "${CMAKE_CURRENT_SOURCE_DIR}" "${Boost_LIBRARIES}") + install(FILES ${HEADERS} DESTINATION include) diff --git a/quantum/gate/tests/QasmToGraphTester.cpp b/quantum/gate/utils/tests/QasmToGraphTester.cpp similarity index 100% rename from quantum/gate/tests/QasmToGraphTester.cpp rename to quantum/gate/utils/tests/QasmToGraphTester.cpp diff --git a/xacc/accelerator/Accelerator.hpp b/xacc/accelerator/Accelerator.hpp index 4192ac41c..af8c41b27 100644 --- a/xacc/accelerator/Accelerator.hpp +++ b/xacc/accelerator/Accelerator.hpp @@ -57,21 +57,22 @@ public: * Reference to the number of bits */ static constexpr int N = Number; -private: - - /** - * The bits themselves - */ - std::bitset<(size_t)Number> bits; /** * Return the current state of the bits * @return */ - std::bitset<(size_t)Number> toBits() { + std::bitset<(size_t) Number> toBits() { return bits; } +private: + + /** + * The bits themselves + */ + std::bitset<(size_t)Number> bits; + }; /** @@ -87,7 +88,7 @@ private: * instances that transform XACC IR to be amenable to execution * on the hardware. */ -class Accelerator { +class Accelerator : public qci::common::QCIObject { public: diff --git a/xacc/program/Program.hpp b/xacc/program/Program.hpp index 180365de2..b8789a820 100644 --- a/xacc/program/Program.hpp +++ b/xacc/program/Program.hpp @@ -150,8 +150,7 @@ public: xaccIR->persist(ostr); } - // Execute IR Translations and Optimizations - // FIXME GET LIST OF TRANSFORMATION FROM + // Execute IR Translations auto acceleratorType = accelerator->getType(); auto defaultTransforms = getAcceleratorIndependentTransformations(acceleratorType); auto accDepTransforms = accelerator->getIRTransformations(); -- GitLab