Skip to content

Commit d15e951

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into smartsim-refactor
2 parents edb8364 + 8423eb4 commit d15e951

31 files changed

+1185
-84
lines changed

conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def print_test_configuration() -> None:
119119

120120
def pytest_configure() -> None:
121121
pytest.test_launcher = test_launcher
122-
pytest.wlm_options = ["slurm", "pbs", "lsf", "pals", "dragon"]
122+
pytest.wlm_options = ["slurm", "pbs", "lsf", "pals", "dragon", "sge"]
123123
account = get_account()
124124
pytest.test_account = account
125125
pytest.test_device = test_device

doc/changelog.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,25 @@ To be released at some future point in time
1515

1616
Description
1717

18+
- Pin NumPy version to 1.x
19+
- New launcher support for SGE (and similar derivatives)
20+
- Fix test outputs being created in incorrect directory
1821
- Improve support for building SmartSim without ML backends
1922
- Update packaging dependency
2023

2124
Detailed Notes
2225

26+
- The new major version release of Numpy is incompatible with modules
27+
compiled against Numpy 1.x. For both SmartSim and SmartRedis we
28+
request a 1.x version of numpy. This is needed in SmartSim because
29+
some of the downstream dependencies request NumPy
30+
([SmartSim-PR623](https://github.com/CrayLabs/SmartSim/pull/623))
31+
- SGE is now a supported launcher for SmartSim. Users can now define
32+
BatchSettings which will be monitored by the TaskManager. Additionally,
33+
if the MPI implementation was built with SGE support, Orchestrators can
34+
use `mpirun` without needing to specify the hosts
35+
([SmartSim-PR610](https://github.com/CrayLabs/SmartSim/pull/610))
36+
- Ensure outputs from tests are written to temporary `tests/test_output` directory
2337
- Fix an error that would prevent ``smart build`` from moving a successfully
2438
compiled RedisAI shared object to the install location expected by SmartSim
2539
if no ML backend installations were found. Previously, this would effectively

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ def has_ext_modules(_placeholder):
179179
"pydantic==1.10.14",
180180
"pyzmq>=25.1.2",
181181
"pygithub>=2.3.0",
182+
"numpy<2"
182183
]
183184

184185
# Add SmartRedis at specific version

smartsim/_core/_cli/validate.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ def _test_tf_install(client: Client, tmp_dir: str, device: Device) -> None:
215215
# do not need the sending connection in this proc anymore
216216
send_conn.close()
217217

218-
proc.join(timeout=120)
218+
proc.join(timeout=600)
219219
if proc.is_alive():
220220
proc.terminate()
221221
raise Exception("Failed to build a simple keras model within 2 minutes")

smartsim/_core/control/controller.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
LocalLauncher,
7373
LSFLauncher,
7474
PBSLauncher,
75+
SGELauncher,
7576
SlurmLauncher,
7677
)
7778
from ..launcher.launcher import Launcher
@@ -348,6 +349,7 @@ def init_launcher(self, launcher: str) -> None:
348349
"lsf": LSFLauncher,
349350
"local": LocalLauncher,
350351
"dragon": DragonLauncher,
352+
"sge": SGELauncher,
351353
}
352354

353355
if launcher is not None:

smartsim/_core/launcher/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
from .local.local import LocalLauncher
3030
from .lsf.lsfLauncher import LSFLauncher
3131
from .pbs.pbsLauncher import PBSLauncher
32+
from .sge.sgeLauncher import SGELauncher
3233
from .slurm.slurmLauncher import SlurmLauncher
3334

3435
__all__ = [
@@ -37,5 +38,6 @@
3738
"LocalLauncher",
3839
"LSFLauncher",
3940
"PBSLauncher",
41+
"SGELauncher",
4042
"SlurmLauncher",
4143
]

smartsim/_core/launcher/lsf/lsfCommands.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
import typing as t
2828

29-
from ..util.shell import execute_cmd
29+
from ...utils.shell import execute_cmd
3030

3131

3232
def bjobs(args: t.List[str]) -> t.Tuple[str, str]:

smartsim/_core/launcher/pbs/pbsCommands.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
import typing as t
2828

29-
from ..util.shell import execute_cmd
29+
from ...utils.shell import execute_cmd
3030

3131

3232
def qstat(args: t.List[str]) -> t.Tuple[str, str]:
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# BSD 2-Clause License
2+
#
3+
# Copyright (c) 2021-2024, Hewlett Packard Enterprise
4+
# All rights reserved.
5+
#
6+
# Redistribution and use in source and binary forms, with or without
7+
# modification, are permitted provided that the following conditions are met:
8+
#
9+
# 1. Redistributions of source code must retain the above copyright notice, this
10+
# list of conditions and the following disclaimer.
11+
#
12+
# 2. Redistributions in binary form must reproduce the above copyright notice,
13+
# this list of conditions and the following disclaimer in the documentation
14+
# and/or other materials provided with the distribution.
15+
#
16+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# BSD 2-Clause License
2+
#
3+
# Copyright (c) 2021-2024, Hewlett Packard Enterprise
4+
# All rights reserved.
5+
#
6+
# Redistribution and use in source and binary forms, with or without
7+
# modification, are permitted provided that the following conditions are met:
8+
#
9+
# 1. Redistributions of source code must retain the above copyright notice, this
10+
# list of conditions and the following disclaimer.
11+
#
12+
# 2. Redistributions in binary form must reproduce the above copyright notice,
13+
# this list of conditions and the following disclaimer in the documentation
14+
# and/or other materials provided with the distribution.
15+
#
16+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
20+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26+
27+
import typing as t
28+
29+
from ...utils.shell import execute_cmd
30+
31+
32+
def qstat(args: t.List[str]) -> t.Tuple[str, str]:
33+
"""Calls SGE qstat with args
34+
35+
:param args: List of command arguments
36+
:returns: Output and error of qstat
37+
"""
38+
cmd = ["qstat"] + args
39+
_, out, error = execute_cmd(cmd)
40+
return out, error
41+
42+
43+
def qsub(args: t.List[str]) -> t.Tuple[str, str]:
44+
"""Calls SGE qsub with args
45+
46+
:param args: List of command arguments
47+
:returns: Output and error of salloc
48+
"""
49+
cmd = ["qsub"] + args
50+
_, out, error = execute_cmd(cmd)
51+
return out, error
52+
53+
54+
def qdel(args: t.List[str]) -> t.Tuple[int, str, str]:
55+
"""Calls SGE qdel with args.
56+
57+
returncode is also supplied in this function.
58+
59+
:param args: list of command arguments
60+
:return: output and error
61+
"""
62+
cmd = ["qdel"] + args
63+
returncode, out, error = execute_cmd(cmd)
64+
return returncode, out, error
65+
66+
67+
def qacct(args: t.List[str]) -> t.Tuple[int, str, str]:
68+
"""Calls SGE qacct with args.
69+
70+
returncode is also supplied in this function.
71+
72+
:param args: list of command arguments
73+
:return: output and error
74+
"""
75+
cmd = ["qacct"] + args
76+
returncode, out, error = execute_cmd(cmd)
77+
return returncode, out, error

0 commit comments

Comments
 (0)