PartitionOptions

Struct PartitionOptions 

Source
pub struct PartitionOptions { /* private fields */ }
Expand description

Defines the parameters used to calculate partition size when committing to the traces generated during the protocol.

Using multiple partitions will change how vector commitments are calculated:

  • Input matrix columns are split into at most num_partitions partitions
  • For each matrix row, a hash is calculated for each partition separately
  • The results are merged together by one more hash iteration

This is especially useful when proving with multiple GPU cards where each device holds a subset of data and allows less data reshuffling when generating commitments.

Hash_rate parameter is used to find the optimal partition size to minimize the number of hash iterations. It specifies how many field elements are consumed by each hash iteration.

Implementations§

Source§

impl PartitionOptions

Source

pub const fn new(num_partitions: usize, hash_rate: usize) -> Self

Returns a new instance of [PartitionOptions].

Source

pub fn partition_size<E: FieldElement>(&self, num_columns: usize) -> usize

Returns the size of each partition used when committing to the main and auxiliary traces as well as the constraint evaluation trace. The returned size is given in terms of number of columns in the field E.

Source

pub fn num_partitions<E: FieldElement>(&self, num_columns: usize) -> usize

The actual number of partitions, after the min partition size implied by the hash rate is taken into account.

Trait Implementations§

Source§

impl Clone for PartitionOptions

Source§

fn clone(&self) -> PartitionOptions

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PartitionOptions

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PartitionOptions

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for PartitionOptions

Source§

fn eq(&self, other: &PartitionOptions) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for PartitionOptions

Source§

impl Eq for PartitionOptions

Source§

impl StructuralPartialEq for PartitionOptions

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.