Platform Specs

libEnsemble detects platform specifications including MPI runners and resources. Usually this will result in the correct settings. However, users can configure platform specifications via the platform_specs option or indicate a known platform via the platform option.

platform_specs

A Platform object or dictionary specifying settings for a platform.

To define a platform (in calling script):

from libensemble.resources.platforms import Platform

libE_specs["platform_specs"] = Platform(
    mpi_runner="srun",
    cores_per_node=64,
    logical_cores_per_node=128,
    gpus_per_node=8,
    gpu_setting_type="runner_default",
    gpu_env_fallback="ROCR_VISIBLE_DEVICES",
    scheduler_match_slots=False,
)
libE_specs["platform_specs"] = {
    "mpi_runner": "srun",
    "cores_per_node": 64,
    "logical_cores_per_node": 128,
    "gpus_per_node": 8,
    "gpu_setting_type": "runner_default",
    "gpu_env_fallback": "ROCR_VISIBLE_DEVICES",
    "scheduler_match_slots": False,
}

The list of platform fields is given below. Any fields not given will be auto-detected by libEnsemble.

Platform Fields
pydantic model libensemble.resources.platforms.Platform
Config:
  • arbitrary_types_allowed: bool = True

  • populate_by_name: bool = True

  • extra: str = forbid

  • validate_assignment: bool = True

To use an existing platform:

from libensemble.resources.platforms import PerlmutterGPU

libE_specs["platform_specs"] = PerlmutterGPU()

See known platforms.

platform

A string giving the name of a known platform defined in the platforms module.

libE_specs["platform"] = "perlmutter_g"

Note: the environment variable LIBE_PLATFORM is an alternative way of setting.

E.g., in the command line or batch submission script:

export LIBE_PLATFORM="perlmutter_g"

Known Platforms List

Known_platforms
pydantic model libensemble.resources.platforms.Known_platforms

A list of platforms with known configurations.

There are three ways to specify a known system:

from libensemble.resources.platforms import PerlmutterGPU

libE_specs["platform_specs"] = PerlmutterGPU()
libE_specs["platform"] = "perlmutter_g"

On command-line or batch submission script:

export LIBE_PLATFORM="perlmutter_g"

If the platform is not specified, libEnsemble will attempt to detect known platforms (this is not guaranteed).

Note: libEnsemble should work on any platform, and detects most system configurations correctly. These options are helpful for optimization and where auto-detection encounters ambiguity or an unknown feature.

field generic_rocm: GenericROCm
field crusher: Crusher
field frontier: Frontier
field perlmutter_c: PerlmutterCPU
field perlmutter_g: PerlmutterGPU
field polaris: Polaris
field spock: Spock
field summit: Summit
field sunspot: Sunspot