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§
Sourcefn is_available() -> boolwhere
Self: Sized,
fn is_available() -> boolwhere
Self: Sized,
Check if this backend is available on the current system
Sourcefn device_info(&self) -> String
fn device_info(&self) -> String
Get device information
Sourcefn allocate_state_vector(
&self,
n_qubits: usize,
) -> QuantRS2Result<Box<dyn GpuBuffer>>
fn allocate_state_vector( &self, n_qubits: usize, ) -> QuantRS2Result<Box<dyn GpuBuffer>>
Allocate a GPU buffer for a state vector
Sourcefn allocate_density_matrix(
&self,
n_qubits: usize,
) -> QuantRS2Result<Box<dyn GpuBuffer>>
fn allocate_density_matrix( &self, n_qubits: usize, ) -> QuantRS2Result<Box<dyn GpuBuffer>>
Allocate a GPU buffer for a density matrix
Provided Methods§
Sourcefn apply_gate(
&self,
state: &mut dyn GpuBuffer,
gate: &dyn GateOp,
qubits: &[QubitId],
n_qubits: usize,
) -> QuantRS2Result<()>
fn apply_gate( &self, state: &mut dyn GpuBuffer, gate: &dyn GateOp, qubits: &[QubitId], n_qubits: usize, ) -> QuantRS2Result<()>
Apply a quantum gate
Sourcefn measure(
&self,
state: &mut dyn GpuBuffer,
qubit: QubitId,
n_qubits: usize,
) -> QuantRS2Result<bool>
fn measure( &self, state: &mut dyn GpuBuffer, qubit: QubitId, n_qubits: usize, ) -> QuantRS2Result<bool>
Measure a qubit and collapse the state
Sourcefn get_probability(
&self,
state: &dyn GpuBuffer,
qubit: QubitId,
n_qubits: usize,
) -> QuantRS2Result<f64>
fn get_probability( &self, state: &dyn GpuBuffer, qubit: QubitId, n_qubits: usize, ) -> QuantRS2Result<f64>
Get measurement probability without collapsing