Skip to content

Commit 481e12c

Browse files
authored
Support layer 'cores' (#960)
1 parent 7cce111 commit 481e12c

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

pyoutline/outline/backend/cue.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,12 @@ def _serialize(launcher, use_pycuerun):
308308
sub_element(spec_layer, "chunk", str(layer.get_chunk_size()))
309309

310310
# opencue specific options
311-
if layer.get_arg("threads"):
311+
# Keeping 'threads' for backward compatibility
312+
if layer.get_arg("cores"):
313+
if layer.get_arg("threads"):
314+
logger.warning("%s has both cores and threads. Use cores.", layer.get_name())
315+
sub_element(spec_layer, "cores", "%0.1f" % (layer.get_arg("cores")))
316+
elif layer.get_arg("threads"):
312317
sub_element(spec_layer, "cores", "%0.1f" % (layer.get_arg("threads")))
313318

314319
if layer.is_arg_set("threadable"):

pyoutline/tests/backend/cue_test.py

+36
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,42 @@ def testSerializeShellOutline(self):
9292
self.assertEqual(0, len(list(outlineXml.find('depends'))))
9393

9494

95+
class CoresTest(unittest.TestCase):
96+
def setUp(self):
97+
# Ensure to reset current
98+
outline.Outline.current = None
99+
100+
def create(self):
101+
ol = outline.Outline()
102+
layer = outline.Layer("test")
103+
ol.add_layer(layer)
104+
return ol, layer
105+
106+
def assertCores(self, ol, v):
107+
launcher = outline.cuerun.OutlineLauncher(ol, user=TEST_USER)
108+
outlineXml = ET.fromstring(outline.backend.cue.serialize(launcher))
109+
job = outlineXml.find('job')
110+
layer = job.find('layers').find('layer')
111+
self.assertEqual(v, layer.find('cores').text)
112+
113+
def testCores(self):
114+
ol, layer = self.create()
115+
layer.set_arg("cores", 42)
116+
self.assertCores(ol, "42.0")
117+
118+
def testThreads(self):
119+
ol, layer = self.create()
120+
layer.set_arg("threads", 4)
121+
self.assertCores(ol, "4.0")
122+
123+
def testCoresAndThreads(self):
124+
ol, layer = self.create()
125+
layer.set_arg("cores", 8)
126+
layer.set_arg("threads", 4)
127+
# cores overrides threads
128+
self.assertCores(ol, "8.0")
129+
130+
95131
class BuildCommandTest(unittest.TestCase):
96132
def setUp(self):
97133
path = os.path.join(SCRIPTS_DIR, 'shell.outline')

0 commit comments

Comments
 (0)