pub enum ExecutionPolicy {
AmbientRayon,
Sequential,
Rayon {
max_threads: NonZero<usize>,
},
}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.
Trait Implementations§
Source§impl Clone for ExecutionPolicy
impl Clone for ExecutionPolicy
Source§fn clone(&self) -> ExecutionPolicy
fn clone(&self) -> ExecutionPolicy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ExecutionPolicy
impl Debug for ExecutionPolicy
Source§impl PartialEq for ExecutionPolicy
impl PartialEq for ExecutionPolicy
Source§fn eq(&self, other: &ExecutionPolicy) -> bool
fn eq(&self, other: &ExecutionPolicy) -> bool
self and other values to be equal, and is used by ==.impl Copy for ExecutionPolicy
impl Eq for ExecutionPolicy
impl StructuralPartialEq for ExecutionPolicy
Auto Trait Implementations§
impl Freeze for ExecutionPolicy
impl RefUnwindSafe for ExecutionPolicy
impl Send for ExecutionPolicy
impl Sync for ExecutionPolicy
impl Unpin for ExecutionPolicy
impl UnsafeUnpin for ExecutionPolicy
impl UnwindSafe for ExecutionPolicy
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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>
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>
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