Class session

Class Documentation

class session

A session of the QB SDK quantum programming and execution framework.

Public Functions

session()

Construct a new session object.

Some parameters are uninitialized, e.g., number of qubits (qns_). These parameters can be set manually (using corresponding setter methods) or via provided presets, e.g., qb12().

session(const std::string &name)

Construct a new session object with a specific name.

Parameters:

name – Session name

session(const bool debug)

Construct a new session object with a specific debug flag.

Parameters:

debug – Debug flag. Printing debug messages to console if true.

void set_infile(const std::string &infile)

Set the input QASM source file.

Parameters:

infile – Full path to the source file

void set_infiles(const VectorString &infiles)

Set the list input QASM source files.

Parameters:

infiles – A list of paths to source files

const VectorString &get_infiles() const

Get the list input QASM source files.

Returns:

List input QASM source files

void set_instring(const std::string &instring)

Set the input QASM source string.

Parameters:

instring – Input source string

void set_instrings(const VectorString &instrings)

Set the list of input QASM source strings.

Parameters:

instrings – Input source strings

const VectorString &get_instrings() const

Get the input QASM source strings of the session.

Returns:

List of source strings

void set_irtarget_m(const std::shared_ptr<xacc::CompositeInstruction> &irtarget_m)

Set the irtarget (xacc::CompositeInstruction) object.

Note

This xacc::CompositeInstruction can be manually constructed (i.e., building the IR tree using XACC). If the irtarget is provided instead of QASM strings or files, the QASM compilation step will be skipped.

Parameters:

irtarget_m – Input IR object

void set_irtarget_ms(const std::vector<std::vector<std::shared_ptr<xacc::CompositeInstruction>>> &irtarget_ms)

Set the list of irtarget (xacc::CompositeInstruction) objects.

Parameters:

irtarget_ms – List of input IR objects

const std::vector<std::vector<std::shared_ptr<xacc::CompositeInstruction>>> &get_irtarget_ms() const

Get the list of input IR objects.

Returns:

List of input IR objects

void set_include_qb(const std::string &include_qb)

Set the path to the OpenQASM include file.

Parameters:

include_qb – Path to the OpenQASM include file

void set_include_qbs(const VectorString &include_qbs)

Set the list of paths to the OpenQASM include files.

Parameters:

include_qbs – Paths to the OpenQASM include files

const VectorString &get_include_qbs() const

Get the list of paths to the OpenQASM include files.

Returns:

Paths to the OpenQASM include files

void set_remote_backend_database_path(const std::string &remote_backend_database)

Set the path to the remote backend database yaml file.

Parameters:

remote_backend_database_path – Path to the remote backend database yaml file.

const std::string &get_remote_backend_database_path() const

Get the path to the remote backend database yaml file.

Returns:

Path to the remote backend database yaml file.

void set_acc(const std::string &acc)

Set the backend accelerator.

Parameters:

acc – Name of the accelerator

void set_accs(const VectorString &accs)

Set the list of backend accelerators.

Parameters:

accs – List of backend accelerator names

const VectorString &get_accs() const

Get the list of backend accelerators.

Returns:

List of backend accelerator names

void set_aer_sim_type(const std::string &sim_type)

Set the AER backend simulator type.

Parameters:

sim_type – Simulator type

void set_aer_sim_types(const VectorString &sim_types)

Set the AER backend simulator types.

Parameters:

sim_types – Simulator type

const VectorString &get_aer_sim_types() const

Get the AER backend simulator type.

Returns:

Simulator type

void set_random(const size_t &in_random)

Set the depth of the auto-generated random circuit.

Parameters:

in_random – Circuit depth

void set_randoms(const VectorN &in_random)

Set the depths of the auto-generated random circuits.

Parameters:

in_random – Circuit depth values

const VectorN &get_randoms() const

Set the depths of the auto-generated random circuits.

Returns:

Circuit depth values

void set_xasm(const bool &in_xasm)

Set the XASM input flag.

True if the input is in XASM dialect.

Parameters:

