Hal

Trait Hal 

Source
pub trait Hal {
    type Field: Field<Elem = Self::Elem, ExtElem = Self::ExtElem>;
    type Elem: Elem + RootsOfUnity;
    type ExtElem: ExtElem<SubElem = Self::Elem>;
    type Buffer<T: Clone + Debug + PartialEq>: Buffer<T>;

    const CHECK_SIZE: usize = _;
Show 31 methods // Required methods fn has_unified_memory(&self) -> bool; fn get_hash_suite(&self) -> &HashSuite<Self::Field>; fn alloc_digest( &self, name: &'static str, size: usize, ) -> Self::Buffer<Digest>; fn alloc_elem( &self, name: &'static str, size: usize, ) -> Self::Buffer<Self::Elem>; fn alloc_extelem( &self, name: &'static str, size: usize, ) -> Self::Buffer<Self::ExtElem>; fn alloc_u32(&self, name: &'static str, size: usize) -> Self::Buffer<u32>; fn copy_from_digest( &self, name: &'static str, slice: &[Digest], ) -> Self::Buffer<Digest>; fn copy_from_elem( &self, name: &'static str, slice: &[Self::Elem], ) -> Self::Buffer<Self::Elem>; fn copy_from_extelem( &self, name: &'static str, slice: &[Self::ExtElem], ) -> Self::Buffer<Self::ExtElem>; fn copy_from_u32( &self, name: &'static str, slice: &[u32], ) -> Self::Buffer<u32>; fn batch_expand_into_evaluate_ntt( &self, output: &Self::Buffer<Self::Elem>, input: &Self::Buffer<Self::Elem>, count: usize, expand_bits: usize, ); fn batch_interpolate_ntt(&self, io: &Self::Buffer<Self::Elem>, count: usize); fn batch_bit_reverse(&self, io: &Self::Buffer<Self::Elem>, count: usize); fn batch_evaluate_any( &self, coeffs: &Self::Buffer<Self::Elem>, poly_count: usize, which: &Self::Buffer<u32>, xs: &Self::Buffer<Self::ExtElem>, out: &Self::Buffer<Self::ExtElem>, ); fn zk_shift(&self, io: &Self::Buffer<Self::Elem>, count: usize); fn mix_poly_coeffs( &self, out: &Self::Buffer<Self::ExtElem>, mix_start: &Self::ExtElem, mix: &Self::ExtElem, input: &Self::Buffer<Self::Elem>, combos: &Self::Buffer<u32>, input_size: usize, count: usize, ); fn eltwise_add_elem( &self, output: &Self::Buffer<Self::Elem>, input1: &Self::Buffer<Self::Elem>, input2: &Self::Buffer<Self::Elem>, ); fn eltwise_sum_extelem( &self, output: &Self::Buffer<Self::Elem>, input: &Self::Buffer<Self::ExtElem>, ); fn eltwise_copy_elem( &self, output: &Self::Buffer<Self::Elem>, input: &Self::Buffer<Self::Elem>, ); fn eltwise_copy_elem_slice( &self, into: &Self::Buffer<Self::Elem>, from: &[Self::Elem], from_rows: usize, from_cols: usize, from_offset: usize, from_stride: usize, into_offset: usize, into_stride: usize, ); fn eltwise_zeroize_elem(&self, elems: &Self::Buffer<Self::Elem>); fn fri_fold( &self, output: &Self::Buffer<Self::Elem>, input: &Self::Buffer<Self::Elem>, mix: &Self::ExtElem, ); fn hash_rows( &self, output: &Self::Buffer<Digest>, matrix: &Self::Buffer<Self::Elem>, ); fn hash_fold( &self, io: &Self::Buffer<Digest>, input_size: usize, output_size: usize, ); fn gather_sample( &self, dst: &Self::Buffer<Self::Elem>, src: &Self::Buffer<Self::Elem>, idx: usize, size: usize, stride: usize, ); fn scatter( &self, into: &Self::Buffer<Self::Elem>, index: &[u32], offsets: &[u32], values: &[Self::Elem], ); fn prefix_products(&self, io: &Self::Buffer<Self::ExtElem>); // Provided methods fn alloc_elem_init( &self, name: &'static str, size: usize, value: Self::Elem, ) -> Self::Buffer<Self::Elem> { ... } fn alloc_extelem_zeroed( &self, name: &'static str, size: usize, ) -> Self::Buffer<Self::ExtElem> { ... } fn combos_prepare( &self, combos: &Self::Buffer<Self::ExtElem>, coeff_u: &[Self::ExtElem], combo_count: usize, cycles: usize, reg_sizes: &[u32], reg_combo_ids: &[u32], mix: &Self::ExtElem, ) { ... } fn combos_divide( &self, combos: &Self::Buffer<Self::ExtElem>, chunks: Vec<(usize, Vec<Self::ExtElem>)>, cycles: usize, ) { ... }
}
Available on crate feature prove only.

Provided Associated Constants§

Required Associated Types§

Source

type Field: Field<Elem = Self::Elem, ExtElem = Self::ExtElem>

Source

type Elem: Elem + RootsOfUnity

Source

type ExtElem: ExtElem<SubElem = Self::Elem>

Source

type Buffer<T: Clone + Debug + PartialEq>: Buffer<T>

Required Methods§

