CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions
Config.ProcessAccelerator Class Reference
Inheritance diagram for Config.ProcessAccelerator:
Mixins._ConfigureComponent Mixins._Unlabelable Config.ProcessAcceleratorTest Config.ProcessAcceleratorTest2

Public Member Functions

def __init__ (self)
 
def apply (self, process, accelerators)
 
def dumpPython (self, options=PrintOptions())
 
def dumpPythonImpl (self, options)
 
def enabledLabels (self)
 
def labels (self)
 
def moduleTypeResolver (self, accelerators)
 
def type_ (self)
 

Private Member Functions

def _place (self, name, proc)
 

Detailed Description

A class used to specify possible compute accelerators in a Process
instance. It is intended to be derived for any
accelerator/portability technology, and provides hooks such that a
specific customization can be applied to the Process on a worker
node at the point where the python configuration is serialized for C++.

The customization must not change the configuration hash. To
enforce this reuirement, the customization gets a
ProcessForProcessAccelerator wrapper that gives access to only
those parts of the configuration that can be changed. Nevertheless
it would be good to have specific unit test for each deriving
class to ensure that all combinations of the enabled accelerators
give the same configuration hash.

The deriving class must do its checks for hardware availability
only in enabledLabels(), and possibly in apply() if any further
fine-tuning is needed, because those two are the only functions
that are guaranteed to be called at the worker node.

Definition at line 1972 of file Config.py.

Constructor & Destructor Documentation

◆ __init__()

def Config.ProcessAccelerator.__init__ (   self)

Definition at line 1992 of file Config.py.

1992  def __init__(self):
1993  pass
def __init__(self, dataset, job_number, job_id, job_name, isDA, isMC, applyBOWS, applyEXTRACOND, extraconditions, runboundary, lumilist, intlumi, maxevents, gt, allFromGT, alignmentDB, alignmentTAG, apeDB, apeTAG, bowDB, bowTAG, vertextype, tracktype, refittertype, ttrhtype, applyruncontrol, ptcut, CMSSW_dir, the_dir)

Member Function Documentation

◆ _place()

def Config.ProcessAccelerator._place (   self,
  name,
  proc 
)
private

Definition at line 1994 of file Config.py.

1994  def _place(self, name, proc):
1995  proc._placeAccelerator(self.type_(), self)

◆ apply()

def Config.ProcessAccelerator.apply (   self,
  process,
  accelerators 
)
Override if need to customize the Process at worker node. The
selected available accelerator labels are given in the
'accelerators' argument (the patterns, e.g. '*' have been
expanded to concrete labels).

This function may touch only untracked parameters.

Definition at line 2035 of file Config.py.

Referenced by heavyIonTools.ConfigureHeavyIons.__call__(), coreTools.RunOnData.__call__(), trackTools.MakeAODTrackCandidates.__call__(), runJetUncertainties.RunJetUncertainties.__call__(), metTools.AddMETCollection.__call__(), heavyIonTools.ProductionDefaults.__call__(), cmsswVersionTools.PickRelValInputFiles.__call__(), coreTools.RemoveMCMatching.__call__(), trackTools.MakePATTrackCandidates.__call__(), trigTools.SwitchOnTrigger.__call__(), runMETCorrectionsAndUncertainties.RunMETCorrectionsAndUncertainties.__call__(), heavyIonTools.SelectionDefaults.__call__(), heavyIonTools.DisbaleMonteCarloDeps.__call__(), trigTools.SwitchOnTriggerStandAlone.__call__(), tauTools.AddTauCollection.__call__(), trackTools.MakeTrackCandidates.__call__(), trigTools.SwitchOnTriggerMatching.__call__(), trigTools.SwitchOnTriggerMatchingStandAlone.__call__(), trigTools.SwitchOnTriggerMatchEmbedding.__call__(), jetTools.AddJetCollection.__call__(), jetTools.SwitchJetCollection.__call__(), jetTools.UpdateJetCollection.__call__(), jetTools.AddJetID.__call__(), and jetTools.SetTagInfos.__call__().

