qrunch.quantum.estimators.third_party_estimators.cuquantum_state_vector_estimator.cuquantum_state_vector_estimator

Module with implementations of cuquantum cuStateVec estimator.

Classes

CuQuantumStatevectorEstimator

Estimator using NVIDIA cuQuantum's cuStateVec library.

class CuQuantumStatevectorEstimator

Bases: Estimator

Estimator using NVIDIA cuQuantum’s cuStateVec library.

Requirements:
  • Qrunch install requirements: qrunch[cuda] (or qrunch[all]).

  • A working cuda (cupy) installation.

__init__() None

Initialize estimator.

Return type:

None

cleanup() None

Cleanup cuStateVec handle.

Return type:

None

clear_cache() None

Clear the measurement cache.

Return type:

None

has_spin_particle_conservation() bool

Return True, if the estimator is set to use spin particle conservation.

Return type:

bool

has_total_particle_conservation() bool

Return True, if the estimator is set to use total particle conservation.

Return type:

bool

run(observables: Sequence[int | float | complex | Expression[PauliOperators]] | int | float | complex | Expression[PauliOperators] | Sequence[HermitianPauliSum] | HermitianPauliSum, circuits: Sequence[Circuit], shots: int | ShotsPerGroup | None) EstimatorResults
run(observables: int | float | complex | Expression[PauliOperators] | HermitianPauliSum, circuits: Circuit, shots: int | ShotsPerGroup | None) ExpectationValue
run(observables: Sequence[int | float | complex | Expression[PauliOperators]] | Sequence[HermitianPauliSum], circuits: Circuit, shots: int | ShotsPerGroup | None) list[ExpectationValue]

Run the estimator.

Parameters:
Return type:

ExpectationValue | list[ExpectationValue] | EstimatorResults

run_sequence_observables_single_circuit(observables: Sequence[HermitianPauliSum], circuit: Circuit, _shots: int | ShotsPerGroup | None) list[ExpectationValue]

Run estimation for multiple observables on single circuit.

Parameters:
  • observables (Sequence[HermitianPauliSum]) – A sequence of HermitianPauliSum observables to estimate.

  • circuit (Circuit) – The Circuit whose state to estimate the observables on.

  • _shots (int | ShotsPerGroup | None) – Unused - included for interface consistency but ignored since

  • simulation. (this estimator only supports state vector)

Return type:

list[ExpectationValue]

run_single_observable_sequence_circuits(observable: HermitianPauliSum, circuits: Sequence[Circuit], _shots: int | ShotsPerGroup | None) EstimatorResults

Run estimation for single observable on multiple circuits.

Parameters:
  • observable (HermitianPauliSum) – The HermitianPauliSum observable to estimate.

  • circuits (Sequence[Circuit]) – A sequence of Circuits whose states to estimate the observable on.

  • _shots (int | ShotsPerGroup | None) – Unused - included for interface consistency but ignored since

  • simulation. (this estimator only supports state vector)

Return type:

EstimatorResults

run_single_observable_single_circuit(observable: HermitianPauliSum, circuit: Circuit, _shots: int | ShotsPerGroup | None) ExpectationValue

Run estimation for single observable and single circuit.

Parameters:
  • observable (HermitianPauliSum) – The HermitianPauliSum observable to estimate.

  • circuit (Circuit) – The Circuit whose state to estimate the observable on.

  • _shots (int | ShotsPerGroup | None) – Unused - included for interface consistency but ignored since this estimator

  • simulation. (only supports state vector)

Return type:

ExpectationValue

validate_shots_type(shots_type: Type[int | ShotsPerGroup | None]) list[str]

Validate that the sampler supports the given shots type. Return a list of error messages if not supported.

Parameters:

shots_type (Type[int | ShotsPerGroup | None])

Return type:

list[str]