wy_qcos.transpiler.cmss.wirecut package

Submodules

wy_qcos.transpiler.cmss.wirecut.cut module

class wy_qcos.transpiler.cmss.wirecut.cut.Cut(circuit, MIP_result)

基类:object

Cut class.

cut_circuit()

Cutting circuit.

返回:

Subcircuit List. qubit_allocation_map (dict): Mapping relationship between original circuit bits and subcircuit bits. eg. ubit_allocation_map[input circuit qubit] = [{subcircuit_idx, subcircuit_qubit}]

返回类型:

subcircuits (list)

compute_gate_distance(gate1, gate2)

Calculate the distance between two quantum gates.

参数:
  • gate1 (str) -- The string representation of the first gate.

  • gate2 (str) -- The string representation of the second gate.

返回:

Minimum distance between two doors

返回类型:

float

generate_subcircuits(subcircuit_operations, path_mapping, subcircuit_widths, dag)

Generate subcircuits based on operation allocation and path mapping.

参数:
  • subcircuit_operations -- Each subcircuit contains operational nodes

  • path_mapping -- Mapping of input qubits to subcircuit qubits

  • subcircuit_widths -- The size of each subcircuit

  • dag -- The DAG representation of the original circuit

返回:

Generated subcircuit list

返回类型:

list

wy_qcos.transpiler.cmss.wirecut.cut_wire module

class wy_qcos.transpiler.cmss.wirecut.cut_wire.CutWire(max_subcircuit_width, qasm, max_memory=Constant.DD_MAX_MEMORY, max_depth=Constant.MAX_RERURSIVE_DEPTH, is_complete_reconstruction=True, max_cuts=Constant.MAX_CIRCUIT_CUT)

基类:object

Circuit cutting class.

参数:
  • max_subcircuit_width (int) -- Max number of qubits allowed per subcircuit

  • qasm (str) -- OpenQASM

  • max_memory (int) -- Set the upper memory limit for the refactoring phase

  • max_depth (int) -- Maximum recursion depth

  • is_complete_reconstruction (bool) -- Whether a complete refactoring

  • max_cuts (int) -- Maximum allowable number of cuts

init_data()
generate_all_variants_subcircuits()
wy_qcos.transpiler.cmss.wirecut.cut_wire.generate_all_variant_subcircuits_for_execute(max_subcircuit_width, qasm, max_memory=Constant.DD_MAX_MEMORY, max_depth=Constant.MAX_RERURSIVE_DEPTH, is_complete_reconstruction=True, max_cuts=Constant.MAX_CIRCUIT_CUT)

Generate all variant subcircuits.

参数:
  • max_subcircuit_width (int) -- Maximum width of subcircuit.

  • qasm (str) -- The openQASM representation of a quantum circuit.

  • max_memory (int) -- Memory upper limit set during the refactoring phase.

  • max_depth (int) -- Maximum recursion depth

  • is_complete_reconstruction (bool) -- Whether a complete refactoring.

  • max_cuts (int) -- Maximum cutting value.

返回:

All variant subcircuits of serialization and cut_wire instance.

wy_qcos.transpiler.cmss.wirecut.cut_wire.simple_subcircuit_dict(subcircuits_dict)

Generate simple subcircuits.

参数:

subcircuits_dict (dict) -- subcircuits dict

返回:

variant subcircuits

返回类型:

list

wy_qcos.transpiler.cmss.wirecut.cut_wire.reconstruct_probability_distribution_wire_cut(wirecut, results_for_execute, is_complete_reconstruction)

Reconstruct the probability distribution.

参数:
  • wirecut -- wirecut instance object

  • results_for_execute -- Execution results of the seed variation circuit

  • is_complete_reconstruction -- Whether to perform complete reconstruction

返回:

Circuit sampling results. probability_distribution: Probability distribution.

返回类型:

counts

wy_qcos.transpiler.cmss.wirecut.dag module

class wy_qcos.transpiler.cmss.wirecut.dag.DAG(parser)

基类:object

DAG class.

参数:

parser (Parser)

knit_dag_to_graph()

Convert the DAG into a graph structure as input for the MIP module.

返回:

Number of nodes edge_list (List[List[int, int]]): Edge list

返回类型:

nvertex (int)

parse_subgraphs(subgraphs)

Converte list of subgraphs into list of strings in specific format.

参数:

subgraphs (List[List[int]]) -- Subgraph list

返回:

List of strings corresponding to cutting scheme

