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.
A Platform
object or dictionary specifying settings for a platform.
To define a platform (in calling script):
Platform Object
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,
)
Dictionary
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
To use an existing platform:
from libensemble.resources.platforms import PerlmutterGPU
libE_specs["platform_specs"] = PerlmutterGPU()
See known platforms<known-platforms>
.
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