跳转至

MatrixProductStateSimulator

QuICT.simulation.matrix_product_state.MatrixProductStateSimulator

MatrixProductStateSimulator(device: str = 'CPU', precision: str = 'double')

The Quantum Circuit Simulator with Matrix Product State.

Initial MPS Simulator

Parameters:

  • device (str, default: 'CPU' ) –

    The device type, one of [CPU, GPU]. Defaults to "CPU".

  • precision (str, default: 'double' ) –

    The precision type, one of [single, double]. Defaults to "double".

Source code in QuICT/simulation/matrix_product_state/matrix_product_state_simulator.py
def __init__(self, device: str = "CPU", precision: str = "double"):
    """ Initial MPS Simulator

    Args:
        device (str, optional): The device type, one of [CPU, GPU]. Defaults to "CPU".
        precision (str, optional): The precision type, one of [single, double]. Defaults to "double".
    """
    self._device = device
    self._precision = precision
    self._mps = MPSSiteStructure(device, precision)

run

run(circuit: Circuit, quantum_state: ndarray = None) -> MPSSiteStructure

Start Simulator with given circuit

Parameters:

  • circuit (Circuit) –

    The quantum circuits.

  • quantum_state (ndarray, default: None ) –

    The initial quantum state vector. Defaults to None.

Returns:

Source code in QuICT/simulation/matrix_product_state/matrix_product_state_simulator.py
def run(self, circuit: Circuit, quantum_state: np.ndarray = None) -> MPSSiteStructure:
    """ Start Simulator with given circuit

    Args:
        circuit (Circuit): The quantum circuits.
        quantum_state (np.ndarray, optional): The initial quantum state vector. Defaults to None.

    Returns:
        MPSSiteStructure: The Matrix Product State
    """
    qubits = circuit.width()
    self._mps.initial_mps(qubits, quantum_state)
    for gate in circuit.flatten_gates():
        if isinstance(gate, BasicGate):
            qindex = gate.cargs + gate.targs
            self._apply_basic_gate(gate, qindex)
        else:
            raise ValueError("MPS Simulation only support BasicGate currently.")

    return self._mps

sample

sample(shots: int)

Sample the measured result from current Matrix Product State.

Parameters:

  • shots (int) –

    The sample times.

Source code in QuICT/simulation/matrix_product_state/matrix_product_state_simulator.py
def sample(self, shots: int):
    """ Sample the measured result from current Matrix Product State.

    Args:
        shots (int): The sample times.
    """
    assert isinstance(shots, int) and shots >= 1

    return self._mps.sample(shots)