Maestro 0.1.0
Unified interface for quantum circuit simulation
Loading...
Searching...
No Matches
Schedulers::IScheduler< Time > Class Template Referenceabstract

The scheduler interface. More...

#include <Scheduler.h>

Inheritance diagram for Schedulers::IScheduler< Time >:

Public Types

using NetworkClass = typename Network::INetwork<Time>
using ExecuteResults = typename NetworkClass::ExecuteResults

Public Member Functions

virtual ~IScheduler ()=default
virtual void SetNetwork (const std::shared_ptr< NetworkClass > &n)
std::shared_ptr< NetworkClassGetNetwork () const
virtual std::vector< ExecuteResultsExecuteScheduled (const std::vector< ExecuteCircuit< Time > > &circuits)=0
 Schedule and execute circuits on the network.
virtual std::shared_ptr< Circuits::Circuit< Time > > GetScheduledCircuit () const =0
virtual std::vector< ExecuteResultsExecuteScheduledSteps ()=0
virtual const std::vector< std::vector< CircuitInfo< Time > > > & GetScheduledSteps () const =0
virtual void SetScheduledSteps (const std::vector< std::vector< CircuitInfo< Time > > > &steps)=0
virtual bool SetCurrentStep (size_t step)=0
virtual std::shared_ptr< Circuits::Circuit< Time > > GetScheduledCircuitForHost (size_t hostId) const =0
virtual size_t GetCurrentShots () const =0
virtual void ExecuteCurrentStep ()=0
virtual void SetDepthEstimationMethod (bool useSteps=true)=0
virtual bool GetDepthEstimationMethod () const =0
virtual void SetUseCost (bool useCost=true)=0
virtual bool GetUseCost () const =0
virtual void SetAddResetsAtEnd (bool addResets=true)=0
virtual bool GetAddResetsAtEnd () const =0
virtual void SetAddResetsAtStart (bool addResets=true)=0
virtual bool GetAddResetsAtStart () const =0
virtual std::vector< ExecuteResultsGetResults () const =0
virtual void CollectResults (const ExecuteResults &res, size_t nrShots)=0
virtual void CollectResultsForHost (const ExecuteResults &res, size_t hostId, size_t nrShots)=0
virtual Network::SchedulerType GetType () const =0

Detailed Description

template<typename Time = Types::time_type>
class Schedulers::IScheduler< Time >

The scheduler interface.

The scheduler interface. Must be derived from by the particular scheduler implementations.

Template Parameters
TimeThe time type to use for the scheduler.
See also
Network::INetwork

Definition at line 111 of file Scheduler.h.

Member Typedef Documentation

◆ ExecuteResults

template<typename Time = Types::time_type>
using Schedulers::IScheduler< Time >::ExecuteResults = typename NetworkClass::ExecuteResults

Definition at line 114 of file Scheduler.h.

◆ NetworkClass

template<typename Time = Types::time_type>
using Schedulers::IScheduler< Time >::NetworkClass = typename Network::INetwork<Time>

Definition at line 113 of file Scheduler.h.

Constructor & Destructor Documentation

◆ ~IScheduler()

template<typename Time = Types::time_type>
virtual Schedulers::IScheduler< Time >::~IScheduler ( )
virtualdefault

Member Function Documentation

◆ CollectResults()

template<typename Time = Types::time_type>
virtual void Schedulers::IScheduler< Time >::CollectResults ( const ExecuteResults & res,
size_t nrShots )
pure virtual

◆ CollectResultsForHost()

template<typename Time = Types::time_type>
virtual void Schedulers::IScheduler< Time >::CollectResultsForHost ( const ExecuteResults & res,
size_t hostId,
size_t nrShots )
pure virtual

◆ ExecuteCurrentStep()

template<typename Time = Types::time_type>
virtual void Schedulers::IScheduler< Time >::ExecuteCurrentStep ( )
pure virtual

◆ ExecuteScheduled()

template<typename Time = Types::time_type>
virtual std::vector< ExecuteResults > Schedulers::IScheduler< Time >::ExecuteScheduled ( const std::vector< ExecuteCircuit< Time > > & circuits)
pure virtual

Schedule and execute circuits on the network.

Execute the circuits on the network, scheduling their execution and distributing the operations to the hosts. The way the circuits are distributed to the hosts depends on the specific interface implementations. The way they are scheduled depends on the network scheduler and parametrization.