in_xasm – XASM input flag

void set_xasms(const VectorBool &in_xasm)

Set the XASM input flags.

Parameters:

in_xasm – XASM input flags

const VectorBool &get_xasms() const

Get the XASM input flag.

Returns:

XASM input flags

void set_quil1(const bool &in_quil1)

Set the Quil input flag.

True if the input is in Quil (v1) dialect.

Parameters:

in_quil1 – Quil input flag

void set_quil1s(const VectorBool &in_quil1)

Set the Quil input flags.

Parameters:

in_quil1 – Quil input flags

const VectorBool &get_quil1s() const

Get the Quil input flags.

Returns:

Quil input flags

void set_noplacement(const bool &in_noplacement)

Set the noplacement flag.

True to disable circuit placement.

Parameters:

in_noplacement – noplacement flag

void set_noplacements(const VectorBool &in_noplacement)

Set the noplacement flags.

Parameters:

in_noplacement – noplacement flags

const VectorBool &get_noplacements() const

Get the noplacement flag.

Returns:

noplacement flags

void set_placement(const std::string &in_placement)

Set the circuit placement method.

Parameters:

in_placement – Name of the circuit placement module

void set_placements(const VectorString &in_placements)

Set the circuit placement methods.

Parameters:

in_placements – Names of the circuit placement modules

const VectorString &get_placements() const

Get the circuit placement methods.

Returns:

Names of the circuit placement modules

void set_nooptimise(const bool &in_nooptimise)

Set the nooptimise flag.

True to disable circuit optimization

Parameters:

in_nooptimise – nooptimise flag

void set_nooptimises(const VectorBool &in_nooptimise)

Set the nooptimise flags.

Parameters:

in_nooptimise – nooptimise flags

const VectorBool &get_nooptimises() const

Get the nooptimise flags.

Returns:

nooptimise flags

void set_circuit_opt(const Passes &in_passes)

Set the circuit optimization passes.

Parameters:

in_opts – Sequence of optimization passes to apply

void set_circuit_opts(const Table2d<Passes> &in_passes)

Set the circuit optimization passes.

Parameters:

in_opts – 2-D table of sequences of optimization passes to apply

const Table2d<Passes> &get_circuit_opts() const

Get the circuit optimization passes.

Returns:

2-D table of sequences of optimization passes to apply

void set_nosim(const bool &in_nosim)

Set the nosim flag.

True to disable circuit simulation, e.g., dry-run to inspect transpilation and resource estimation only.

Parameters:

in_nosim – nosim flag

void set_nosims(const VectorBool &in_nosim)

Set the nosim flags.

Parameters:

in_nosim – nosim flags

const VectorBool &get_nosims() const

Get the nosim flags.

Returns:

nosim flags

void set_noise(const bool &in_noise)

Set the noise simulation flag.

True to enable noisy simulation.

Parameters:

in_noise – Noise flag

void set_noises(const VectorBool &in_noise)

Set the noise simulation flags.

Parameters:

in_noise – Noise flags

const VectorBool &get_noises() const

Get the noise simulation flags.

Returns:

Noise flags

const std::shared_ptr<std::vector<std::complex<double>>> &get_state_vec_raw() const

Get the full state vector (works with QPP backend only!)

Returns:

Full complex state vector as std::vector<std::complex<double>>

void get_state_vec(const bool &in_get_state_vec)

Set the flag to retrieve the state vector.

Parameters:

in_get_state_vec – Flag to retrieve state vector (works with QPP backend only!)

void set_output_oqm_enabled(const bool &in_output_oqm_enabled)

Set the output transpilation and resource estimation flag.

True to enable output transpilation and resource estimation

Parameters:

in_output_oqm_enabled – Config. value

void set_output_oqm_enableds(const VectorBool &in_output_oqm_enabled)

Set the output oqm enableds object.

Parameters:

in_output_oqm_enabled – Config. values

const VectorBool &get_output_oqm_enableds() const

Get the output oqm enableds object.

Returns:

Config. values

void set_notiming(const bool &in_notiming)

