31#ifndef _CONTROLLER_INTERFACE_H_
32#define _CONTROLLER_INTERFACE_H_
39template <
typename Time>
class IRemapper;
69 std::shared_ptr<Circuits::Circuit<Time>>
circuit;
86template <
typename Time>
class INetwork;
99template <
typename Time = Types::time_type>
157 virtual std::shared_ptr<Distribution::IRemapper<Time>>
173 virtual std::shared_ptr<Circuits::Circuit<Time>>
185 virtual std::shared_ptr<Graphs::IOptimiser<Time>>
GetOptimiser()
const = 0;
220 virtual std::shared_ptr<Schedulers::IScheduler<Time>>
Circuit class for holding the sequence of operations.
Interface for optimiser classes.
The controller host interface.
virtual std::shared_ptr< Circuits::Circuit< Time > > DistributeCircuit(const std::shared_ptr< INetwork< Time > > &network, const std::shared_ptr< Circuits::Circuit< Time > > &circuit)=0
Distributes the circuit on the hosts.
virtual bool GetOptimizeCircuit() const =0
Get circuit optimization.
virtual bool GetOptimizeRotationGates() const =0
virtual std::shared_ptr< Circuits::Circuit< Time > > DoNetworkSpecificConversionsForDistribution(const std::shared_ptr< INetwork< Time > > &network, const std::shared_ptr< Circuits::Circuit< Time > > &circuit)=0
Convert the circuit for distribution for specific networks.
virtual std::shared_ptr< Graphs::IOptimiser< Time > > GetOptimiser() const =0
Returns the optimiser used.
virtual void SetRemapper(const std::shared_ptr< Distribution::IRemapper< Time > > &remapper)=0
Changes the remapper that is used for remapping a circuit to a distributed one.
virtual void SetOptimizeRotationGates(bool val=true)=0
virtual void CreateOptimiser(Graphs::OptimiserType type)=0
Creates an optimiser.
virtual void SetOptimizeCircuit(bool optimize=true)=0
Set circuit optimization.
virtual void CreateScheduler(const std::shared_ptr< INetwork< Time > > &network, SchedulerType schType=SchedulerType::kNoEntanglementQubitsParallel)=0
Create the scheduler for the network.
virtual std::shared_ptr< Circuits::Circuit< Time > > SplitCompositeOperations(const std::shared_ptr< INetwork< Time > > &network, const std::shared_ptr< Circuits::Circuit< Time > > &circuit)=0
Splits the composite operations from the circuit.
virtual std::shared_ptr< Schedulers::IScheduler< Time > > GetScheduler() const =0
Get the scheduler for the network.
virtual std::shared_ptr< Distribution::IRemapper< Time > > GetRemapper() const =0
Gets the remapper that is used for remapping a circuit to a distributed one.
OptimiserType
The type of optimiser.
SchedulerType
The type of the network scheduler for scheduling execution of multiple circuits.
@ kNoEntanglementQubitsParallel
ExecuteCircuit(const std::shared_ptr< Circuits::Circuit< Time > > &circuit, size_t shots)
bool operator==(const ExecuteCircuit< Time > &other) const
virtual ~ExecuteCircuit()=default
std::shared_ptr< Circuits::Circuit< Time > > circuit