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: Optional[dict] = None) Union[CuTensorNet, QuimbBackend]#

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.cutensornet module#

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

Bases: NumpyBackend

Creates CuQuantum backend for QiboTN.

apply_gate(gate, state, nqubits)#

Apply a gate to state vector.

apply_gate_density_matrix(gate, state, nqubits)#

Apply a gate to density matrix.

assign_measurements(measurement_map, circuit_result)#
cuda_type(dtype='complex64')#

Get CUDA Type.

Parameters:

dtype (str, optional) – Either single (“complex64”) or double (complex128) precision. Defaults to “complex64”.

Returns:

tuple of cuquantum.cudaDataType and cuquantum.ComputeType

Return type:

CUDA Type

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

set_precision(precision)#

Set complex number precision.

Parameters:

precision (str) – ‘single’ or ‘double’.

qibotn.backends.quimb module#

class qibotn.backends.quimb.QuimbBackend(runcard)#

Bases: NumpyBackend

apply_gate(gate, state, nqubits)#

Apply a gate to state vector.

apply_gate_density_matrix(gate, state, nqubits)#

Apply a gate to density matrix.

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

Executes a quantum circuit.

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

set_precision(precision)#

Set complex number precision.

Parameters:

precision (str) – ‘single’ or ‘double’.