Set the notiming configuration flag.

Parameters:

in_notiming – Config. value

void set_notimings(const VectorBool &in_notiming)

Set the notiming configuration flags.

Parameters:

in_notiming – Config. values

const VectorBool &get_notimings() const

Get the notiming configuration flags.

Returns:

Config. values

void set_qn(const size_t &in_qn)

Set the number of qubits.

Parameters:

in_qn – Number of qubits

void set_qns(const VectorN &in_qn)

Set the numbers of qubits.

Parameters:

in_qn – Numbers of qubits

const VectorN &get_qns() const

Get the numbers of qubits.

Returns:

Number of qubits

void set_rn(const size_t &in_rn)

Set the number of repetitions.

Parameters:

in_rn – Number of repetitions

void set_rns(const VectorN &in_rn)

Set the numbers of repetitions.

Parameters:

in_rn – Numbers of repetitions

const VectorN &get_rns() const

Get the numbers of repetitions.

Returns:

Numbers of repetitions

void set_sn(const size_t &in_sn)

Set the number of measurement shots.

Parameters:

in_sn – Number of shots

void set_sns(const VectorN &in_sn)

Set the number of measurement shots.

Parameters:

in_sn – Number of shots

const VectorN &get_sns() const

Get the number of measurement shots.

Returns:

Number of shots

void set_theta(const ND &in_theta)

Set the angle variables (theta)

Parameters:

in_theta – Theta values

void set_thetas(const VectorMapND &in_theta)

Set the angle variables (theta)

Parameters:

in_theta – Theta values

const VectorMapND &get_thetas() const

Get the angle variables (theta)

Returns:

Theta values

void set_initial_bond_dimension(const size_t &in_initial_bond_dimension)

Set the initial bond dimension (MPS simulator)

Note

This is only needed if using the “tnqvm” backend accelerator.

Parameters:

in_initial_bond_dimension – Initial MPS bond dimension value

void set_initial_bond_dimensions(const VectorN &in_initial_bond_dimension)

Set the initial bond dimension (MPS simulator)

Parameters:

in_initial_bond_dimension – Initial MPS bond dimension value

const VectorN &get_initial_bond_dimensions() const

Get the initial bond dimension (MPS simulator)

Returns:

Initial MPS bond dimension value

void set_initial_kraus_dimension(const size_t &in_initial_kraus_dimension)

Set the initial kraus dimension (MPS simulator)

Note

This is only needed if using the “tnqvm” backend accelerator.

Parameters:

in_initial_kraus_dimension – Initial MPS kraus dimension value

void set_initial_kraus_dimensions(const VectorN &in_initial_kraus_dimension)

Set the initial kraus dimension (MPS simulator)

Parameters:

in_initial_kraus_dimension – Initial MPS kraus dimension value

const VectorN &get_initial_kraus_dimensions() const

Get the initial kraus dimension (MPS simulator)

Returns:

Initial MPS kraus dimension value

void set_max_bond_dimension(const size_t &in_max_bond_dimension)

Set the maximum bond dimension (MPS simulator)

Note

This is only needed if using the “tnqvm” backend accelerator.

Parameters:

in_max_bond_dimension – Max MPS bond dimension value

void set_max_bond_dimensions(const VectorN &in_max_bond_dimension)

Set the maximum bond dimension (MPS simulator)

Parameters:

in_max_bond_dimension – Max MPS bond dimension value

const VectorN &get_max_bond_dimensions() const

Get the maximum bond dimension (MPS simulator)

Returns:

Max MPS bond dimension value

void set_max_kraus_dimension(const size_t &in_max_kraus_dimension)

Set the maximum kraus dimension (MPS simulator)

Note

This is only needed if using the “tnqvm” backend accelerator.

Parameters:

in_max_kraus_dimension – Max MPS kraus dimension value

void set_max_kraus_dimensions(const VectorN &in_max_kraus_dimension)

Set the maximum kraus dimension (MPS simulator)

Parameters:

in_max_kraus_dimension – Max MPS kraus dimension value

