[Submitters] WIP : add a slurm submitter

This commit is contained in:
Fabien Servant 2020-11-02 19:30:20 +01:00
parent e83bbb9b12
commit 362c9a3023

View file

@ -0,0 +1,84 @@
#!/usr/bin/env python
# coding:utf-8
import os
import json
from meshroom.core.desc import Level
from meshroom.core.submitter import BaseSubmitter
currentDir = os.path.dirname(os.path.realpath(__file__))
binDir = os.path.dirname(os.path.dirname(os.path.dirname(currentDir)))
class Vertex:
def __init__(self, node):
self.pid = -1
self.node = node
self.depends = list()
class SlurmSubmitter(BaseSubmitter):
def __init__(self, parent=None):
super(SlurmSubmitter, self).__init__(name='Slurm', parent=parent)
self.vertices = list()
self.verticesByNode = dict()
def start(self, node):
nbFrames = node.size
arguments = {}
parallelArgs = ''
print('node: ', node.name)
if node.isParallelized:
pass
#blockSize, fullSize, nbBlocks = node.nodeDesc.parallelization.getSizes(node)
#parallelArgs = ' --iteration @start'
#arguments.update({'start': 0, 'end': nbBlocks - 1, 'step': 1})
#command='{exe} --node {nodeName} "{meshroomFile}" {parallelArgs} --extern'.format(exe='meshroom_compute', nodeName=node.name, meshroomFile=meshroomFile, parallelArgs=parallelArgs),
def submit(self, nodes, edges, filepath):
#build a list of nodes with dependencies
for item in nodes:
v = Vertex(item)
self.vertices.append(v)
self.verticesByNode[item] = v
#set dependencies
for edge in edges:
node = self.verticesByNode[edge[0]]
dependency = self.verticesByNode[edge[1]]
node.depends.append(dependency)
#While all the graph is not submitted
while True:
#Try to find a node with all its dependencies submitted
somethingFound = False
for vertex in self.vertices:
#check if vertex was already launched
if vertex.pid >= 0:
continue
#check That all dependency were launched
valid = True
for dependency in vertex.depends:
if dependency.pid < 0:
valid = False
break
#launch
if valid:
vertex.pid = 1
self.start(vertex.node)
somethingFound = True
if somethingFound == False:
break
return True