Struct MpiExecutionGroup
pub struct MpiExecutionGroup { /* private fields */ }Description
One application-owned MPI communicator duplicated for Eqiora admissions.
Implementations§
§impl MpiExecutionGroup
impl MpiExecutionGroup
pub fn duplicate<C>(
communicator: &C,
provided: Threading,
required: MpiThreadSupport,
) -> Result<MpiExecutionGroup, Diagnostic>where
C: Communicator,
pub fn duplicate<C>(
communicator: &C,
provided: Threading,
required: MpiThreadSupport,
) -> Result<MpiExecutionGroup, Diagnostic>where
C: Communicator,
Duplicate an initialized communicator and validate thread support.
MPI initialization/finalization remains entirely with the application.
provided must be the level returned by initialize_with_threading.
§Errors
Returns EQ0807 if rank/size do not fit the Eqiora partition contract
or the provided threading level is below required.
pub const fn partitions(&self) -> NonZero<usize>
pub const fn partitions(&self) -> NonZero<usize>
Number of ranks/partitions in this execution group.
pub const fn partition(&self) -> PartitionId
pub const fn partition(&self) -> PartitionId
Local rank represented as an Eqiora partition identity.
pub const fn thread_support(&self) -> MpiThreadSupport
pub const fn thread_support(&self) -> MpiThreadSupport
Thread-support level actually provided at MPI initialization.
pub fn solver_capabilities(&self) -> SolverCapabilities
pub fn solver_capabilities(&self) -> SolverCapabilities
Exact numerical policies admitted by the current distributed evidence slice.
pub fn agree_rank_device_topology(
&mut self,
local: RankLocalDeviceV1,
) -> Result<MpiRankDeviceTopologyV1, Diagnostic>
pub fn agree_rank_device_topology( &mut self, local: RankLocalDeviceV1, ) -> Result<MpiRankDeviceTopologyV1, Diagnostic>
Collectively bind one distinct physical device to every MPI rank.
V1 requires the launcher to expose exactly one device to each process, making the local ordinal zero on every rank. The fixed-width physical identity prevents two ranks on the same host from silently selecting the same device. The returned rank-ordered evidence and fingerprint are identical on every rank.
§Errors
Returns a common EQ0807 diagnostic when an ordinal is not zero, a
physical identity is zero or duplicated, allocation fails, or the
gathered record count contradicts the execution group.
pub fn agree_composed_local_readiness(
&mut self,
local: &Result<(), Diagnostic>,
) -> Result<(), Diagnostic>
pub fn agree_composed_local_readiness( &mut self, local: &Result<(), Diagnostic>, ) -> Result<(), Diagnostic>
Agree readiness of fallible rank-local work in a composed adapter.
A composed adapter calls this before entering its next MPI collective: after local capture/allocation/session preparation and again after any fallible post-execution evidence validation or summary construction. This prevents a ready rank from entering a collective while another rank returns from local work. No payload or backend-specific identity crosses this seam.
§Errors
Returns a common admission-phase diagnostic when any rank reports local readiness failure.
pub fn agree_composed_execution_summary(
&mut self,
local_summary: [u8; 32],
) -> Result<(), Diagnostic>
pub fn agree_composed_execution_summary( &mut self, local_summary: [u8; 32], ) -> Result<(), Diagnostic>
Require one fixed-width composed-execution summary on every rank.
A composition adapter calls this after the ordinary MPI execution receipt has been independently agreed. The adapter’s summary can bind topology, transport, local-action counts, and that receipt without exposing a general byte registry or MPI communicator. This seam applies its own domain separation before comparison.
§Errors
Returns a common EQ0802 diagnostic when rank summaries differ.
pub fn admit<'group, 'model>(
&'group mut self,
system: &'model DistributedLinearSystem,
complete: &'model CanonicalCsrSystemView,
plan: SolverPlan,
) -> Result<AdmittedDistributedRun<'group, 'model>, Diagnostic>
pub fn admit<'group, 'model>( &'group mut self, system: &'model DistributedLinearSystem, complete: &'model CanonicalCsrSystemView, plan: SolverPlan, ) -> Result<AdmittedDistributedRun<'group, 'model>, Diagnostic>
Collectively seal one system, complete verifier, and sole solver plan.
All dynamically sized communication and verification storage is fallibly reserved before the first admission record is exchanged. A scalar readiness reduction makes allocation/validation failure common before any rank can enter the record gather.
§Errors
Returns the same stable diagnostic on every participating rank for a system, layout, plan, verifier, count, or workspace contradiction.
Trait Implementations§
§impl Debug for MpiExecutionGroup
impl Debug for MpiExecutionGroup
§impl MpiAdmittedExecutionAdapter for MpiExecutionGroup
impl MpiAdmittedExecutionAdapter for MpiExecutionGroup
§fn execute_admitted(
&mut self,
admitted: AdmittedExecution<'_>,
) -> Result<AcceptedLinearExecution, Diagnostic>
fn execute_admitted( &mut self, admitted: AdmittedExecution<'_>, ) -> Result<AcceptedLinearExecution, Diagnostic>
§fn execute_admitted_with_local_action(
&mut self,
admitted: AdmittedExecution<'_>,
action: &mut dyn MpiRankLocalCsrAction,
) -> Result<AcceptedLinearExecution, Diagnostic>
fn execute_admitted_with_local_action( &mut self, admitted: AdmittedExecution<'_>, action: &mut dyn MpiRankLocalCsrAction, ) -> Result<AcceptedLinearExecution, Diagnostic>
§impl MpiCudaAdmittedExecutionAdapter for MpiExecutionGroup
impl MpiCudaAdmittedExecutionAdapter for MpiExecutionGroup
§fn execute_admitted_mpi_cuda(
&mut self,
admitted: AdmittedExecution<'_>,
) -> Result<AcceptedMpiCudaLinearExecution, Diagnostic>
fn execute_admitted_mpi_cuda( &mut self, admitted: AdmittedExecution<'_>, ) -> Result<AcceptedMpiCudaLinearExecution, Diagnostic>
Auto Trait Implementations§
impl Freeze for MpiExecutionGroup
impl RefUnwindSafe for MpiExecutionGroup
impl !Send for MpiExecutionGroup
impl !Sync for MpiExecutionGroup
impl Unpin for MpiExecutionGroup
impl UnsafeUnpin for MpiExecutionGroup
impl UnwindSafe for MpiExecutionGroup
Blanket Implementations§
Source§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Source§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
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
§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
§fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§impl<T> ConvUtil for T
impl<T> ConvUtil for T
§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
§fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
§fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> Twhere
Self: Distribution<T>,
Source§impl<T> From<T> for T
impl<T> From<T> for T
Source§impl<T, U> Into<U> for Twhere
U: From<T>,
impl<T, U> Into<U> for Twhere
U: From<T>,
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>where
F: FnOnce(&Self) -> bool,
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
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§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Same for T
impl<T> Same for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.