Skip to main content

AdvancedProcessor

Struct AdvancedProcessor 

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

Advanced graph-processing processor: real timing/memory instrumentation plus (optionally) adaptive candidate-operation selection.

Implementations§

Source§

impl AdvancedProcessor

Source

pub fn new(config: AdvancedConfig) -> Self

Create a new advanced processor

Source

pub fn execute<N, E, Ix, T, F>( &mut self, graph: &Graph<N, E, Ix>, operation: F, ) -> Result<T>
where N: Node + Debug, E: EdgeWeight, Ix: IndexType, F: FnOnce(&Graph<N, E, Ix>) -> Result<T>,

Execute advanced graph processing.

Wraps operation with genuine wall-clock timing and a real (structural) memory estimate; both feed Self::get_optimization_stats. Always runs operation on the CPU – see the module docs for why there is no GPU/neuromorphic dispatch path for an opaque closure.

Source

pub fn execute_profiled<N, E, Ix, T, F>( &mut self, graph: &Graph<N, E, Ix>, operation: F, ) -> Result<T>
where N: Node + Debug, E: EdgeWeight, Ix: IndexType, F: FnOnce(&Graph<N, E, Ix>) -> Result<T>,

Like Self::execute, but additionally measures REAL operating-system process memory (peak resident-set size) while operation runs, via background-thread sampling (crate::memory::AdvancedMemoryAnalyzer). This is strictly more accurate than the structural estimate execute uses, at the cost of spawning a monitoring thread per call – prefer execute in hot loops or over many small graphs.

Source

pub fn execute_adaptive<N, E, Ix, T>( &mut self, graph: &Graph<N, E, Ix>, candidates: &[CandidateOp<N, E, Ix, T>], ) -> Result<T>
where N: Node + Debug, E: EdgeWeight, Ix: IndexType,

Executes the best-performing of several candidate implementations of the same operation, per this processor’s adaptive (bandit-RL) selection policy (NeuralRLAgent), and feeds the observed latency back in as a reward so future calls keep adapting. This is the genuine “RL-driven algorithm selection” the module docs describe: candidates[i] are, e.g., different algorithm implementations or parameter choices for the same task; over repeated calls the agent learns which one tends to be fastest for this workload and increasingly favors it, while still exploring the others per the configured ExplorationStrategy.

Source

pub fn get_performance_report(&self) -> SimplePerformanceReport

Get performance report

Source

pub fn get_optimization_stats(&self) -> AdvancedStats

Get optimization statistics, genuinely accumulated from every execute/execute_profiled/execute_adaptive call made so far (starts at AdvancedStats::default before the first call).

Source

pub fn gpu_context(&self) -> &GPUAccelerationContext

Real GPU hardware-availability context, computed via GPUAccelerationContext::detect when this processor was constructed with enable_gpu_acceleration set (an honest GPUAccelerationContext::default otherwise).

Source

pub fn rl_agent(&self) -> &NeuralRLAgent

The adaptive (bandit-RL) agent backing Self::execute_adaptive.

Source

pub fn rl_agent_mut(&mut self) -> &mut NeuralRLAgent

Mutable access to the adaptive agent, e.g. to swap its ExplorationStrategy.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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

Source§

fn upcast(&self) -> Option<&T>

Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

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