返回类型:

List[List[str]]

get_knit_dag_depth(topo_nodes)

Obtain depth information for all gates in the DAG.

返回:

Deep Information Dictionary

返回类型:

depth_dict (Dict[int, Dict[int, int]])

split_dag(cut_positions)

Split the DAG into multiple sub-DAGs according to cutting positions.

参数:

cut_positions (List[int]) -- List of cutting positions

返回:

List of sub DAGs after cutting

返回类型:

List[DAGCircuit]

add_single_qubit_gates(sub_dags)

Add single-bit gate operations to each sub DAG.

参数:

sub_dags (List[DAGCircuit]) -- Sub-DAG list containing two-bit gates.

返回:

List of sub DAGs after adding single-qubit gates.

返回类型:

List[DAGCircuit]

to_tuple_representation()

Convert DAG to tuple representation.

返回:

vertex List[Tuple[int, int]]: edges Dict[Operation, int]: op_to_vertex

返回类型:

int

wy_qcos.transpiler.cmss.wirecut.dd module

class wy_qcos.transpiler.cmss.wirecut.dd.DD(topo_subcircuits, results_from_hardware, prepare_data, max_memory, max_depths)

基类:object

Dynamic definition class.

init_data()
dd()

The main process of DD algorithm.

wy_qcos.transpiler.cmss.wirecut.dd.reconstruct_prob_from_bins(subcircuit_out_qubits, dd_bins, max_memory, is_complete_reconstruction)

Read all bins and reconstruct the final probability distribution.

参数:
  • subcircuit_out_qubits -- The correspondence between the subcircuit qubits and the original circuit qubits.

  • dd_bins -- The probability box set returned by the dd function.

  • max_memory -- Memory limit during the refactoring phase.

  • is_complete_reconstruction -- Whether to perform a complete refactoring.

返回:

The final probability distribution.

返回类型:

probability_distribution

wy_qcos.transpiler.cmss.wirecut.dd.merge_prob_vector(unmerged_prob_vector, qubit_states)

According to the active/merged bit merge probability distribution.

wy_qcos.transpiler.cmss.wirecut.greedy module

class wy_qcos.transpiler.cmss.wirecut.greedy.GreedyModel(nvertex, edges, nsubcircuit, max_subcircuit_width, max_cuts)

基类:object

Quantum circuit cutting solver using greedy strategy.

参数:
  • nvertex (int)

  • edges (list[tuple[int, int]])

  • nsubcircuit (int)

  • max_subcircuit_width (int)

  • max_cuts (int)

solve()

Solving the circuit cutting problem using a greedy strategy.

返回:

Whether a feasible solution is found. cut_edges: Cut edge list. subcircuits: list of vertices contained in each subcircuit.

返回类型:

success

wy_qcos.transpiler.cmss.wirecut.mip_model module

class wy_qcos.transpiler.cmss.wirecut.mip_model.MIPModel(nvertex, edges, nsubcircuit, max_subcircuit_width, max_cuts)

基类:object

Represent a mixed integer problem (MIP) for optimal cutting wire.

Find the optimal position of cutting the edges of given DAG that represents a quantum circuit. The problem is modeled and solved using PuLP.

参数:
  • nvertex (int)

  • edges (list[tuple[int, int]])

  • nsubcircuit (int)

  • max_subcircuit_width (int)

  • max_cuts (int)

nvertex

The number of vertices in the input DAG.

edges

The edges of the input DAG.

nedge

The number of edges.

nsubcircuit

The number of parts to be partitioned.

max_subcircuit_width

The max number of qubits allowed in subcircuit.

max_cuts

The maximum number of cuts allowed.

weight

The number of input qubits associated with a gate. Valid numbers are 0, 1, and 2.

subcircuit_counter

The dictionaries for storing variables of each subcircuit.

model

The PuLP model.

subcircuits

The vertices in each subcircuit.

num_cuts

A variable that represents the number of cuts.

optimal

Whether the solution is optimal.

objective

The objective value of the solution.

solve()

Solve the MIP model.

返回:

bool denoting whether or not the model found a solution cut_edges: list[tuple[int, int]] denoting cut edges

返回类型:

Flag

wy_qcos.transpiler.cmss.wirecut.prepare_data module

class wy_qcos.transpiler.cmss.wirecut.prepare_data.Prepare_data(circuit, subcircuits, qubit_allocation_map)

基类:object

Class of quantum circuit cutting data preparation.

get_connections()