const VectorN &get_max_kraus_dimensions() const

Get the maximum kraus dimension (MPS simulator)

Returns:

Max MPS kraus dimension value

void set_svd_cutoff(const ND &in_svd_cutoff)

Set the SVD cutoff limit (MPS simulator)

Note

This is only needed if using the “tnqvm” backend accelerator.

Parameters:

in_svd_cutoff – SVD cutoff value

void set_svd_cutoffs(const VectorMapND &in_svd_cutoff)

Set the SVD cutoff limit (MPS simulator)

Parameters:

in_svd_cutoff – SVD cutoff value

const VectorMapND &get_svd_cutoffs() const

Get the SVD cutoff limit (MPS simulator)

Returns:

SVD cutoff value

void set_rel_svd_cutoff(const ND &in_rel_svd_cutoff)

Set the relative SVD cutoff limit (MPS simulator)

Note

This is only needed if using the “tnqvm” backend accelerator.

Parameters:

in_rel_svd_cutoff – SVD cutoff value

void set_rel_svd_cutoffs(const VectorMapND &in_rel_svd_cutoff)

Set the relative SVD cutoff limit (MPS simulator)

Parameters:

in_rel_svd_cutoff – SVD cutoff value

const VectorMapND &get_rel_svd_cutoffs() const

Get the relative SVD cutoff limit (MPS simulator)

Returns:

Relative SVD cutoff value

void set_noise_model(const NoiseModel &model)

Set the noise model.

Parameters:

model – The noise model to use

void set_noise_models(const std::vector<std::vector<NoiseModel>> &noise_models)

Set the noise models.

Parameters:

models – The noise models to use

const std::vector<std::vector<NoiseModel>> &get_noise_models() const

Get the noise models.

Returns:

The noise models to use

void set_output_amplitude(const std::map<std::string, std::complex<double>> &in_output_amplitude)

Set the amplitudes for Jensen–Shannon divergence calculation.

Parameters:

in_output_amplitude – Amplitude values

void set_output_amplitudes(const std::vector<std::vector<std::map<std::string, std::complex<double>>>> &in_output_amplitude)

Set the amplitudes for Jensen–Shannon divergence calculation.

Parameters:

in_output_amplitude – Amplitude values

const std::vector<std::vector<std::map<std::string, std::complex<double>>>> &get_output_amplitudes() const

Get the amplitudes for Jensen–Shannon divergence calculation.

Returns:

Amplitude values

void set_debug(const bool &debug)

Set the debug flag (verbose logging)

Parameters:

debug – Config. value

const bool &get_debug() const

Get the debug flag.

Returns:

Config. value

const VectorString &get_out_raws() const

Get the raw output bitstring results.

Returns:

Bitstring results

const std::vector<std::vector<std::map<std::string, int>>> &get_out_bitstrings() const

Get the output measurement counts.

Returns:

Measurement count map

const VectorMapND &get_out_divergences() const

Get the output Jensen–Shannon divergence results.

Returns:

Divergence results

const VectorString &get_out_transpiled_circuits() const

Get the output transpiled circuits.

Returns:

Output transpiled circuits

const VectorString &get_out_qobjs() const

Get the output QObj Json strings.

Returns:

QObj Json strings

const VectorString &get_out_qbjsons() const

Get the output QB Json strings (hardware execution)

Returns:

QB Json strings

const VectorMapNN &get_out_single_qubit_gate_qtys() const

Get the output single-qubit gate counts.

Returns:

Single-qubit gate counts

const VectorMapNN &get_out_double_qubit_gate_qtys() const

Get the output two-qubit gate counts.

Returns:

Two-qubit gate counts

const VectorMapND &get_out_total_init_maxgate_readout_times() const

Get the output total circuit execution time (hardware runtime estimation)

Returns:

Estimated hardware runtime.

const VectorMapND &get_out_z_op_expects() const

Get the output expected value in the Z basis.

Returns:

expected value in the Z basis

void set_noise_mitigation(const std::string &noise_mitigate)

Set the noise mitigation method.

