1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//! PMI crate
//!
//! Provides a thin abstraction over multiple PMI backends used by examples in
//! this workspace. Features enable specific backends:
//!
//! - `with-pmi1`: enable PMI1 backend
//! - `with-pmi2`: enable PMI2 backend
//! - `with-pmix`: enable PMIx backend
//!
//! Behavior notes:
//! - Node detection: when backends don't provide stable node indices, ranks
//! exchange hostnames and the crate derives contiguous node ids by sorting
//! and deduplicating hostnames.
//! - Job id: numeric job id strings are preferred and returned directly; if a
//! job id is non-numeric the crate computes a deterministic `usize` via
//! hashing.
compile_error!;
/// Core PMI trait, types and helpers.
/// PMI1 backend implementation.
/// PMI2 backend implementation.
/// PMIx backend implementation.
/// Re-exported for crate users: core PMI trait and helpers.
pub use crate*;