Obtain connections between subcircuits.

compute_subcircuit_metadata()

Calculate the metadata for each subcircuit.

get_origin_qubit_order()

Obtain the sequential mapping of reconstructed qubits.

返回:

The mapping of each subcircuit output qubit to circuit qubit

class wy_qcos.transpiler.cmss.wirecut.prepare_data.Topo_Subcircuits

基类:object

Class of topological relationships between subgraphs.

get_init_meas(subcircuit_idx)

Obtain initialization configuration of subcircuit.

get_connection(from_node=None, to_node=None)

Get the connections between eligible subgraphs.

参数:
  • from_node -- Only edges originating from this node are returned.

  • to_node -- Only return the edges that reach this node

返回:

List of connections between eligible subgraphs.

返回类型:

list

assign_bases_to_connections(conn_bases, connections)

Assign base attributes to connections between subgraphs.

wy_qcos.transpiler.cmss.wirecut.prepare_data.tensor_product(*distributions)

Tensor product operation.

wy_qcos.transpiler.cmss.wirecut.prepare_data.translate_to_instance_config(init_label, meas_label)

Convert initialization and measurement labels to instance configuration.

参数:
  • init_label -- Initialize tags

  • meas_label -- Measurement label

返回:

Possible instance configuration list.

wy_qcos.transpiler.cmss.wirecut.prepare_data.to_basic_init(init)
wy_qcos.transpiler.cmss.wirecut.prepare_data.build_topo_subcircuits(subcircuit_metadata, subcircuits, qubit_allocation_map)

Constructing topological relationships between subcircuits.

参数:
  • subcircuit_metadata -- Subcircuit metadata

  • subcircuits -- Subcircuit List

  • qubit_allocation_map -- Qubit mapping

返回:

Subcircuit topology relationship object

wy_qcos.transpiler.cmss.wirecut.prepare_data.generate_run_config(topo_subcircuits)

Generate subcircuit entries and instances.

参数:

topo_subcircuits -- Subcircuit topology relationship

返回:

Subcircuit entries measure_config_value: Subcircuit instances

返回类型:

config_measures

wy_qcos.transpiler.cmss.wirecut.prepare_data.process_subcircuit_optimized(subcircuit_idx, subcircuit, config_measures, measure_config_value, qubit_index_map, related_edges)

Process subcircuit optimized.

参数:
  • subcircuit_idx -- Subcircuit subscript

  • subcircuit -- Subcircuit

  • config_measures -- Measurement configuration

  • measure_config_value -- Converted measurement configuration

  • qubit_index_map -- Bit mapping relationship

  • related_edges -- Connection edges (cut points) between subcircuits

Get all edges related to the subcircuit.

参数:
  • topo_subcircuits (Topo_Subcircuits) -- Topological subcircuits.

  • subcircuit_idx -- subcircuit index

wy_qcos.transpiler.cmss.wirecut.prepare_data.create_entry_config_optimized(subcircuit, subcircuit_idx, edge_bases, related_edges, qubit_index_map)
wy_qcos.transpiler.cmss.wirecut.prepare_data.process_subcircuit_entry_optimized(subcircuit_idx, entry_init, entry_meas, config_measures, measure_config_value, existing_instances)

Process subcircuit entry optimized.

参数:
  • subcircuit_idx -- Subcircuit index

  • entry_init -- Initialization label of subcircuit

  • entry_meas -- Measurement label of subcircuit

  • config_measures -- Dictionary for storing subcircuit entry configurations

  • measure_config_value -- Dictionary for storing subcircuit configurations

  • existing_instances -- Set of existing instances

wy_qcos.transpiler.cmss.wirecut.prepare_data.process_subcircuit(topo_subcircuits, subcircuit_idx, subcircuit, config_measures, measure_config_value)

Configuration generation for subcircuits.

wy_qcos.transpiler.cmss.wirecut.prepare_data.create_entry_config(subcircuit, subcircuit_idx, edge_bases, related_edges)

Create entry configuration for subcircuits.

参数:
  • subcircuit (QuantumCircuit) -- The subcircuit.

  • subcircuit_idx (int) -- The index of the subcircuit.

  • edge_bases (tuple) -- The bases for each edge.

  • related_edges (list) -- The related edges of the subcircuit.

返回:

initialization and measurement configuration for the subcircuit.

返回类型:

tuple

wy_qcos.transpiler.cmss.wirecut.prepare_data.process_subcircuit_entry(subcircuit_idx, entry_init, entry_meas, config_measures, measure_config_value)