Parameters:

noise_mitigate – Noise mitigation method

void set_noise_mitigations(const VectorString &noise_mitigates)

Set the noise mitigation methods.

Parameters:

noise_mitigates – Noise mitigation methods

const VectorString &get_noise_mitigations() const

Get the noise mitigation methods.

Returns:

Noise mitigation methods

void set_seed(const size_t &in_seed)

Set the random seed value.

Parameters:

in_seed – Seed value

void set_seeds(const VectorN &in_seeds)

Set random seed values.

Parameters:

in_seeds – Seed values

const VectorN &get_seeds() const

Get random seed values.

Returns:

Seed values

const std::string get_summary() const

Get the summary of all session configurations.

Returns:

Session configuration summary

void setName(const VectorString &name_)

Set the names of tasks.

Parameters:

name_ – Task names

void setName(const std::string &name_)

Set the name of task.

Parameters:

name_ – Task name

const VectorString &getName() const

Get names of tasks.

Returns:

Task names

void get_jensen_shannon(const size_t &ii, const size_t &jj)

Compute the Jensen-Shannon divergence result for the (ii, jj) result.

Parameters:
  • ii – Row index

  • jj – Column index

void get_jensen_shannon()

Compute all the Jensen-Shannon divergence results.

void run(const size_t ii, const size_t jj)

Run a quantum task at the (ii, jj) index in the experiment table.

void run()

Execute all quantum tasks.

void set_parallel_run_config(const std::string &in_config)

Set the multi-qpu run configurations: e.g., the list of QPUs paricipate in this run

std::shared_ptr<async_job_handle> run_async(const std::size_t ii, const std::size_t jj, std::shared_ptr<xacc::Accelerator> acc)

Threadsafe execution of (ii, jj) task using the provided accelerator. Returns a job handle if the job is posted to a remote accelerator (e.g. AWS Braket). Otherwise, returns null if this function completes the run locally.

Executor &get_executor()

Get the QPU pool executor.

void qb12()

Shortcuts for setting defaults 12 qubits, 1024 shots, noiseless

void aws32dm1()

AWS Braket DM1, 32 async workers, 17 qubits, 256 shots, noiseless.

void aws32sv1()

AWS Braket SV1, 32 async workers, 34 qubits, 256 shots, noiseless.

void aws8tn1()

AWS Braket TN1, 8 async workers, 49 qubits, 256 shots, noiseless.

Private Types

enum class circuit_input_types

Valid input types:

Values:

enumerator INVALID
enumerator VALID_INSTRING_QPU
enumerator VALID_RANDOM
enumerator VALID_INFILE
enumerator VALID_IR
enumerator VALID_CUDAQ

Private Functions

void set_log_enabled(const bool &in_log_enabled)
void set_log_enableds(const VectorBool &in_log_enabled)
const VectorBool &get_log_enableds() const
void set_beta(const ND &in_beta)
void set_betas(const VectorMapND &in_beta)
const VectorMapND &get_betas() const
int validate_sns_nonempty()
int validate_qns_nonempty()
int validate_rns_nonempty()
int validate_thetas_option()
int validate_instrings()
void validate_acc(const std::string &acc)
void validate_noise_mitigation(const std::string &noise_mitigate)
void validate_aer_sim_type(const std::string &sim_type)
int is_ii_consistent()
int is_jj_consistent()
circuit_input_types validate_infiles_instrings_randoms_irtarget_ms_nonempty(const size_t ii, const size_t jj)
std::string random_circuit(const int n_q, const int depth)
double get_jensen_shannon_divergence(const std::map<std::string, int> &in_q, const std::map<std::string, std::complex<double>> &in_p)
std::string aer_circuit_transpiler(std::string &circuit)
void ensure_results_table_size(size_t ii, size_t jj)

Ensure that all result tables are resized/expanded to accommodate (ii, jj) experiment index.

run_i_j_config get_run_config(size_t ii, size_t jj)

Retrieve and validate run configurations for index pair (ii, jj) using the table index convention.