Source

fn has_unified_memory(&self) -> bool

Source

fn get_hash_suite(&self) -> &HashSuite<Self::Field>

Source

fn alloc_digest(&self, name: &'static str, size: usize) -> Self::Buffer<Digest>

Source

fn alloc_elem( &self, name: &'static str, size: usize, ) -> Self::Buffer<Self::Elem>

Source

fn alloc_extelem( &self, name: &'static str, size: usize, ) -> Self::Buffer<Self::ExtElem>

Source

fn alloc_u32(&self, name: &'static str, size: usize) -> Self::Buffer<u32>

Source

fn copy_from_digest( &self, name: &'static str, slice: &[Digest], ) -> Self::Buffer<Digest>

Source

fn copy_from_elem( &self, name: &'static str, slice: &[Self::Elem], ) -> Self::Buffer<Self::Elem>

Source

fn copy_from_extelem( &self, name: &'static str, slice: &[Self::ExtElem], ) -> Self::Buffer<Self::ExtElem>

Source

fn copy_from_u32(&self, name: &'static str, slice: &[u32]) -> Self::Buffer<u32>

Source

fn batch_expand_into_evaluate_ntt( &self, output: &Self::Buffer<Self::Elem>, input: &Self::Buffer<Self::Elem>, count: usize, expand_bits: usize, )

Source

fn batch_interpolate_ntt(&self, io: &Self::Buffer<Self::Elem>, count: usize)

Source

fn batch_bit_reverse(&self, io: &Self::Buffer<Self::Elem>, count: usize)

Source

fn batch_evaluate_any( &self, coeffs: &Self::Buffer<Self::Elem>, poly_count: usize, which: &Self::Buffer<u32>, xs: &Self::Buffer<Self::ExtElem>, out: &Self::Buffer<Self::ExtElem>, )

Source

fn zk_shift(&self, io: &Self::Buffer<Self::Elem>, count: usize)

Source

fn mix_poly_coeffs( &self, out: &Self::Buffer<Self::ExtElem>, mix_start: &Self::ExtElem, mix: &Self::ExtElem, input: &Self::Buffer<Self::Elem>, combos: &Self::Buffer<u32>, input_size: usize, count: usize, )

Source

fn eltwise_add_elem( &self, output: &Self::Buffer<Self::Elem>, input1: &Self::Buffer<Self::Elem>, input2: &Self::Buffer<Self::Elem>, )

Source

fn eltwise_sum_extelem( &self, output: &Self::Buffer<Self::Elem>, input: &Self::Buffer<Self::ExtElem>, )

Source

fn eltwise_copy_elem( &self, output: &Self::Buffer<Self::Elem>, input: &Self::Buffer<Self::Elem>, )

Source

fn eltwise_copy_elem_slice( &self, into: &Self::Buffer<Self::Elem>, from: &[Self::Elem], from_rows: usize, from_cols: usize, from_offset: usize, from_stride: usize, into_offset: usize, into_stride: usize, )

Source

fn eltwise_zeroize_elem(&self, elems: &Self::Buffer<Self::Elem>)

Source

fn fri_fold( &self, output: &Self::Buffer<Self::Elem>, input: &Self::Buffer<Self::Elem>, mix: &Self::ExtElem, )

Source

fn hash_rows( &self, output: &Self::Buffer<Digest>, matrix: &Self::Buffer<Self::Elem>, )

Source

fn hash_fold( &self, io: &Self::Buffer<Digest>, input_size: usize, output_size: usize, )

Source

fn gather_sample( &self, dst: &Self::Buffer<Self::Elem>, src: &Self::Buffer<Self::Elem>, idx: usize, size: usize, stride: usize, )

Source

fn scatter( &self, into: &Self::Buffer<Self::Elem>, index: &[u32], offsets: &[u32], values: &[Self::Elem], )

Source

fn prefix_products(&self, io: &Self::Buffer<Self::ExtElem>)

Provided Methods§

Source

fn alloc_elem_init( &self, name: &'static str, size: usize, value: Self::Elem, ) -> Self::Buffer<Self::Elem>

Source

fn alloc_extelem_zeroed( &self, name: &'static str, size: usize, ) -> Self::Buffer<Self::ExtElem>

Source

fn combos_prepare( &self, combos: &Self::Buffer<Self::ExtElem>, coeff_u: &[Self::ExtElem], combo_count: usize, cycles: usize, reg_sizes: &[u32], reg_combo_ids: &[u32], mix: &Self::ExtElem, )

Source

fn combos_divide( &self, combos: &Self::Buffer<Self::ExtElem>, chunks: Vec<(usize, Vec<Self::ExtElem>)>, cycles: usize, )

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<F, L, R> Hal for DualHal<F, L, R>
where F: Field, L: Hal<Field = F, Elem = F::Elem, ExtElem = F::ExtElem>, R: Hal<Field = F, Elem = F::Elem, ExtElem = F::ExtElem>,

Source§

type Field = F

Source§

type Elem = <F as Field>::Elem

Source§

type ExtElem = <F as Field>::ExtElem

Source§

type Buffer<T: Clone + Debug + PartialEq> = BufferImpl<T, <L as Hal>::Buffer<T>, <R as Hal>::Buffer<T>>

Source§

impl<F: Field> Hal for CpuHal<F>