14#ifndef _SCHEDULER_INTERFACE_H_
15#define _SCHEDULER_INTERFACE_H_
33template <
typename Time = Types::time_type>
80template <
typename Time = Types::time_type>
struct ExecuteJob {
86 std::shared_ptr<Circuits::Circuit<Time>>
circ;
110template <
typename Time = Types::time_type>
111class IScheduler :
public std::enable_shared_from_this<IScheduler<Time>> {
118 virtual void SetNetwork(
const std::shared_ptr<NetworkClass> &n) {
122 std::shared_ptr<NetworkClass>
GetNetwork()
const {
return network; }
141 virtual std::vector<ExecuteResults>
144 virtual std::shared_ptr<Circuits::Circuit<Time>>
149 virtual const std::vector<std::vector<CircuitInfo<Time>>> &
157 virtual std::shared_ptr<Circuits::Circuit<Time>>
190 std::shared_ptr<NetworkClass>
Circuit class for holding the sequence of operations.
std::unordered_map< Types::qubit_t, Types::qubit_t > BitMapping
The (qu)bit mapping for remapping.
virtual const std::vector< std::vector< CircuitInfo< Time > > > & GetScheduledSteps() const =0
virtual void ExecuteCurrentStep()=0
virtual bool GetDepthEstimationMethod() const =0
virtual bool SetCurrentStep(size_t step)=0
virtual void SetUseCost(bool useCost=true)=0
virtual std::vector< ExecuteResults > ExecuteScheduled(const std::vector< ExecuteCircuit< Time > > &circuits)=0
Schedule and execute circuits on the network.
virtual bool GetAddResetsAtEnd() const =0
virtual void CollectResults(const ExecuteResults &res, size_t nrShots)=0
virtual void SetAddResetsAtStart(bool addResets=true)=0
virtual std::vector< ExecuteResults > ExecuteScheduledSteps()=0
virtual std::vector< ExecuteResults > GetResults() const =0
virtual void SetDepthEstimationMethod(bool useSteps=true)=0
virtual void CollectResultsForHost(const ExecuteResults &res, size_t hostId, size_t nrShots)=0
typename Network::INetwork< Time > NetworkClass
virtual size_t GetCurrentShots() const =0
virtual Network::SchedulerType GetType() const =0
virtual void SetNetwork(const std::shared_ptr< NetworkClass > &n)
typename NetworkClass::ExecuteResults ExecuteResults
std::shared_ptr< NetworkClass > GetNetwork() const
virtual std::shared_ptr< Circuits::Circuit< Time > > GetScheduledCircuit() const =0
virtual bool GetUseCost() const =0
virtual std::shared_ptr< Circuits::Circuit< Time > > GetScheduledCircuitForHost(size_t hostId) const =0
virtual void SetScheduledSteps(const std::vector< std::vector< CircuitInfo< Time > > > &steps)=0
virtual ~IScheduler()=default
virtual bool GetAddResetsAtStart() const =0
virtual void SetAddResetsAtEnd(bool addResets=true)=0
SchedulerType
The type of the network scheduler for scheduling execution of multiple circuits.
CircuitInfo(const std::shared_ptr< Circuits::Circuit< Time > > &circuit, size_t shots, size_t id, size_t gatesDepth, Time timeDepth, size_t qubits)
typename Circuits::Circuit< Time >::BitMapping BitMapping
bool operator==(const CircuitInfo< Time > &other) const
A way to pack together a circuit and the number of shots for its execution.
std::shared_ptr< Circuits::Circuit< Types::time_type > > circuit
A struct representing a job to be executed on a host.
typename NetworkClass::ExecuteResults ExecuteResults
typename Network::INetwork< Time > NetworkClass
std::shared_ptr< NetworkClass > hostNetwork
std::shared_ptr< Circuits::Circuit< Time > > circ
size_t GetJobCount() const