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)
基类:
objectCut 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)
基类:
objectCircuit 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)
基类:
objectDAG 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)
基类:
objectDynamic 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)
基类:
objectQuantum 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)
基类:
objectRepresent 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)
基类:
objectClass 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
基类:
objectClass 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:
Traverse all possible base combinations(I、X、Y、Z)
Calculate the tensor product of subcircuits for each combination
Accumulate the results of all combinations
Normalized final probability distribution
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