4949
5050parser .add_argument ('-e' ,help = 'simengine' , default = 'TGeant4' )
5151parser .add_argument ('-tf' ,help = 'number of timeframes' , default = 2 )
52- parser .add_argument ('-j' ,help = 'number of workers (if applicable)' , default = 8 )
52+ parser .add_argument ('-j' ,help = 'number of workers (if applicable)' , default = 8 , type = int )
5353parser .add_argument ('-mod' ,help = 'Active modules' , default = '--skipModules ZDC' )
5454parser .add_argument ('-seed' ,help = 'random seed number' , default = 0 )
5555parser .add_argument ('-o' ,help = 'output workflow file' , default = 'workflow.json' )
8989workflow = {}
9090workflow ['stages' ] = []
9191
92+ def relativeCPU (n_rel , n_workers = NWORKERS ):
93+ # compute number of CPUs from a given number of workers
94+ # n_workers and a fraction n_rel
95+ # catch cases where n_rel > 1
96+ return min (n_workers , n_workers * n_rel )
97+
9298taskcounter = 0
93- def createTask (name = '' , needs = [], tf = - 1 , cwd = './' , lab = [], cpu = 1 , mem = 500 ):
99+ def createTask (name = '' , needs = [], tf = - 1 , cwd = './' , lab = [], cpu = 1 , relative_cpu = None , mem = 500 ):
100+ if relative_cpu is not None :
101+ # Re-compute, if relative number of CPUs requested
102+ cpu = relativeCPU (relative_cpu )
94103 global taskcounter
95104 taskcounter = taskcounter + 1
96105 return { 'name' : name , 'cmd' :'' , 'needs' : needs , 'resources' : { 'cpu' : cpu , 'mem' : mem }, 'timeframe' : tf , 'labels' : lab , 'cwd' : cwd }
@@ -116,7 +125,7 @@ def getDPL_global_options(bigshm=False,nosmallrate=False):
116125 exit (1 )
117126
118127 INIBKG = args .iniBkg
119- BKGtask = createTask (name = 'bkgsim' , lab = ["GEANT" ], cpu = '8' )
128+ BKGtask = createTask (name = 'bkgsim' , lab = ["GEANT" ], cpu = NWORKERS )
120129 BKGtask ['cmd' ]= 'o2-sim -e ' + SIMENGINE + ' -j ' + str (NWORKERS ) + ' -n ' + str (NBKGEVENTS ) + ' -g ' + str (GENBKG ) + ' ' + str (MODULES ) + ' -o bkg --configFile ' + str (INIBKG )
121130 workflow ['stages' ].append (BKGtask )
122131
@@ -313,7 +322,7 @@ def getDPL_global_options(bigshm=False,nosmallrate=False):
313322 signalneeds = signalneeds + [ BKGtask ['name' ] ]
314323 else :
315324 signalneeds = signalneeds + [ BKG_HEADER_task ['name' ] ]
316- SGNtask = createTask (name = 'sgnsim_' + str (tf ), needs = signalneeds , tf = tf , cwd = 'tf' + str (tf ), lab = ["GEANT" ], cpu = '5.' , mem = '2000' )
325+ SGNtask = createTask (name = 'sgnsim_' + str (tf ), needs = signalneeds , tf = tf , cwd = 'tf' + str (tf ), lab = ["GEANT" ], relative_cpu = 5 / 8 , mem = '2000' )
317326 SGNtask ['cmd' ]= 'o2-sim -e ' + str (SIMENGINE ) + ' ' + str (MODULES ) + ' -n ' + str (NSIGEVENTS ) + ' -j ' \
318327 + str (NWORKERS ) + ' -g ' + str (GENERATOR ) + ' ' + str (TRIGGER )+ ' ' + str (CONFKEY ) \
319328 + ' ' + str (INIFILE ) + ' -o ' + signalprefix + ' ' + embeddinto
@@ -371,7 +380,7 @@ def getDPL_global_options(bigshm=False,nosmallrate=False):
371380 tpcdigineeds += [ BKG_HITDOWNLOADER_TASKS ['TPC' ]['name' ] ]
372381
373382 TPCDigitask = createTask (name = 'tpcdigi_' + str (tf ), needs = tpcdigineeds ,
374- tf = tf , cwd = timeframeworkdir , lab = ["DIGI" ], cpu = '8' , mem = '9000' )
383+ tf = tf , cwd = timeframeworkdir , lab = ["DIGI" ], cpu = NWORKERS , mem = '9000' )
375384 TPCDigitask ['cmd' ] = ('' ,'ln -nfs ../bkg_HitsTPC.root . ;' )[doembedding ]
376385 TPCDigitask ['cmd' ] += 'o2-sim-digitizer-workflow ' + getDPL_global_options () + ' -n ' + str (args .ns ) + simsoption + ' --onlyDet TPC --interactionRate ' + str (INTRATE ) + ' --tpc-lanes ' + str (NWORKERS ) + ' --incontext ' + str (CONTEXTFILE ) + ' --tpc-chunked-writer --disable-write-ini'
377386 workflow ['stages' ].append (TPCDigitask )
@@ -380,7 +389,7 @@ def getDPL_global_options(bigshm=False,nosmallrate=False):
380389 if usebkgcache :
381390 trddigineeds += [ BKG_HITDOWNLOADER_TASKS ['TRD' ]['name' ] ]
382391 TRDDigitask = createTask (name = 'trddigi_' + str (tf ), needs = trddigineeds ,
383- tf = tf , cwd = timeframeworkdir , lab = ["DIGI" ], cpu = '8' , mem = '8000' )
392+ tf = tf , cwd = timeframeworkdir , lab = ["DIGI" ], cpu = NWORKERS , mem = '8000' )
384393 TRDDigitask ['cmd' ] = ('' ,'ln -nfs ../bkg_HitsTRD.root . ;' )[doembedding ]
385394 TRDDigitask ['cmd' ] += 'o2-sim-digitizer-workflow ' + getDPL_global_options () + ' -n ' + str (args .ns ) + simsoption + ' --onlyDet TRD --interactionRate ' + str (INTRATE ) + ' --configKeyValues \" TRDSimParams.digithreads=' + str (NWORKERS ) + '\" --incontext ' + str (CONTEXTFILE ) + ' --disable-write-ini'
386395 workflow ['stages' ].append (TRDDigitask )
@@ -393,7 +402,7 @@ def createRestDigiTask(name, det='ALLSMALLER'):
393402 for d in smallsensorlist :
394403 tneeds += [ BKG_HITDOWNLOADER_TASKS [d ]['name' ] ]
395404 t = createTask (name = name , needs = tneeds ,
396- tf = tf , cwd = timeframeworkdir , lab = ["DIGI" ,"SMALLDIGI" ], cpu = '8' )
405+ tf = tf , cwd = timeframeworkdir , lab = ["DIGI" ,"SMALLDIGI" ], cpu = NWORKERS )
397406 t ['cmd' ] = ('' ,'ln -nfs ../bkg_Hits*.root . ;' )[doembedding ]
398407 t ['cmd' ] += 'o2-sim-digitizer-workflow ' + getDPL_global_options (nosmallrate = True ) + ' -n ' + str (args .ns ) + simsoption + ' --skipDet TPC,TRD --interactionRate ' + str (INTRATE ) + ' --incontext ' + str (CONTEXTFILE ) + ' --disable-write-ini'
399408 workflow ['stages' ].append (t )
@@ -438,7 +447,7 @@ def createRestDigiTask(name, det='ALLSMALLER'):
438447 TPCCLUSMERGEtask ['cmd' ]= 'o2-commonutils-treemergertool -i tpc-native-clusters-part*.root -o tpc-native-clusters.root -t tpcrec' #--asfriend preferable but does not work
439448 workflow ['stages' ].append (TPCCLUSMERGEtask )
440449
441- TPCRECOtask = createTask (name = 'tpcreco_' + str (tf ), needs = [TPCCLUSMERGEtask ['name' ]], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], cpu = '3' , mem = '16000' )
450+ TPCRECOtask = createTask (name = 'tpcreco_' + str (tf ), needs = [TPCCLUSMERGEtask ['name' ]], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], relative_cpu = 3 / 8 , mem = '16000' )
442451 TPCRECOtask ['cmd' ] = 'o2-tpc-reco-workflow ' + getDPL_global_options (bigshm = True , nosmallrate = False ) + ' --input-type clusters --output-type tracks,send-clusters-per-sector --configKeyValues "GPU_global.continuousMaxTimeBin=100000;GPU_proc.ompThreads=' + str (NWORKERS )+ '"'
443452 workflow ['stages' ].append (TPCRECOtask )
444453
@@ -450,7 +459,7 @@ def createRestDigiTask(name, det='ALLSMALLER'):
450459 FT0RECOtask ['cmd' ] = 'o2-ft0-reco-workflow ' + getDPL_global_options ()
451460 workflow ['stages' ].append (FT0RECOtask )
452461
453- ITSTPCMATCHtask = createTask (name = 'itstpcMatch_' + str (tf ), needs = [TPCRECOtask ['name' ], ITSRECOtask ['name' ]], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], mem = '8000' , cpu = '3' )
462+ ITSTPCMATCHtask = createTask (name = 'itstpcMatch_' + str (tf ), needs = [TPCRECOtask ['name' ], ITSRECOtask ['name' ]], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], mem = '8000' , relative_cpu = 3 / 8 )
454463 ITSTPCMATCHtask ['cmd' ]= 'o2-tpcits-match-workflow ' + getDPL_global_options (bigshm = True , nosmallrate = False ) + ' --tpc-track-reader \" tpctracks.root\" --tpc-native-cluster-reader \" --infile tpc-native-clusters.root\" '
455464 workflow ['stages' ].append (ITSTPCMATCHtask )
456465
@@ -471,7 +480,7 @@ def createRestDigiTask(name, det='ALLSMALLER'):
471480 workflow ['stages' ].append (MFTRECOtask )
472481
473482 pvfinderneeds = [ITSTPCMATCHtask ['name' ], FT0RECOtask ['name' ], TOFTPCMATCHERtask ['name' ], MFTRECOtask ['name' ]]
474- PVFINDERtask = createTask (name = 'pvfinder_' + str (tf ), needs = pvfinderneeds , tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], cpu = '8' , mem = '4000' )
483+ PVFINDERtask = createTask (name = 'pvfinder_' + str (tf ), needs = pvfinderneeds , tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], cpu = NWORKERS , mem = '4000' )
475484 PVFINDERtask ['cmd' ] = 'o2-primary-vertexing-workflow ' + getDPL_global_options (nosmallrate = False )
476485 # PVFINDERtask['cmd'] += ' --vertexing-sources "ITS,ITS-TPC,ITS-TPC-TOF" --vetex-track-matching-sources "ITS,ITS-TPC,ITS-TPC-TOF"'
477486 workflow ['stages' ].append (PVFINDERtask )
0 commit comments