Trait GpuKernel

Source
pub trait GpuKernel: Send + Sync {
    // Required methods
    fn apply_single_qubit_gate(
        &self,
        state: &mut dyn GpuBuffer,
        gate_matrix: &[Complex64; 4],
        qubit: QubitId,
        n_qubits: usize,
    ) -> QuantRS2Result<()>;
    fn apply_two_qubit_gate(
        &self,
        state: &mut dyn GpuBuffer,
        gate_matrix: &[Complex64; 16],
        control: QubitId,
        target: QubitId,
        n_qubits: usize,
    ) -> QuantRS2Result<()>;
    fn apply_multi_qubit_gate(
        &self,
        state: &mut dyn GpuBuffer,
        gate_matrix: &Array2<Complex64>,
        qubits: &[QubitId],
        n_qubits: usize,
    ) -> QuantRS2Result<()>;
    fn measure_qubit(
        &self,
        state: &dyn GpuBuffer,
        qubit: QubitId,
        n_qubits: usize,
    ) -> QuantRS2Result<(bool, f64)>;
    fn expectation_value(
        &self,
        state: &dyn GpuBuffer,
        observable: &Array2<Complex64>,
        qubits: &[QubitId],
        n_qubits: usize,
    ) -> QuantRS2Result<f64>;
}
Expand description

GPU kernel for quantum operations

Required Methods§

Source

fn apply_single_qubit_gate( &self, state: &mut dyn GpuBuffer, gate_matrix: &[Complex64; 4], qubit: QubitId, n_qubits: usize, ) -> QuantRS2Result<()>

Apply a single-qubit gate

Source

fn apply_two_qubit_gate( &self, state: &mut dyn GpuBuffer, gate_matrix: &[Complex64; 16], control: QubitId, target: QubitId, n_qubits: usize, ) -> QuantRS2Result<()>

Apply a two-qubit gate

Source

fn apply_multi_qubit_gate( &self, state: &mut dyn GpuBuffer, gate_matrix: &Array2<Complex64>, qubits: &[QubitId], n_qubits: usize, ) -> QuantRS2Result<()>

Apply a multi-qubit gate

Source

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

Measure a qubit

Source

fn expectation_value( &self, state: &dyn GpuBuffer, observable: &Array2<Complex64>, qubits: &[QubitId], n_qubits: usize, ) -> QuantRS2Result<f64>

Calculate expectation value

Implementors§