XACC
qpt.hpp
1 /*******************************************************************************
2  * Copyright (c) 2019 UT-Battelle, LLC.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * and Eclipse Distribution License v1.0 which accompanies this
6  * distribution. The Eclipse Public License is available at
7  * http://www.eclipse.org/legal/epl-v10.html and the Eclipse Distribution
8  *License is available at https://eclipse.org/org/documents/edl-v10.php
9  *
10  * Contributors:
11  * Alexander J. McCaskey - initial API and implementation
12  *******************************************************************************/
13 #ifndef XACC_ALGORITHM_QPT_HPP_
14 #define XACC_ALGORITHM_QPT_HPP_
15 
16 #include "Algorithm.hpp"
17 
18 namespace xacc {
19 namespace algorithm {
20 class QPT : public Algorithm {
21  CompositeInstruction *circuit;
22  Accelerator *qpu;
23  std::vector<int> qubit_map;
24  bool optimizeCircuit;
25 public:
26  bool initialize(const HeterogeneousMap &parameters) override;
27  const std::vector<std::string> requiredParameters() const override;
28  void execute(const std::shared_ptr<AcceleratorBuffer> buffer) const override;
29 
30  double calculate(const std::string &calculation_task,
31  const std::shared_ptr<AcceleratorBuffer> buffer,
32  const HeterogeneousMap &extra_data = {}) override;
33 
34  const std::string name() const override { return "qpt"; }
35  const std::string description() const override { return ""; }
36  DEFINE_ALGORITHM_CLONE(QPT)
37 };
38 } // namespace algorithm
39 } // namespace xacc
40 #endif
Definition: Algorithm.hpp:34
Definition: Accelerator.hpp:25
Definition: Accelerator.hpp:44
Definition: heterogeneous.hpp:45
const std::string name() const override
Definition: qpt.hpp:34
Definition: CompositeInstruction.hpp:72
Definition: qpt.hpp:20
const std::string description() const override
Definition: qpt.hpp:35