flux-pmi(1)

SYNOPSIS

[launcher] flux-pmi [-v] [--method=URI] barrier [--count=N]
[launcher] flux-pmi [-v] [--method=URI] exchange [--count=N]
[launcher] flux-pmi [-v] [--method=URI] get [--ranks=IDSET]

DESCRIPTION

flux pmi is a standalone Process Management Interface (PMI) client that embeds the same PMI client plugins as flux-broker(1). It can be used to test the PMI service offered by flux-shell(1) to parallel programs launched by Flux, or to probe the PMI services of an external launcher like Slurm or Hydra in isolation, without the complications of starting a Flux instance.

flux pmi tries a sequence of PMI plugins until one successfully initializes. Alternatively, the specific plugin can be forced with the --method option. Initialization is followed by a subcommand-specific sequence of PMI operations that mimics a common pattern, and then PMI finalization.

OPTIONS

-v, --verbose[=LEVEL]

Trace PMI operations. This is equivalent to setting FLUX_PMI_DEBUG in the broker environment.

-t, --timeout=FSD

Specify a timeout for the requested PMI operation(s) in RFC 23 Flux Standard Duration format, e.g. "0.1s" or "32m". If the timeout expires, the command exits with an error code. Default: no timeout.

--method=URI

Specify the PMI method to use, where the scheme portion of the URI specifies a plugin and the path portion specifies plugin-specific options. The builtin plugins are

simple

Use the simple PMI-1 wire protocol.

libpmi2[:PATH]

dlopen() libpmi2.so and use the PMI-2 API, optionally at a specific PATH.

libpmi[:PATH]

dlopen() libpmi.so and use the PMI-1 API, optionally at a specific PATH.

single

Become a singleton.

--libpmi-noflux

Fail if the libpmi or libpmi2 methods find the Flux libpmi.so.

--libpmi2-cray

Force the libpmi2 Cray workarounds to be enabled for testing. Normally they are enabled only if a heuristic detects that Cray libpmi2 is in use. The workarounds are

  • Encode all KVS values with base64.

  • Immediately fail an attempt to fetch any KVS with a flux. prefix.

COMMANDS

barrier

flux pmi barrier executes a PMI barrier and prints a message on rank 0 upon completion.

--test-timing

First execute a preliminary barrier to ensure all ranks enter the test barrier at the same time, then execute a test barrier and print the elapsed time for the test barrier on rank 0 stdout.

--test-count=N

Execute N barrier operations (default 1).

--test-abort=RANK

Instead of entering the barrier, arrange for RANK to call the PMI abort function. This option is intended for testing only.

exchange

flux pmi exchange does the following:

  1. Execute PMI barrier

  2. Put rank specific key to PMI KVS

  3. Execute PMI barrier

  4. Get rank specific key from PMI KVS for all other ranks

  5. Execute PMI barrier

  6. Print elapsed time of (2-5)

--count=N

Execute N exchange (step 2-5) operations (default 1).

get

flux pmi get fetches a pre-set key from the PMI KVS.

--ranks=RANKS

Print the value on specified RANKS, an RFC 22 idset or all (default 0).

RESOURCES

Flux: http://flux-framework.org

Flux RFC: https://flux-framework.readthedocs.io/projects/flux-rfc

Issue Tracker: https://github.com/flux-framework/flux-core/issues

FLUX RFC

13/Simple Process Manager Interface v1

SEE ALSO

flux-broker-attributes(7)