Documentation for microsoft::quantum::QirAdaptorFactory

microsoft::quantum::QirAdaptorFactory

Inherited by microsoft::quantum::ConfigurableQirAdaptorFactory

Public Types

Name
using llvm::PassBuilder PassBuilder
using llvm::OptimizationLevel OptimizationLevel
using llvm::FunctionAnalysisManager FunctionAnalysisManager
using std::shared_ptr< QirAdaptor > QirAdaptorPtr
using std::shared_ptr< BasicAllocationManager > BasicAllocationManagerPtr
using llvm::FunctionPassManager FunctionPassManager
template <typename R >
using std::function< void(R const &, QirAdaptor &)>
SetupFunction
using std::function< void(QirAdaptorFactory &, QirAdaptor &)> SetupFunctionWrapper
Wrapper function type for invoking the adaptor setup function.
using std::vector< std::pair< String, SetupFunctionWrapper > > Components
List of components to be configured.
using ILogger::ILoggerPtr ILoggerPtr

Public Functions

Name
QirAdaptorFactory(ConfigurationManager & configuration_manager)
~QirAdaptorFactory() =default
QirAdaptorFactory(QirAdaptorFactory const & )
QirAdaptorFactory(QirAdaptorFactory && )
QirAdaptorFactory & operator=(QirAdaptorFactory const & )
QirAdaptorFactory & operator=(QirAdaptorFactory && )
ConfigurationManager & configurationManager()
ConfigurationManager const & configurationManager() const
QirAdaptorPtr newQirAdaptor(String const & name, OptimizationLevel const & optimization_level, bool debug)
void newAdaptorContext(String const & name, bool debug =false)
Prepares a new adaptor context.
void addComponent(String const & name)
Adds a component to the current context.
QirAdaptorPtr finalizeAdaptor()
Finalizes the context and returns the QIR adaptor.
template <typename R >
void
registerAdaptorComponent(String const & id, SetupFunction< R > setup)
template <typename R >
void
replaceAdaptorComponent(String const & id, SetupFunction< R > setup)
template <typename R >
void
registerAnonymousAdaptorComponent(SetupFunction< R > setup)
void replicateAdaptorComponent(String const & id)
bool isDebugMode() const
Flag indicating whether we are operating in debug mode or not.
void setupDefaultComponentPipeline()
Sets the default pipeline up.
void setLogger(ILoggerPtr const & logger =nullptr)

Protected Functions

Name
llvm::ModulePassManager createValidationModulePass(PassBuilder & pass_builder, OptimizationLevel const & optimization_level, bool debug)

Public Types Documentation

using PassBuilder

using microsoft::quantum::QirAdaptorFactory::PassBuilder =  llvm::PassBuilder;

using OptimizationLevel

using microsoft::quantum::QirAdaptorFactory::OptimizationLevel =  llvm::OptimizationLevel;

using FunctionAnalysisManager

using microsoft::quantum::QirAdaptorFactory::FunctionAnalysisManager =  llvm::FunctionAnalysisManager;

using QirAdaptorPtr

using microsoft::quantum::QirAdaptorFactory::QirAdaptorPtr =  std::shared_ptr<QirAdaptor>;

using BasicAllocationManagerPtr

using microsoft::quantum::QirAdaptorFactory::BasicAllocationManagerPtr =  std::shared_ptr<BasicAllocationManager>;

using FunctionPassManager

using microsoft::quantum::QirAdaptorFactory::FunctionPassManager =  llvm::FunctionPassManager;

using SetupFunction

template <typename R >
using microsoft::quantum::QirAdaptorFactory::SetupFunction =  std::function<void(R const&, QirAdaptor&)>;

Setup function that uses a configuration type R to configure the adaptor and/or generator.

using SetupFunctionWrapper

using microsoft::quantum::QirAdaptorFactory::SetupFunctionWrapper =  std::function<void(QirAdaptorFactory&, QirAdaptor&)>;

