Trait GpuBackend

Source
pub trait GpuBackend: Send + Sync {
    // Required methods
    fn is_available() -> bool
       where Self: Sized;
    fn name(&self) -> &str;
    fn device_info(&self) -> String;
    fn allocate_state_vector(
        &self,
        n_qubits: usize,
    ) -> QuantRS2Result<Box<dyn GpuBuffer>>;
    fn allocate_density_matrix(
        &self,
        n_qubits: usize,
    ) -> QuantRS2Result<Box<dyn GpuBuffer>>;
    fn kernel(&self) -> &dyn GpuKernel;

    // Provided methods
    fn apply_gate(
        &self,
        state: &mut dyn GpuBuffer,
        gate: &dyn GateOp,
        qubits: &[QubitId],
        n_qubits: usize,
    ) -> QuantRS2Result<()> { ... }
    fn measure(
        &self,
        state: &mut dyn GpuBuffer,
        qubit: QubitId,
        n_qubits: usize,
    ) -> QuantRS2Result<bool> { ... }
    fn get_probability(
        &self,
        state: &dyn GpuBuffer,
        qubit: QubitId,
        n_qubits: usize,
    ) -> QuantRS2Result<f64> { ... }
}
Expand description

GPU backend trait for quantum computations

Required Methods§

Source

fn is_available() -> bool
where Self: Sized,

Check if this backend is available on the current system

Source

fn name(&self) -> &str

Get the name of this backend

Source

fn device_info(&self) -> String

Get device information

Source

fn allocate_state_vector( &self, n_qubits: usize, ) -> QuantRS2Result<Box<dyn GpuBuffer>>

Allocate a GPU buffer for a state vector

Source

fn allocate_density_matrix( &self, n_qubits: usize, ) -> QuantRS2Result<Box<dyn GpuBuffer>>

Allocate a GPU buffer for a density matrix

Source

fn kernel(&self) -> &dyn GpuKernel

Get the kernel implementation

Provided Methods§

Source

fn apply_gate( &self, state: &mut dyn GpuBuffer, gate: &dyn GateOp, qubits: &[QubitId], n_qubits: usize, ) -> QuantRS2Result<()>

Apply a quantum gate

Source

fn measure( &self, state: &mut dyn GpuBuffer, qubit: QubitId, n_qubits: usize, ) -> QuantRS2Result<bool>

Measure a qubit and collapse the state

Source

fn get_probability( &self, state: &dyn GpuBuffer, qubit: QubitId, n_qubits: usize, ) -> QuantRS2Result<f64>

Get measurement probability without collapsing

Implementors§