blob: b9cadb6d76adbaf30f9e9726ae6ecbd290021189 [file] [log] [blame]
############################################################################
# Copyright (C) SchedMD LLC.
############################################################################
import atf
import pytest
import re
# Setup
@pytest.fixture(scope="module", autouse=True)
def setup():
atf.require_config_parameter("SelectType", "select/cons_tres")
atf.require_config_parameter("SelectTypeParameters", "CR_CPU")
atf.require_config_parameter_includes("GresTypes", "gpu")
atf.require_config_parameter_includes("GresTypes", "mps")
atf.require_tty(0)
atf.require_config_parameter(
"Name", {"gpu": {"File": "/dev/tty0"}, "mps": {"Count": 100}}, source="gres"
)
atf.require_nodes(1, [("Gres", "gpu:1,mps:100")])
atf.require_slurm_running()
def test_mps_and_gpus():
"""Test with both GPUs and MPS in a single request"""
results = atf.run_command('sbatch --gres=mps:1,gpu:1 -N1 -t1 --wrap "true"')
assert results["exit_code"] != 0
assert (
re.search(r"Invalid generic resource \(gres\) specification", results["stderr"])
is not None
)
def test_mps_and_gpu_frequency():
"""Test with both GPUs and MPS in a single request"""
results = atf.run_command(
'sbatch --gres=mps:1 --gpu-freq=high -N1 -t1 --wrap "true"'
)
assert results["exit_code"] != 0
assert (
re.search(r"Invalid generic resource \(gres\) specification", results["stderr"])
is not None
)
# Request MPS per job with node count > 1
# Request MPS per socket with socket count > 1
# Request MPS per task with task count > 1
#
# TODO: Add these tests whenever tres-per-* options added
# The tests already exist in src/common/gres.c to reject such jobs