Wrapper function type for invoking the adaptor setup function.

using Components

using microsoft::quantum::QirAdaptorFactory::Components =  std::vector<std::pair<String, SetupFunctionWrapper> >;

List of components to be configured.

using ILoggerPtr

using microsoft::quantum::QirAdaptorFactory::ILoggerPtr =  ILogger::ILoggerPtr;

Public Functions Documentation

function QirAdaptorFactory

inline explicit QirAdaptorFactory(
    ConfigurationManager & configuration_manager
)

function ~QirAdaptorFactory

~QirAdaptorFactory() =default

function QirAdaptorFactory

QirAdaptorFactory(
    QirAdaptorFactory const & 
)

function QirAdaptorFactory

QirAdaptorFactory(
    QirAdaptorFactory && 
)

function operator=

QirAdaptorFactory & operator=(
    QirAdaptorFactory const & 
)

function operator=

QirAdaptorFactory & operator=(
    QirAdaptorFactory && 
)

function configurationManager

ConfigurationManager & configurationManager()

Reference to configuration manager. This property allows to access and modify configurations of the generator. This property is intended for managing the configuration.

function configurationManager

ConfigurationManager const  & configurationManager() const

Constant reference to the configuration manager. This property allows read access to the configuration manager and is intended for adaptor generation.

function newQirAdaptor

QirAdaptorPtr newQirAdaptor(
    String const & name,
    OptimizationLevel const & optimization_level,
    bool debug
)

Creates a new adaptor based on the registered components, optimization level and debug requirements. The returned adaptor can be applied to an IR to transform it in accordance with the configurations given.

function newAdaptorContext

void newAdaptorContext(
    String const & name,
    bool debug =false
)

Prepares a new adaptor context.

function addComponent

void addComponent(
    String const & name
)

Adds a component to the current context.

function finalizeAdaptor

QirAdaptorPtr finalizeAdaptor()

Finalizes the context and returns the QIR adaptor.

function registerAdaptorComponent

template <typename R >
void registerAdaptorComponent(
    String const & id,
    SetupFunction< R > setup
)

Registers a new adaptor component with a given configuration R. The adaptor component is given a name and a setup function which is responsible for configuring the adaptor in accordance with the configuration.

function replaceAdaptorComponent

template <typename R >
void replaceAdaptorComponent(
    String const & id,
    SetupFunction< R > setup
)

Replaces a adaptor component. This function is useful for testing purposes and alteration to the default set of components. For instance, one can setup a production set of components and then replace a single component to test the effects of this single replacement while keeping all other components actually as they are in production.

function registerAnonymousAdaptorComponent

template <typename R >
void registerAnonymousAdaptorComponent(
    SetupFunction< R > setup
)

Registers a new adaptor component with a given configuration R. Unlike registerAdaptorComponent this component will not have an ID.

function replicateAdaptorComponent

void replicateAdaptorComponent(
    String const & id
)

Replicates an existing component as an anonymous component. The original component is found by its id and then copied as an anonymous component which is appended to the list of components.

function isDebugMode

bool isDebugMode() const

Flag indicating whether we are operating in debug mode or not.

function setupDefaultComponentPipeline

void setupDefaultComponentPipeline()

Sets the default pipeline up.

More unroll parameters https://llvm.org/doxygen/LoopUnrollPass_8cpp.html

Header https://llvm.org/doxygen/LoopUnrollPass_8h.html

function setLogger

void setLogger(
    ILoggerPtr const & logger =nullptr
)

Protected Functions Documentation

function createValidationModulePass

llvm::ModulePassManager createValidationModulePass(
    PassBuilder & pass_builder,
    OptimizationLevel const & optimization_level,
    bool debug
)

Internal function that creates a module pass for QIR validation. At the moment, this function is a placeholder for future functionality.


Updated on 1 August 2023 at 16:25:10 UTC