Convert the initialization and measurement into instance configurations.

参数:
  • subcircuit_idx -- Subcircuit index

  • entry_init -- Initialization label of the subcircuit

  • entry_meas -- Measurement label of the subcircuit

  • config_measures -- Dictionary for storing subcircuit entry configurations

  • measure_config_value -- Dictionary for storing subcircuit configurations

wy_qcos.transpiler.cmss.wirecut.reconstructor module

class wy_qcos.transpiler.cmss.wirecut.reconstructor.Reconstructor(prepare_data, results_for_execute)

基类:object

init_data()

Initializing the data required for the reconstructor.

get_measure_config_length(subcircuit_idx)

Get the measurement configuration length of the given subcircuit.

参数:

subcircuit_idx -- Subcircuit index

返回:

Measurement configuration length

返回类型:

int

reconstruct()

Reconstructing the probability distribution of quantum circuits.

Main steps:
  1. Traverse all possible base combinations(I、X、Y、Z)

  2. Calculate the tensor product of subcircuits for each combination

  3. Accumulate the results of all combinations

  4. Normalized final probability distribution

  5. Reorder the probability distribution

返回:

Normalized complete quantum circuit probability distribution.

compute_tensor_product_for_bases(conn_bases, connections, sorted_subcircuit_config, evaluate_results, topo_subcircuits)

Compute tensor product of subcircuits.

参数:
  • conn_bases -- Current base combination

  • connections -- Connections between subcircuits

  • sorted_subcircuit_config -- Subcircuit processing sequence

  • evaluate_results -- Subcircuit evaluation results

  • topo_subcircuits -- Subcircuit topology structure

返回:

Tensor product result of the current basis combination.

normalize_probability(prob_distribution)

Normalized probability distribution.

参数:

prob_distribution -- Probability distribution array

返回:

Normalized probability distribution.

wy_qcos.transpiler.cmss.wirecut.reconstructor.parse_results_from_hardware_service(results_for_execute)

Parse measurement results from hardware simulator outputs.

参数:

results_for_execute -- Results for execute.

返回:

Measurement results for each subcircuit.

返回类型:

dict

wy_qcos.transpiler.cmss.wirecut.utils module

wy_qcos.transpiler.cmss.wirecut.utils.generate_subcircuits_for_execute(prepare_data)

Generate subcircuits for execution.

参数:

prepare_data -- The data for preparing subcircuits for execution

返回:

The subcircuits for execution.

返回类型:

subcircuits_for_execute

wy_qcos.transpiler.cmss.wirecut.utils.generate_config_circuits_for_one_subcircuit(subcircuit, input_status)

Generate subcircuits for execution for one subcircuit.

参数:
  • subcircuit (QuantumCircuit) -- Original subcircuit.

  • input_status -- input status.

返回:

subcircuits for execute

返回类型:

dict

wy_qcos.transpiler.cmss.wirecut.utils.compute_measure_combian(meas)

Generate possible measurement basis variants.

参数:

meas -- Measuring the ground state

返回:

List of possible measured ground states

wy_qcos.transpiler.cmss.wirecut.utils.generate_measure_plans(subcircuit, init, meas)

Modify subcircuit based on initialization and measurement basis states.

参数:
  • subcircuit (QuantumCircuit) -- Original subcircuit

  • init -- Initial configuration

  • meas -- Measuring ground state configuration

返回:

Modified subcircuit instance.

返回类型:

modified_dag

wy_qcos.transpiler.cmss.wirecut.utils.attribute_prob(unattribute_prob, meas)

Calculate the probability under the specified measurement basis.

参数:
  • unattribute_prob -- Unmeasured probability

  • meas (dict) -- Measuring the ground state

返回:

Measured probability

wy_qcos.transpiler.cmss.wirecut.utils.attribute_state(full_state, meas)

Calculate effective state of specific state under measurement basis.

参数:
  • full_state (int) -- Complete state index.

  • meas -- Measuring the ground state.

返回:

Symbol (±1) and valid status index.

返回类型:

(sign, effective_state)

wy_qcos.transpiler.cmss.wirecut.utils.asign_probability(measured_results, measure_configs)

Assign the measurement results to corresponding subcircuit.

参数:
  • measured_results -- Subcircuit measurement results

  • measure_configs -- Subcircuit item configuration

返回:

Probability mapping of subcircuit items

返回类型:

config_results_map

Module contents