# Copyright (c) 2018 The Regents of the University of Michigan
# All rights reserved.
# This software is licensed under the BSD 3-Clause License.
"""Environments for the University of Michigan HPC environment."""
from ..environment import DefaultSlurmEnvironment, _PartitionConfig
[docs]
class GreatLakesEnvironment(DefaultSlurmEnvironment):
"""Environment profile for the Great Lakes supercomputer.
https://arc-ts.umich.edu/greatlakes/
"""
hostname_pattern = r"gl(-login)?[0-9]+\.arc-ts\.umich\.edu"
template = "umich-greatlakes.sh"
_partition_config = _PartitionConfig(
cpus_per_node={"default": 36, "gpu": 40, "gpu_mig40": 64},
gpus_per_node={"gpu": 2, "gpu_mig40": 8},
)
# For unknown reasons, srun fails to export environment variables such as
# PATH on Great Lakes unless explicitly requested to with --export=ALL.
# On Great Lakes, srun also fails to flush the buffer until the end of
# the job without explicitly setting -u.
mpi_cmd = "srun -u --export=ALL"
@classmethod
def add_args(cls, parser):
"""Add arguments to parser.
Parameters
----------
parser : :class:`argparse.ArgumentParser`
The argument parser where arguments will be added.
"""
super().add_args(parser)
parser.add_argument(
"--partition",
choices=("standard", "gpu_mig40", "gpu", "largemem"),
default="standard",
help="Specify the partition to submit to. (default=standard)",
)
__all__ = ["GreatLakesEnvironment"]