pub struct ResidentSizingPolicy { /* 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 ResidentSizingPolicy
impl ResidentSizingPolicy
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: ResidentGridRequest,
limits: ResidentGridLimits,
) -> Result<ResidentGridPlan, BackendError>
pub fn calculate_optimal_grid( &self, request: ResidentGridRequest, limits: ResidentGridLimits, ) -> Result<ResidentGridPlan, 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,
) -> ResidentLaunchGeometry
pub fn geometry_from_slots( &self, slot_count: u32, worker_count: u32, max_workgroup_size_x: u32, ) -> ResidentLaunchGeometry
Build geometry for an already-sized ring.
Trait Implementations§
Source§impl Clone for ResidentSizingPolicy
impl Clone for ResidentSizingPolicy
Source§fn clone(&self) -> ResidentSizingPolicy
fn clone(&self) -> ResidentSizingPolicy
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 ResidentSizingPolicy
Source§impl Debug for ResidentSizingPolicy
impl Debug for ResidentSizingPolicy
Source§impl Default for ResidentSizingPolicy
impl Default for ResidentSizingPolicy
impl Eq for ResidentSizingPolicy
Source§impl Hash for ResidentSizingPolicy
impl Hash for ResidentSizingPolicy
Source§impl PartialEq for ResidentSizingPolicy
impl PartialEq for ResidentSizingPolicy
impl StructuralPartialEq for ResidentSizingPolicy
Auto Trait Implementations§
impl Freeze for ResidentSizingPolicy
impl RefUnwindSafe for ResidentSizingPolicy
impl Send for ResidentSizingPolicy
impl Sync for ResidentSizingPolicy
impl Unpin for ResidentSizingPolicy
impl UnsafeUnpin for ResidentSizingPolicy
impl UnwindSafe for ResidentSizingPolicy
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.