2035  def apply(self, process, accelerators):
2036  """Override if need to customize the Process at worker node. The
2037  selected available accelerator labels are given in the
2038  'accelerators' argument (the patterns, e.g. '*' have been
2039  expanded to concrete labels).
2040 
2041  This function may touch only untracked parameters.
2042  """
2043  pass
2044 
Vec apply(Vec v, F f)
Definition: ExtVec.h:81

◆ dumpPython()

def Config.ProcessAccelerator.dumpPython (   self,
  options = PrintOptions() 
)

Definition at line 1998 of file Config.py.

References __class__< T >.__class__(), and Config.ProcessAccelerator.dumpPythonImpl().

Referenced by Modules.SwitchProducer.__addParameter(), Types._AllowedParameterTypes.__init__(), Mixins._ParameterTypeBase.__repr__(), Mixins._Parameterizable.__repr__(), Mixins._ValidatingParameterListBase.__repr__(), Types.VPSet.__repr__(), Mixins._Parameterizable.__setattr__(), Modules.SwitchProducer.__setattr__(), and SequenceTypes.Schedule.__str__().

1998  def dumpPython(self, options=PrintOptions()):
1999  specialImportRegistry.registerUse(self)
2000  result = self.__class__.__name__+"(" # not including cms. since the deriving classes are not in cms "namespace"
2001  options.indent()
2002  res = self.dumpPythonImpl(options)
2003  options.unindent()
2004  if len(res) > 0:
2005  result += "\n"+res+"\n"
2006  result += ")\n"
2007  return result
2008 
def dumpPython(process, name)

◆ dumpPythonImpl()

def Config.ProcessAccelerator.dumpPythonImpl (   self,
  options 
)
Override if need to add any 'body' content to dumpPython(). Returns a string.

Definition at line 2010 of file Config.py.

Referenced by Config.ProcessAccelerator.dumpPython().

2010  def dumpPythonImpl(self, options):
2011  """Override if need to add any 'body' content to dumpPython(). Returns a string."""
2012  return ""

◆ enabledLabels()

def Config.ProcessAccelerator.enabledLabels (   self)
Override to return a list of strings for the accelerator labels
that are enabled in the system the job is being run on.

Definition at line 2016 of file Config.py.

2016  def enabledLabels(self):
2017  """Override to return a list of strings for the accelerator labels
2018  that are enabled in the system the job is being run on."""
2019  return []

◆ labels()

def Config.ProcessAccelerator.labels (   self)
Override to return a list of strings for the accelerator labels.

Definition at line 2013 of file Config.py.

Referenced by ProcessAcceleratorCUDA.ProcessAcceleratorCUDA.enabledLabels(), and ProcessAcceleratorROCm.ProcessAcceleratorROCm.enabledLabels().

2013  def labels(self):
2014  """Override to return a list of strings for the accelerator labels."""
2015  return []

◆ moduleTypeResolver()

def Config.ProcessAccelerator.moduleTypeResolver (   self,
  accelerators 
)
Override to return an object that implements "module type resolver"
in python. The object should have the following methods
- __init__(self, accelerators)
  * accelerators = list of selected accelerators
- plugin(self):
  * should return a string for the type resolver plugin name
- setModuleVariant(self, module):
  * Called for each ED and ES module. Should act only if
    module.type_() contains the magic identifier

At most one of the ProcessAccelerators in a job can return a
non-None object

Definition at line 2020 of file Config.py.

2020  def moduleTypeResolver(self, accelerators):
2021  """Override to return an object that implements "module type resolver"
2022  in python. The object should have the following methods
2023  - __init__(self, accelerators)
2024  * accelerators = list of selected accelerators
2025  - plugin(self):
2026  * should return a string for the type resolver plugin name
2027  - setModuleVariant(self, module):
2028  * Called for each ED and ES module. Should act only if
2029  module.type_() contains the magic identifier
2030 
2031  At most one of the ProcessAccelerators in a job can return a
2032 non-None object
2033  """
2034  return None

◆ type_()

def Config.ProcessAccelerator.type_ (   self)