openvm_stark_backend::prover::cpu

Struct CpuBackend

Source
pub struct CpuBackend<SC> { /* private fields */ }
Expand description

CPU backend using Plonky3 traits.

Trait Implementations§

Source§

impl<SC> Clone for CpuBackend<SC>

Source§

fn clone(&self) -> Self

Returns a copy 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<SC> Default for CpuBackend<SC>

Source§

fn default() -> Self

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

impl<SC> DeviceDataTransporter<SC, CpuBackend<SC>> for CpuBackend<SC>

Source§

fn transport_pk_to_device<'a>( &self, mpk: &'a MultiStarkProvingKey<SC>, air_ids: Vec<usize>, ) -> DeviceMultiStarkProvingKey<'a, CpuBackend<SC>>
where SC: 'a,

Transport the proving key to the device, filtering for only the provided air_ids.
Source§

fn transport_matrix_to_device( &self, matrix: &Arc<RowMajorMatrix<Val<SC>>>, ) -> Arc<RowMajorMatrix<Val<SC>>>

Source§

fn transport_pcs_data_to_device(&self, data: &PcsData<SC>) -> PcsData<SC>

Source§

impl<SC: StarkGenericConfig> OpeningProver<CpuBackend<SC>> for CpuDevice<'_, SC>

Source§

fn open( &self, challenger: &mut SC::Challenger, preprocessed: Vec<&PcsData<SC>>, main: Vec<&PcsData<SC>>, after_phase: Vec<PcsData<SC>>, quotient_data: PcsData<SC>, quotient_degrees: &[u8], ) -> OpeningProof<PcsProof<SC>, SC::Challenge>

Opening proof for multiple RAP matrices, where Read more
Source§

impl<SC: StarkGenericConfig> ProverBackend for CpuBackend<SC>

Source§

const CHALLENGE_EXT_DEGREE: u8 = _

Extension field degree for the challenge field Self::Challenge over base field Self::Val.
Source§

type Val = <<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val

Base field type, on host.
Source§

type Challenge = <SC as StarkGenericConfig>::Challenge

Challenge field (extension field of base field), on host.
Source§

type OpeningProof = OpeningProof<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Proof, <SC as StarkGenericConfig>::Challenge>

PCS opening proof on host (see OpeningProver). This should not be a reference.
Source§

type RapPartialProof = Option<<<SC as StarkGenericConfig>::RapPhaseSeq as RapPhaseSeq<<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val, <SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::PartialProof>

Partial proof for multiple RAPs
Source§

type Commitment = <<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Commitment

Single commitment on host.
Source§

type Challenger = <SC as StarkGenericConfig>::Challenger

Challenger to observe commitments. Sampling is left to other trait implementations. We anticipate that the challenger largely operates on the host.
Source§

type Matrix = Arc<DenseMatrix<<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val>>

Single matrix buffer on device together with dimension metadata. Owning this means nothing else has a shared reference to the buffer.
Source§

type PcsData = PcsData<SC>

Owned buffer for the preimage of a PCS commitment on device, together with any metadata necessary for computing opening proofs. Read more
Source§

type RapPartialProvingKey = <<SC as StarkGenericConfig>::RapPhaseSeq as RapPhaseSeq<<<<SC as StarkGenericConfig>::Pcs as Pcs<<SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::Domain as PolynomialSpace>::Val, <SC as StarkGenericConfig>::Challenge, <SC as StarkGenericConfig>::Challenger>>::PartialProvingKey

Part of proving key for a single RAP specific for the RAP challenge phases
Source§

impl<SC: StarkGenericConfig> QuotientCommitter<CpuBackend<SC>> for CpuDevice<'_, SC>

Source§

fn eval_and_commit_quotient( &self, challenger: &mut SC::Challenger, pk_views: &[DeviceStarkProvingKey<'_, CpuBackend<SC>>], public_values: &[Vec<Val<SC>>], cached_views_per_air: &[Vec<SingleCommitPreimage<&Arc<RowMajorMatrix<Val<SC>>>, &PcsData<SC>>>], common_main_pcs_data: &PcsData<SC>, prover_data_after: &ProverDataAfterRapPhases<CpuBackend<SC>>, ) -> (Com<SC>, PcsData<SC>)

Given a view of the PCS data from all phases of proving, first get the trace polynomials evaluated on the quotient domains. Then compute the quotient polynomial evaluated on the quotient domain and commit to it. Read more
Source§

impl<SC: StarkGenericConfig> RapPartialProver<CpuBackend<SC>> for CpuDevice<'_, SC>

Source§

fn partially_prove<'a>( &self, challenger: &mut SC::Challenger, mpk: &DeviceMultiStarkProvingKey<'a, CpuBackend<SC>>, trace_views: Vec<PairView<&'a Arc<RowMajorMatrix<Val<SC>>>, Val<SC>>>, ) -> (Option<RapPhaseSeqPartialProof<SC>>, ProverDataAfterRapPhases<CpuBackend<SC>>)

The trace_views are the views of the respective trace matrices, evaluated on the trace domain. Currently this function does not provide a view of any already committed data associated with the trace views, although that data is available.
Source§

impl<SC: StarkGenericConfig> TraceCommitter<CpuBackend<SC>> for CpuDevice<'_, SC>

Source§

fn commit( &self, traces: &[Arc<RowMajorMatrix<Val<SC>>>], ) -> (Com<SC>, PcsData<SC>)

Source§

impl<SC> Copy for CpuBackend<SC>

Source§

impl<SC: StarkGenericConfig> ProverDevice<CpuBackend<SC>> for CpuDevice<'_, SC>

Auto Trait Implementations§

§

impl<SC> Freeze for CpuBackend<SC>

§

impl<SC> RefUnwindSafe for CpuBackend<SC>
where SC: RefUnwindSafe,

§

impl<SC> Send for CpuBackend<SC>
where SC: Send,

§

impl<SC> Sync for CpuBackend<SC>
where SC: Sync,

§

impl<SC> Unpin for CpuBackend<SC>
where SC: Unpin,

§

impl<SC> UnwindSafe for CpuBackend<SC>
where SC: UnwindSafe,

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, dst: *mut T)

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize = _

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more