void process_run_result(const std::size_t ii, const std::size_t jj, const run_i_j_config &run_config, std::shared_ptr<xacc::CompositeInstruction> kernel_ir, std::shared_ptr<xacc::Accelerator> sim_qpu, const xacc::HeterogeneousMap &sim_qpu_configs, std::shared_ptr<xacc::AcceleratorBuffer> buffer_b, double runtime_ms, std::shared_ptr<qb::backend> qb_transpiler)

Helper to populate result tables (e.g. counts, expectation values, resource estimations) post-execution.

std::shared_ptr<xacc::CompositeInstruction> compile_input(const std::string &in_source_string, int in_num_qubits, source_string_type in_source_type)

Util method to compile input source string into IR This method is thread-safe, thus can be used to compile multiple source strings in parallel.

std::string get_target_circuit_qasm_string(size_t ii, size_t jj, const run_i_j_config &run_config)

Retrieve the target circuit string for (i, j) task: This will involve loading file (if file mode is selected), generate random circuit string (if random mode is selected), etc.

std::shared_ptr<xacc::Accelerator> get_sim_qpu(bool execute_on_hardware, const run_i_j_config &run_config)

Get the simulator based on run_i_j_config

void execute_on_simulator(std::shared_ptr<xacc::Accelerator> acc, std::shared_ptr<xacc::AcceleratorBuffer> buffer_b, std::vector<std::shared_ptr<xacc::CompositeInstruction>> &circuits, const run_i_j_config &run_config)

Execute the circuit on a simulator.

std::shared_ptr<async_job_handle> run_internal(const std::size_t ii, const std::size_t jj, std::shared_ptr<xacc::Accelerator> acc, std::mutex *optional_mutex = nullptr)

Internal (ii, jj) task execution. acc: if given (not null), this will be used for simulation. Otherwise, constructed from the run configuration for (ii, jj). optional_mutex: if not null, performed locking as appropriate to make this execution thread safe (e.g., accessing data members of this session instance).

template<typename CountMapT>
inline void populate_measure_counts_data(size_t ii, size_t jj, const CountMapT &measure_counts_map)

Populate QPU execution results for task (i, j) to the session data Templated measure_counts_map to support different type of map-like data.

Private Members

bool debug_
std::string remote_backend_database_path_
YAML::Node remote_backend_database_
VectorString name_m
std::vector<std::vector<std::vector<int>>> number_m
VectorString infiles_
VectorString include_qbs_
VectorString instrings_
std::vector<std::pair<std::string, std::function<void()>>> cudaq_kernels_
std::vector<std::vector<std::shared_ptr<xacc::CompositeInstruction>>> irtarget_ms_
VectorString accs_
VectorString aer_sim_types_
VectorN randoms_
VectorString placements_
Table2d<Passes> circuit_opts_

Circuit optimization passes to apply.