Parameters
circuitsThe circuits to execute, along with the number of shots.
Returns
A vector of maps with the results of each circuit execution, where the key is the qubit id and the value is the number of times the qubit was measured to be 1.
See also
Circuits::Circuit
ExecuteCircuit
Network::INetwork

◆ ExecuteScheduledSteps()

template<typename Time = Types::time_type>
virtual std::vector< ExecuteResults > Schedulers::IScheduler< Time >::ExecuteScheduledSteps ( )
pure virtual

◆ GetAddResetsAtEnd()

template<typename Time = Types::time_type>
virtual bool Schedulers::IScheduler< Time >::GetAddResetsAtEnd ( ) const
pure virtual

◆ GetAddResetsAtStart()

template<typename Time = Types::time_type>
virtual bool Schedulers::IScheduler< Time >::GetAddResetsAtStart ( ) const
pure virtual

◆ GetCurrentShots()

template<typename Time = Types::time_type>
virtual size_t Schedulers::IScheduler< Time >::GetCurrentShots ( ) const
pure virtual

◆ GetDepthEstimationMethod()

template<typename Time = Types::time_type>
virtual bool Schedulers::IScheduler< Time >::GetDepthEstimationMethod ( ) const
pure virtual

◆ GetNetwork()

template<typename Time = Types::time_type>
std::shared_ptr< NetworkClass > Schedulers::IScheduler< Time >::GetNetwork ( ) const
inline

Definition at line 122 of file Scheduler.h.

◆ GetResults()

template<typename Time = Types::time_type>
virtual std::vector< ExecuteResults > Schedulers::IScheduler< Time >::GetResults ( ) const
pure virtual

◆ GetScheduledCircuit()

template<typename Time = Types::time_type>
virtual std::shared_ptr< Circuits::Circuit< Time > > Schedulers::IScheduler< Time >::GetScheduledCircuit ( ) const
pure virtual

◆ GetScheduledCircuitForHost()

template<typename Time = Types::time_type>
virtual std::shared_ptr< Circuits::Circuit< Time > > Schedulers::IScheduler< Time >::GetScheduledCircuitForHost ( size_t hostId) const
pure virtual

◆ GetScheduledSteps()

template<typename Time = Types::time_type>
virtual const std::vector< std::vector< CircuitInfo< Time > > > & Schedulers::IScheduler< Time >::GetScheduledSteps ( ) const
pure virtual

◆ GetType()

template<typename Time = Types::time_type>
virtual Network::SchedulerType Schedulers::IScheduler< Time >::GetType ( ) const
pure virtual

◆ GetUseCost()

template<typename Time = Types::time_type>
virtual bool Schedulers::IScheduler< Time >::GetUseCost ( ) const
pure virtual

◆ SetAddResetsAtEnd()

template<typename Time = Types::time_type>
virtual void Schedulers::IScheduler< Time >::SetAddResetsAtEnd ( bool addResets = true)
pure virtual

◆ SetAddResetsAtStart()

template<typename Time = Types::time_type>
virtual void Schedulers::IScheduler< Time >::SetAddResetsAtStart ( bool addResets = true)
pure virtual

◆ SetCurrentStep()

template<typename Time = Types::time_type>
virtual bool Schedulers::IScheduler< Time >::SetCurrentStep ( size_t step)
pure virtual

◆ SetDepthEstimationMethod()

template<typename Time = Types::time_type>
virtual void Schedulers::IScheduler< Time >::SetDepthEstimationMethod ( bool useSteps = true)
pure virtual

◆ SetNetwork()

template<typename Time = Types::time_type>
virtual void Schedulers::IScheduler< Time >::SetNetwork ( const std::shared_ptr< NetworkClass > & n)
inlinevirtual

Definition at line 118 of file Scheduler.h.

◆ SetScheduledSteps()

template<typename Time = Types::time_type>
virtual void Schedulers::IScheduler< Time >::SetScheduledSteps ( const std::vector< std::vector< CircuitInfo< Time > > > & steps)
pure virtual

◆ SetUseCost()

template<typename Time = Types::time_type>
virtual void Schedulers::IScheduler< Time >::SetUseCost ( bool useCost = true)
pure virtual

The documentation for this class was generated from the following files: