pub struct MegakernelSizingPolicy { /* private fields */ }Expand description
Shared worker-grid sizing policy for megakernel dispatch.
This is the host-side policy surface for persistent worker counts, workgroup width, slot padding, and backend grid geometry.
Implementations§
Source§impl MegakernelSizingPolicy
impl MegakernelSizingPolicy
Sourcepub const fn standard() -> Self
pub const fn standard() -> Self
Standard megakernel sizing policy used by built-in dispatch paths.
Sourcepub const fn from_scheduling(scheduling: SchedulingPolicy) -> Self
pub const fn from_scheduling(scheduling: SchedulingPolicy) -> Self
Build from a shared backend-neutral scheduling policy.
Sourcepub const fn default_worker_count(&self) -> u32
pub const fn default_worker_count(&self) -> u32
Default persistent worker workgroup count.
Sourcepub const fn worker_workgroup_size(
&self,
worker_count: u32,
max_workgroup_size_x: u32,
) -> u32
pub const fn worker_workgroup_size( &self, worker_count: u32, max_workgroup_size_x: u32, ) -> u32
Clamp a requested worker count into the legal workgroup x dimension.
Sourcepub const fn padded_slot_count(
&self,
slot_count: u32,
workgroup_size_x: u32,
) -> u32
pub const fn padded_slot_count( &self, slot_count: u32, workgroup_size_x: u32, ) -> u32
Round a logical slot count up to a whole worker workgroup.
Sourcepub const fn dispatch_grid_for(
&self,
worker_count: u32,
queue_len: u32,
max_workgroup_size_x: u32,
) -> [u32; 3]
pub const fn dispatch_grid_for( &self, worker_count: u32, queue_len: u32, max_workgroup_size_x: u32, ) -> [u32; 3]
Compute the backend dispatch grid for a logical queue length.
Sourcepub const fn default_worker_groups_from_limits(
&self,
max_compute_workgroups_per_dimension: u32,
max_compute_invocations_per_workgroup: u32,
) -> u32
pub const fn default_worker_groups_from_limits( &self, max_compute_workgroups_per_dimension: u32, max_compute_invocations_per_workgroup: u32, ) -> u32
Compute a persistent-worker ceiling from adapter limits.
Sourcepub fn calculate_optimal_grid(
&self,
request: MegakernelGridRequest,
limits: MegakernelGridLimits,
) -> Result<MegakernelGridPlan, BackendError>
pub fn calculate_optimal_grid( &self, request: MegakernelGridRequest, limits: MegakernelGridLimits, ) -> Result<MegakernelGridPlan, BackendError>
Resolve worker groups, workgroup width, slot padding, and dispatch grid.
§Errors
Returns BackendError when adapter limits are malformed.
Sourcepub fn geometry_from_slots(
&self,
slot_count: u32,
worker_count: u32,
max_workgroup_size_x: u32,
) -> MegakernelLaunchGeometry
pub fn geometry_from_slots( &self, slot_count: u32, worker_count: u32, max_workgroup_size_x: u32, ) -> MegakernelLaunchGeometry
Build geometry for an already-sized ring.
Trait Implementations§
Source§impl Clone for MegakernelSizingPolicy
impl Clone for MegakernelSizingPolicy
Source§fn clone(&self) -> MegakernelSizingPolicy
fn clone(&self) -> MegakernelSizingPolicy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for MegakernelSizingPolicy
Source§impl Debug for MegakernelSizingPolicy
impl Debug for MegakernelSizingPolicy
Source§impl Default for MegakernelSizingPolicy
impl Default for MegakernelSizingPolicy
impl Eq for MegakernelSizingPolicy
Source§impl Hash for MegakernelSizingPolicy
impl Hash for MegakernelSizingPolicy
Source§impl PartialEq for MegakernelSizingPolicy
impl PartialEq for MegakernelSizingPolicy
Source§fn eq(&self, other: &MegakernelSizingPolicy) -> bool
fn eq(&self, other: &MegakernelSizingPolicy) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for MegakernelSizingPolicy
Auto Trait Implementations§
impl Freeze for MegakernelSizingPolicy
impl RefUnwindSafe for MegakernelSizingPolicy
impl Send for MegakernelSizingPolicy
impl Sync for MegakernelSizingPolicy
impl Unpin for MegakernelSizingPolicy
impl UnsafeUnpin for MegakernelSizingPolicy
impl UnwindSafe for MegakernelSizingPolicy
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,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.