Skip to main content

DirectGpuScanner

Struct DirectGpuScanner 

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

State for a pipelined direct-to-GPU scan.

Implementations§

Source§

impl DirectGpuScanner

Source

pub fn compile(patterns: &[&[u8]]) -> Self

Compile a set of literal patterns into a direct GPU matcher.

Source

pub fn program(&self) -> &Program

Return the compiled packed-byte GPU program.

Source

pub fn literal_set_cache_key(&self) -> String

Cache identity of the underlying literal set. Used by the MatchScan::cache_key impl so DirectGpuScanner caches don’t fork from the literal-set caches.

Source

pub fn reference_scan(&self, haystack: &[u8]) -> Vec<Match>

CPU oracle for parity and tests.

Source

pub fn scan<B: VyreBackend + ?Sized>( &self, backend: &B, haystack: &[u8], max_matches: u32, ) -> Result<Vec<Match>, BackendError>

Dispatch the direct packed-byte matcher through a concrete backend.

§Errors

Returns vyre::BackendError when the backend cannot dispatch or read back the compiled matcher.

Trait Implementations§

Source§

impl MatchScan for DirectGpuScanner

Source§

fn scan( &self, backend: &dyn VyreBackend, haystack: &[u8], max_matches: u32, ) -> Result<Vec<Match>, BackendError>

GPU dispatch through a concrete backend, returning up to max_matches matches. Engines pre-allocate the hit buffer at max_matches * 3 + 1 u32 slots; setting this too low silently truncates results.
Source§

fn reference_scan(&self, haystack: &[u8]) -> Vec<Match>

Reference oracle scan. Used by the cross-layer parity tests in vyre-conform; engines that lack a meaningful CPU stepper (none today) can return an empty vec but should never fabricate results. Read more
Source§

fn cache_key(&self) -> String

Stable identity for cache filenames + telemetry. Engines hash their pattern set + version constant. Consumers pass this straight to cached_load_or_compile without further hashing.
Source§

fn try_reference_scan( &self, haystack: &[u8], ) -> Result<Vec<Match>, BackendError>

Fallible reference oracle scan. Surfaces a CPU-stepper failure (a haystack longer than the u32 match ABI the GPU path uses) as an error instead of aborting, so consumers holding dyn MatchScan can recover. The default delegates to the infallible Self::reference_scan for engines whose stepper genuinely cannot fail; engines with a fallible stepper override this to forward to their real fallible scan (and never route through the panicking infallible wrapper). Read more

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> 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> Same for T

Source§

type Output = T

Should always be Self
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<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