qibotn.backends package#

class qibotn.backends.MetaBackend#

Bases: object

Meta-backend class which takes care of loading the qibotn backends.

list_available() dict#

Lists all the available qibotn backends.

static load(platform: str, runcard: dict = None, **kwargs) QibotnBackend#

Loads the backend.

Parameters
  • platform (str) – Name of the backend to load: either cutensornet or qutensornet.

  • runcard (dict) – Dictionary containing the simulation settings.

Returns

The loaded backend.

Return type

qibo.backends.abstract.Backend

Submodules#

qibotn.backends.abstract module#

class qibotn.backends.abstract.QibotnBackend#

Bases: ABC

apply_gate(gate, state, nqubits)#
apply_gate_density_matrix(gate, state, nqubits)#
assign_measurements(measurement_map, circuit_result)#
configure_tn_simulation(**config)#

Configure the TN simulation that will be performed.

set_device(device)#
set_precision(precision)#

qibotn.backends.cutensornet module#

class qibotn.backends.cutensornet.CuTensorNet(runcard=None)#

Bases: QibotnBackend, NumpyBackend

Creates CuQuantum backend for QiboTN.

configure_tn_simulation(runcard)#

Configure the TN simulation that will be performed.

execute_circuit(circuit, initial_state=None, nshots=None, return_array=False)#

Executes a quantum circuit using selected TN backend.

Parameters
  • circuit (qibo.models.circuit.Circuit) – Circuit to execute.

  • initial_state (qibo.models.circuit.Circuit) – Circuit to prepare the initial state. If None the default |00...0> state is used.

Returns

If return_array is False, returns a QuantumState object representing the quantum state. If return_array is True, returns a numpy array representing the quantum state.

Return type

QuantumState or numpy.ndarray

qibotn.backends.qmatchatea module#

qibotn.backends.quimb module#

qibotn.backends.quimb.configure_tn_simulation(self, ansatz: str = 'mps', max_bond_dimension: Optional[int] = None, svd_cutoff: Optional[float] = 1e-10, n_most_frequent_states: int = 100)#

Configure tensor network simulation.

Parameters

ansatz – str, optional The tensor network ansatz to use. Default is None and, in this case, a generic Circuit Quimb class is used. max_bond_dimension : int, optional The maximum bond dimension for the MPS ansatz. Default is 10.

Notes

  • The ansatz determines the tensor network structure used for simulation. Currently, only “MPS” is supported.

  • The max_bond_dimension parameter controls the maximum allowed bond dimension for the MPS ansatz.

qibotn.backends.quimb.execute_circuit(self, circuit: Circuit, initial_state=None, nshots=None, return_array=False)#

Execute a quantum circuit using the specified tensor network ansatz and initial state.

Parameters
  • circuit – QuantumCircuit The quantum circuit to be executed.

  • initial_state – array-like, optional The initial state of the quantum system. Only supported for Matrix Product States (MPS) ansatz.

  • nshots – int, optional The number of shots for sampling the circuit. If None, no sampling is performed, and the full statevector is used.

  • return_array – bool, optional If True, returns the statevector as a dense array. Default is False.

Returns

TensorNetworkResult

An object containing the results of the circuit execution, including: - nqubits: Number of qubits in the circuit. - backend: The backend used for execution. - measures: The measurement frequencies if nshots is specified, otherwise None. - measured_probabilities: A dictionary of computational basis states and their probabilities. - prob_type: The type of probability computation used (currently “default”). - statevector: The final statevector as a dense array if return_array is True, otherwise None.

Raises

ValueError – If an initial state is provided but the ansatz is not “MPS”.

Notes

  • The ansatz determines the tensor network structure used for simulation. Currently, only “MPS” is supported.

  • If initial_state is provided, it must be compatible with the MPS ansatz.

  • The nshots parameter enables sampling from the circuit’s output distribution. If not specified, the full statevector is computed.

qibotn.backends.quimb.expectation_observable_symbolic(self, circuit, operators_list, sites_list, coeffs_list, nqubits)#

Compute the expectation value of a symbolic Hamiltonian on a quantum circuit using tensor network contraction. This method takes a Qibo circuit, converts it to a Quimb tensor network circuit, and evaluates the expectation value of a Hamiltonian specified by three lists of strings: operators, sites, and coefficients. The expectation value is computed by summing the contributions from each term in the Hamiltonian, where each term’s expectation is calculated using Quimb’s local_expectation function. Each operator string must act on all different qubits, i.e., for each term, the corresponding sites tuple must contain unique qubit indices. Example: operators_list = [‘xyz’, ‘xyz’], sites_list = [(1,2,3), (1,2,3)], coeffs_list = [1, 2]

Parameters
  • circuit (qibo.models.Circuit) – The quantum circuit to evaluate, provided as a Qibo circuit object.

  • operators_list (list of str) – List of operator strings representing the symbolic Hamiltonian terms.

  • sites_list (list of tuple of int) – Tuples each specifying the qubits (sites) the corresponding operator acts on.

  • coeffs_list (list of real/complex) – The coefficients for each Hamiltonian term.

Returns

The real part of the expectation value of the Hamiltonian on the given circuit state.

Return type

float

qibotn.backends.quimb.setup_backend_specifics(self, quimb_backend='numpy', contractions_optimizer='auto-hq')#

Setup backend specifics. :param quimb_backend: str

The backend to use for the quimb tensor network simulation.

Parameters

contractions_optimizer – str, optional The contractions_optimizer to use for the quimb tensor network simulation.