Skip to main content

WorkgroupTuner

Struct WorkgroupTuner 

Source
pub struct WorkgroupTuner {
    pub raster_2d: (u32, u32),
    pub reduction: u32,
    pub fft: u32,
}
Expand description

Optimal workgroup sizes derived from GPU adapter limits.

Workgroup sizes are clamped to the adapter’s reported maximums, so kernels compile and dispatch correctly on every device.

§Derivation

Call WorkgroupTuner::derive_from_limits after obtaining the adapter to get device-specific sizes. Use WorkgroupTuner::unlimited (or Default) when no real device is available (e.g. in unit tests).

Fields§

§raster_2d: (u32, u32)

2D workgroup size for raster/image kernels (e.g. 16×16 or 8×8).

§reduction: u32

1D workgroup size for reduction kernels (e.g. 256 or 64).

§fft: u32

1D workgroup size for FFT kernels (e.g. 64 or 32).

Implementations§

Source§

impl WorkgroupTuner

Source

pub fn derive_from_limits(limits: &Limits) -> Self

Derive optimal workgroup sizes from the adapter’s Limits.

The function tries preferred sizes in descending order of quality and falls back to smaller values when the adapter cannot accommodate the larger ones.

ClassPreferredFallback 1Fallback 2
raster_2d16 × 168 × 84 × 4
reduction256
fft64

reduction and fft are clamped to min(preferred, max_x, max_total).

Source

pub fn unlimited() -> Self

Default tuner assuming unbounded adapter limits (production default).

Equivalent to calling derive_from_limits with Limits::default(), which reports max_compute_workgroup_size_x = 256, max_compute_workgroup_size_y = 256, and max_compute_invocations_per_workgroup = 256.

Trait Implementations§

Source§

impl Clone for WorkgroupTuner

Source§

fn clone(&self) -> WorkgroupTuner

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 WorkgroupTuner

Source§

impl Debug for WorkgroupTuner

Source§

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

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

impl Default for WorkgroupTuner

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for WorkgroupTuner

Source§

impl PartialEq for WorkgroupTuner

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for WorkgroupTuner

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> 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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
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