Skip to main content

openvm_cuda_backend/logup_zerocheck/
errors.rs

1use openvm_cuda_common::error::{CudaError, MemCopyError};
2use thiserror::Error;
3
4use crate::{prelude::EF, sponge::GrindError, KernelError};
5
6#[derive(Debug, Error)]
7pub enum Round0PrepError {
8    #[error("cuda error: {0}")]
9    Cuda(#[from] CudaError),
10    #[error("memory copy failed: {0}")]
11    Mem(#[from] MemCopyError),
12    #[error("invalid stacked layout for round-0 staging")]
13    Layout,
14}
15
16#[derive(Debug, Error)]
17pub enum Round0EvalError {
18    #[error("cuda error: {0}")]
19    Cuda(#[from] CudaError),
20    #[error("memcpy error: {0}")]
21    Copy(#[from] MemCopyError),
22    #[error("round-0 layout mismatch")]
23    Layout,
24}
25
26impl From<Round0PrepError> for Round0EvalError {
27    fn from(err: Round0PrepError) -> Self {
28        match err {
29            Round0PrepError::Cuda(e) => Round0EvalError::Cuda(e),
30            Round0PrepError::Mem(e) => Round0EvalError::Copy(e),
31            Round0PrepError::Layout => Round0EvalError::Layout,
32        }
33    }
34}
35
36#[derive(Debug, Error)]
37pub enum FractionalSumcheckError {
38    #[error("nonzero root sum: p={p}, q={q}")]
39    NonzeroRootSum { p: EF, q: EF },
40    #[error("bit reversal: {0}")]
41    BitReversal(CudaError),
42    #[error("segment tree: {0}")]
43    SegmentTree(CudaError),
44    #[error("frac_compute_round: {0}")]
45    ComputeRound(CudaError),
46    #[error("frac_fold_columns: {0}")]
47    FoldColumns(CudaError),
48    #[error("evals_eq_hypercube: {0}")]
49    EvalEqHypercube(KernelError),
50    #[error("grind error: {0}")]
51    Grind(#[from] GrindError),
52    #[error("memcpy error: {0}")]
53    Copy(#[from] MemCopyError),
54}
55
56#[derive(Debug, Error)]
57pub enum InteractionGpuError {
58    #[error("cuda error: {0}")]
59    Cuda(#[from] CudaError),
60    #[error("memcpy error: {0}")]
61    Copy(#[from] MemCopyError),
62    #[error("interaction layout mismatch")]
63    Layout,
64}
65
66#[derive(Debug, Error)]
67pub enum FoldPleError {
68    #[error("cuda error: {0}")]
69    Cuda(#[from] CudaError),
70    #[error("memcpy error: {0}")]
71    Copy(#[from] MemCopyError),
72    #[error("invalid matrix dimensions")]
73    InvalidDimensions,
74}
75
76#[derive(Debug, Error)]
77pub enum UnstackMatrixError {
78    #[error("matrix idx={mat_idx} not found")]
79    MatrixNotFound { mat_idx: usize },
80}