qml.labs.resource_estimation.ResourceMPSPrep

class ResourceMPSPrep(num_mps_matrices, max_bond_dim, precision=None, wires=None)[source]

Bases: ResourceOperator

Resource class for the MPSPrep template.

The resource operation for preparing an initial state from a matrix product state (MPS) representation.

Parameters:
  • num_mps_matrices (int) – the number of matrices in the MPS representation

  • max_bond_dim (int) – the bond dimension of the MPS representation

  • precision (Union[None, float], optional) – the precision used when loading the MPS matricies

  • wires (Sequence[int], optional) – the wires the operation acts on

Resources:

The resources for MPSPrep are according to the decomposition, which uses the generic ResourceQubitUnitary. The decomposition is based on the routine described in arXiv:2310.18410.

See also

MPSPrep

Example

The resources for this operation are computed using:

>>> mps = plre.ResourceMPSPrep(num_mps_matrices=10, max_bond_dim=2**3)
>>> print(plre.estimate(mps, gate_set={"CNOT", "RZ", "RY"}))
--- Resources: ---
 Total qubits: 13
 Total gates : 1.654E+3
 Qubit breakdown:
  clean qubits: 3, dirty qubits: 0, algorithmic qubits: 10
 Gate breakdown:
  {'RZ': 728, 'CNOT': 774, 'RY': 152}

num_wires

resource_keys

resource_params

Returns a dictionary containing the minimal information needed to compute the resources.

num_wires = 1
resource_keys = {'max_bond_dim', 'num_mps_matrices', 'precision'}
resource_params

Returns a dictionary containing the minimal information needed to compute the resources.

Returns:

A dictionary containing the resource parameters:
  • num_mps_matrices (int): the number of matrices in the MPS representation

  • max_bond_dim (int): the bond dimension of the MPS representation

  • precision (Union[None, float], optional): the precision used when loading the MPS matrices

Return type:

dict

adjoint_resource_decomp(*args, **kwargs)

Returns a list representing the resources for the adjoint of the operator.

controlled_resource_decomp(...)

Returns a list representing the resources for a controlled version of the operator.

dequeue(op_to_remove[, context])

Remove the given resource operator(s) from the Operator queue.

pow_resource_decomp(pow_z, *args, **kwargs)

Returns a list representing the resources for an operator raised to a power.

queue([context])

Append the operator to the Operator queue.

resource_decomp(num_mps_matrices, max_bond_dim)

Returns a list representing the resources of the operator.

resource_rep(num_mps_matrices, max_bond_dim)

Returns a compressed representation containing only the parameters of the Operator that are needed to compute the resources.

resource_rep_from_op()

Returns a compressed representation directly from the operator

tracking_name(num_mps_matrices, ...)

Returns a name used to track the operator during resource estimation.

tracking_name_from_op()

Returns the tracking name built with the operator's parameters.

classmethod adjoint_resource_decomp(*args, **kwargs)

Returns a list representing the resources for the adjoint of the operator.

classmethod controlled_resource_decomp(ctrl_num_ctrl_wires, ctrl_num_ctrl_values, *args, **kwargs)

Returns a list representing the resources for a controlled version of the operator.

Parameters:
  • ctrl_num_ctrl_wires (int) – the number of qubits the operation is controlled on

  • ctrl_num_ctrl_values (int) – the number of control qubits, that are controlled when in the \(|0\rangle\) state

static dequeue(op_to_remove, context=<class 'pennylane.queuing.QueuingManager'>)

Remove the given resource operator(s) from the Operator queue.

classmethod pow_resource_decomp(pow_z, *args, **kwargs)

Returns a list representing the resources for an operator raised to a power.

Parameters:

pow_z (int) – exponent that the operator is being raised to

queue(context=<class 'pennylane.queuing.QueuingManager'>)

Append the operator to the Operator queue.

classmethod resource_decomp(num_mps_matrices, max_bond_dim, precision=None, **kwargs)[source]

Returns a list representing the resources of the operator. Each object in the list represents a gate and the number of times it occurs in the circuit.

Parameters:
  • num_mps_matrices (int) – the number of matrices in the MPS representation

  • max_bond_dim (int) – the bond dimension of the MPS representation

  • precision (Union[None, float], optional) – the precision used when loading the MPS matrices

Resources:

The resources for MPSPrep are estimated according to the decomposition, which uses the generic ResourceQubitUnitary. The decomposition is based on the routine described in arXiv:2310.18410.

Returns:

A list of GateCount objects, where each object represents a specific quantum gate and the number of times it appears in the decomposition.

Return type:

list[GateCount]

classmethod resource_rep(num_mps_matrices, max_bond_dim, precision=None)[source]

Returns a compressed representation containing only the parameters of the Operator that are needed to compute the resources.

Parameters:
  • num_mps_matrices (int) – the number of matrices in the MPS representation

  • max_bond_dim (int) – the bond dimension of the MPS representation

  • precision (Union[None, float], optional) – the precision used when loading the MPS matrices

Returns:

the operator in a compressed representation

Return type:

CompressedResourceOp

resource_rep_from_op()

Returns a compressed representation directly from the operator

classmethod tracking_name(num_mps_matrices, max_bond_dim, precision)[source]

Returns a name used to track the operator during resource estimation.

tracking_name_from_op()

Returns the tracking name built with the operator’s parameters.