Back to Eqiora docs Skip to main content

MpiExecutionGroup

Struct MpiExecutionGroup 

pub struct MpiExecutionGroup { /* private fields */ }
Description

One application-owned MPI communicator duplicated for Eqiora admissions.

Implementations§

§

impl MpiExecutionGroup

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>

Number of ranks/partitions in this execution group.

pub const fn partition(&self) -> PartitionId

Local rank represented as an Eqiora partition identity.

pub const fn thread_support(&self) -> MpiThreadSupport

Thread-support level actually provided at MPI initialization.

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>

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>

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>

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>

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

§

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

Formats the value using the given formatter. Read more
§

impl MpiAdmittedExecutionAdapter for MpiExecutionGroup

§

fn execute_admitted( &mut self, admitted: AdmittedExecution<'_>, ) -> Result<AcceptedLinearExecution, Diagnostic>

Execute one graph-bound distributed solve and return its common L2 receipt with a transport-normalized actual collective trace. Read more
§

fn execute_admitted_with_local_action( &mut self, admitted: AdmittedExecution<'_>, action: &mut dyn MpiRankLocalCsrAction, ) -> Result<AcceptedLinearExecution, Diagnostic>

Execute one graph-bound distributed solve while delegating only the rank-local owned-row CSR action. Read more
§

impl MpiCudaAdmittedExecutionAdapter for MpiExecutionGroup

§

fn execute_admitted_mpi_cuda( &mut self, admitted: AdmittedExecution<'_>, ) -> Result<AcceptedMpiCudaLinearExecution, Diagnostic>

Execute host-staged MPI Krylov with one resident CUDA CSR action on every rank. Read more

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
§

impl<Src, Scheme> ApproxFrom<Src, Scheme> for Src
where Scheme: ApproxScheme,

§

type Err = NoError

The error type produced by a failed conversion.
§

fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>

Convert the given value into an approximately equivalent representation.
§

impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Src
where Dst: ApproxFrom<Src, Scheme>, Scheme: ApproxScheme,

§

type Err = <Dst as ApproxFrom<Src, Scheme>>::Err

The error type produced by a failed conversion.
§

fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>

Convert the subject into an approximately equivalent representation.
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
§

impl<T> ByRef<T> for T

§

fn by_ref(&self) -> &T

§

impl<T, Dst> ConvAsUtil<Dst> for T

§

fn approx(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst>,

Approximate the subject with the default scheme.
§

fn approx_by<Scheme>(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst, Scheme>, Scheme: ApproxScheme,

Approximate the subject with a specific scheme.
§

impl<T> ConvUtil for T

§

fn approx_as<Dst>(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst>,

Approximate the subject to a given type with the default scheme.
§

fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
where Self: Sized + ApproxInto<Dst, Scheme>, Scheme: ApproxScheme,

Approximate the subject to a given type with a specific scheme.
§

fn into_as<Dst>(self) -> Dst
where Self: Sized + Into<Dst>,

Convert the subject to a given type.
§

fn try_as<Dst>(self) -> Result<Dst, Self::Err>
where Self: Sized + TryInto<Dst>,

Attempt to convert the subject to a given type.
§

fn value_as<Dst>(self) -> Result<Dst, Self::Err>
where Self: Sized + ValueInto<Dst>,

Attempt a value conversion of the subject to a given type.
§

impl<T> DistributionExt for T
where T: ?Sized,

§

fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> T
where Self: Distribution<T>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
§

impl<Src> TryFrom<Src> for Src

§

type Err = NoError

The error type produced by a failed conversion.
§

fn try_from(src: Src) -> Result<Src, <Src as TryFrom<Src>>::Err>

Convert the given value into the subject type.
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.
§

impl<Src, Dst> TryInto<Dst> for Src
where Dst: TryFrom<Src>,

§

type Err = <Dst as TryFrom<Src>>::Err

The error type produced by a failed conversion.
§

fn try_into(self) -> Result<Dst, <Src as TryInto<Dst>>::Err>

Convert the subject into the destination type.
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<Src> ValueFrom<Src> for Src

§

type Err = NoError

The error type produced by a failed conversion.
§

fn value_from(src: Src) -> Result<Src, <Src as ValueFrom<Src>>::Err>

Convert the given value into an exactly equivalent representation.
§

impl<Src, Dst> ValueInto<Dst> for Src
where Dst: ValueFrom<Src>,

§

type Err = <Dst as ValueFrom<Src>>::Err

The error type produced by a failed conversion.
§

fn value_into(self) -> Result<Dst, <Src as ValueInto<Dst>>::Err>

Convert the subject into an exactly equivalent representation.
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,