VectorBool xasms_
VectorBool quil1s_
VectorBool noplacements_
VectorBool nooptimises_
VectorBool nosims_
VectorBool noises_
VectorBool output_oqm_enableds_
VectorBool log_enableds_
VectorBool notimings_
VectorN qns_
VectorN rns_
VectorN sns_
VectorN seeds_
VectorMapND betas_
VectorMapND thetas_
VectorN max_bond_dimensions_
VectorN initial_bond_dimensions_
VectorN max_kraus_dimensions_
VectorN initial_kraus_dimensions_
VectorMapND svd_cutoffs_
VectorMapND rel_svd_cutoffs_
std::vector<std::vector<NoiseModel>> noise_models_
VectorBool acc_uses_lsbs_
VectorN acc_uses_n_bits_
std::vector<std::vector<std::map<std::string, std::complex<double>>>> output_amplitudes_
VectorString out_raws_
std::vector<std::vector<std::map<std::string, int>>> out_bitstrings_
VectorMapND out_divergences_
VectorString out_transpiled_circuits_
VectorString out_qobjs_
VectorString out_qbjsons_
VectorMapNN out_single_qubit_gate_qtys_
VectorMapNN out_double_qubit_gate_qtys_
VectorMapND out_total_init_maxgate_readout_times_
VectorMapND out_z_op_expects_
std::shared_ptr<Executor> executor_
bool in_get_state_vec_
std::shared_ptr<std::vector<std::complex<double>>> state_vec_
VectorString error_mitigations_
const int INVALID = -1
const int VALID = 0
const size_t RANDOMS_UPPERBOUND = 1000
const size_t SNS_LOWERBOUND = 1
const size_t SNS_UPPERBOUND = 1000000
const size_t QNS_LOWERBOUND = 1
const size_t QNS_UPPERBOUND = 10000
const size_t RNS_LOWERBOUND = 1
const size_t RNS_UPPERBOUND = 1000000
const size_t MAX_BOND_DIMENSION_LOWERBOUND = 1
const size_t MAX_BOND_DIMENSION_UPPERBOUND = 50000
const size_t INITIAL_BOND_DIMENSION_LOWERBOUND = 1
const size_t INITIAL_BOND_DIMENSION_UPPERBOUND = 50000
const size_t MAX_KRAUS_DIMENSION_LOWERBOUND = 1
const size_t MAX_KRAUS_DIMENSION_UPPERBOUND = 50000
const size_t INITIAL_KRAUS_DIMENSION_LOWERBOUND = 1
const size_t INITIAL_KRAUS_DIMENSION_UPPERBOUND = 50000
std::unordered_set<std::string> VALID_ACCS = {"aer", "aws_acc", "tnqvm", "qpp", "qsim", "dqc_gen1", "qdk_gen1", "loopback", "qb-lambda", "sparse-sim", "cirq-qsim", "qb-mps", "qb-purification", "qb-mpdo"}
std::unordered_set<std::string> VALID_AER_SIM_TYPES = {"statevector", "density_matrix", "matrix_product_state"}
std::unordered_set<std::string> VALID_ERROR_MITIGATIONS = {"ro-error", "rich-extrap", "assignment-error-kernel"}
std::unordered_set<std::string> VALID_HARDWARE_PLACEMENTS = {"swap-shortest-path", "noise-aware"}

Private Static Functions

static std::string convertRawOpenQasmToQBKernel(const std::string &in_rawQasm)

Wrap raw OpenQASM string in a QB Kernel:

  • Move qreg to a kernel argument

  • Denote the kernel name as ‘QBCIRCUIT’

Private Static Attributes

static const char *help_infiles_
static const char *help_instrings_
static const char *help_irtarget_ms_
static const char *help_include_qbs_
static const char *help_remote_backend_database_path_
static const char *help_accs_
static const char *help_aer_sim_types_
static const char *help_randoms_
static const char *help_xasms_
static const char *help_quil1s_
static const char *help_noplacements_
static const char *help_placements_
static const char *help_nooptimises_
static const char *help_circuit_opts_
static const char *help_nosims_
static const char *help_noises_
static const char *help_state_vec_
static const char *help_output_oqm_enableds_
static const char *help_log_enableds_
static const char *help_notimings_
static const char *help_qns_
static const char *help_rns_
static const char *help_sns_
static const char *help_betas_
static const char *help_thetas_
static const char *help_initial_bond_dimensions_
static const char *help_initial_kraus_dimensions_
static const char *help_max_bond_dimensions_
static const char *help_max_kraus_dimensions_
static const char *help_svd_cutoffs_
static const char *help_rel_svd_cutoffs_
static const char *help_noise_models_
static const char *help_output_amplitudes_
static const char *help_debug_
static const char *help_out_raws_
static const char *help_out_bitstrings_
static const char *help_out_divergences_
static const char *help_out_transpiled_circuits_
static const char *help_out_qobjs_
static const char *help_out_qbjsons_
static const char *help_out_single_qubit_gate_qtys_
static const char *help_out_double_qubit_gate_qtys_
static const char *help_out_total_init_maxgate_readout_times_
static const char *help_out_z_op_expects_
static const char *help_noise_mitigations_
static const char *help_seeds_