mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-04-28 17:57:16 +02:00
Merge 0053c7d524
into ee679fcf34
This commit is contained in:
commit
b4d89c8dde
1 changed files with 73 additions and 0 deletions
73
meshroom/submitters/fireworksSubmitter.py
Normal file
73
meshroom/submitters/fireworksSubmitter.py
Normal file
|
@ -0,0 +1,73 @@
|
|||
#!/usr/bin/env python
|
||||
# coding:utf-8
|
||||
|
||||
import os
|
||||
|
||||
import fireworks
|
||||
from meshroom.core.desc import Level
|
||||
from meshroom.core.submitter import BaseSubmitter
|
||||
|
||||
|
||||
class FireworksSubmitter(BaseSubmitter):
|
||||
MESHROOM_PACKAGE = os.environ.get('REZ_USED_REQUEST', '')
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(SimpleFarmSubmitter, self).__init__(name='Fireworks', parent=parent)
|
||||
|
||||
def createFirework(self, meshroomFile, node):
|
||||
nbFrames = node.size
|
||||
print('node: ', node.name)
|
||||
works = []
|
||||
nbBlocks = 1
|
||||
if node.isParallelized:
|
||||
blockSize, fullSize, nbBlocks = node.nodeDesc.parallelization.getSizes(node)
|
||||
for i in range(nbBlocks):
|
||||
if node.isParallelized:
|
||||
parallelArgs = ' --iteration {}'.format(i)
|
||||
else:
|
||||
parallelArgs = ''
|
||||
|
||||
command = 'meshroom_compute --node {nodeName} "{meshroomFile}" {parallelArgs} --extern'.format(
|
||||
nodeName=node.name, meshroomFile=meshroomFile, parallelArgs=parallelArgs)
|
||||
work = fireworks.Firework(
|
||||
ScriptTask.from_str(command),
|
||||
name=node.nodeType,
|
||||
**arguments)
|
||||
works.append(work)
|
||||
|
||||
return works
|
||||
|
||||
def submit(self, nodes, edges, filepath):
|
||||
launchpad = fireworks.LaunchPad()
|
||||
name = os.path.splitext(os.path.basename(filepath))[0] + ' [Meshroom]'
|
||||
comment = filepath
|
||||
nbFrames = max([node.size for node in nodes])
|
||||
|
||||
allWorks = []
|
||||
nodeNameToWorks = {}
|
||||
|
||||
for node in nodes:
|
||||
works = self.createFirework(filepath, node)
|
||||
allWorks.extend(works)
|
||||
nodeNameToWorks[node.name] = works
|
||||
|
||||
allDependencies = {}
|
||||
for u, v in edges:
|
||||
for uWork in nodeNameToWorks[u.name]:
|
||||
if uWork in dependencies:
|
||||
dependencies[uWork].extend(nodeNameToWorks[v.name])
|
||||
else:
|
||||
dependencies[uWork] = nodeNameToWorks[v.name]
|
||||
|
||||
print('nodeNameToWorks:', nodeNameToWorks)
|
||||
print('dependencies:', dependencies)
|
||||
|
||||
# Create Job Graph
|
||||
workflow = fireworks.Workflow(allWorks, allDependencies)
|
||||
|
||||
launchpad.add_wf(workflow)
|
||||
fireworks.core.rocket_launcher.launch_rocket(launchpad)
|
||||
|
||||
return True
|
||||
|
||||
|
Loading…
Add table
Reference in a new issue