pub struct CpuBackend<SC> { /* private fields */ }
Expand description
CPU backend using Plonky3 traits.
Trait Implementations§
Source§impl<SC> Clone for CpuBackend<SC>
impl<SC> Clone for CpuBackend<SC>
Source§impl<SC> Default for CpuBackend<SC>
impl<SC> Default for CpuBackend<SC>
Source§impl<SC> DeviceDataTransporter<SC, CpuBackend<SC>> for CpuBackend<SC>where
SC: StarkGenericConfig,
impl<SC> DeviceDataTransporter<SC, CpuBackend<SC>> for CpuBackend<SC>where
SC: StarkGenericConfig,
Source§fn transport_pk_to_device<'a>(
&self,
mpk: &'a MultiStarkProvingKey<SC>,
air_ids: Vec<usize>,
) -> DeviceMultiStarkProvingKey<'a, CpuBackend<SC>>where
SC: 'a,
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
.fn transport_matrix_to_device( &self, matrix: &Arc<RowMajorMatrix<Val<SC>>>, ) -> Arc<RowMajorMatrix<Val<SC>>>
fn transport_pcs_data_to_device(&self, data: &PcsData<SC>) -> PcsData<SC>
Source§impl<SC: StarkGenericConfig> OpeningProver<CpuBackend<SC>> for CpuDevice<'_, SC>
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>
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>
impl<SC: StarkGenericConfig> ProverBackend for CpuBackend<SC>
Source§const CHALLENGE_EXT_DEGREE: u8 = _
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
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
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>
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>
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
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
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>>
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>
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
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>
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>)
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>
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>>)
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>
impl<SC: StarkGenericConfig> TraceCommitter<CpuBackend<SC>> for CpuDevice<'_, SC>
impl<SC> Copy for CpuBackend<SC>
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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