Skip to main content

ExecutionPolicy

Enum ExecutionPolicy 

Source
pub enum ExecutionPolicy {
    AmbientRayon,
    Sequential,
    Rayon {
        max_threads: NonZeroUsize,
    },
}
Expand description

Controls how a strided operation may use CPU threads.

This policy controls fanout only. It does not create a Rayon pool or choose CPU placement; callers that need placement control should install the operation in their chosen executor and then select Self::Sequential or Self::Rayon.

The policy applies to fanout owned by strided-kernel. A bounded worker partition runs nested strided operations sequentially so nested operations cannot multiply the outer budget. The scope is worker-local, not a task-local Rayon context, and is not propagated to threads or Rayon tasks created by user callbacks.

User callbacks that rely on policy isolation must not enter their own Rayon scheduling or yield boundary (join, scope, spawn, and similar APIs). At such a callback-owned boundary, Rayon may execute unrelated work on the waiting worker while its worker-local policy is active. strided-kernel suspends the policy at every scheduler boundary it owns, but cannot do so for arbitrary scheduling performed inside a callback.

Variants§

§

AmbientRayon

Preserve the compatibility behavior of using all threads in the current installed Rayon pool, or the global pool when no pool is installed.

Explicit runtimes should prefer Self::Sequential or Self::Rayon.

§

Sequential

Execute entirely on the calling thread with zero Rayon fanout.

§

Rayon

Use the currently installed Rayon pool while limiting the operation to at most max_threads concurrent partitions.

Without the parallel feature, operations remain sequential.

Fields

§max_threads: NonZeroUsize

Trait Implementations§

Source§

impl Clone for ExecutionPolicy

Source§

fn clone(&self) -> ExecutionPolicy

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for ExecutionPolicy

Source§

impl Debug for ExecutionPolicy

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for ExecutionPolicy

Source§

impl PartialEq for ExecutionPolicy

Source§

fn eq(&self, other: &ExecutionPolicy) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ExecutionPolicy

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

Source§

impl<T> MaybeSendSync for T

Source§

impl<T> MaybeSync for T

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.