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
 
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 1984 of file Config.py.

Constructor & Destructor Documentation

◆ __init__()

def Config.ProcessAccelerator.__init__ (   self)

Definition at line 2004 of file Config.py.

2004  def __init__(self):
2005  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 2006 of file Config.py.

2006  def _place(self, name, proc):
2007  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 2047 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__().

2047  def apply(self, process, accelerators):
2048  """Override if need to customize the Process at worker node. The
2049  selected available accelerator labels are given in the
2050  'accelerators' argument (the patterns, e.g. '*' have been
2051  expanded to concrete labels).
2052 
2053  This function may touch only untracked parameters.
2054  """
2055  pass
2056 
Vec apply(Vec v, F f)
Definition: ExtVec.h:90

◆ dumpPython()

def Config.ProcessAccelerator.dumpPython (   self,
  options 
)

Definition at line 2010 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__().

2010  def dumpPython(self, options:PrintOptions=PrintOptions()) -> str:
2011  specialImportRegistry.registerUse(self)
2012  result = self.__class__.__name__+"(" # not including cms. since the deriving classes are not in cms "namespace"
2013  options.indent()
2014  res = self.dumpPythonImpl(options)
2015  options.unindent()
2016  if len(res) > 0:
2017  result += "\n"+res+"\n"
2018  result += ")\n"
2019  return result
2020 
def dumpPython(process, name)

◆ dumpPythonImpl()

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

Definition at line 2022 of file Config.py.

Referenced by Config.ProcessAccelerator.dumpPython().

2022  def dumpPythonImpl(self, options) -> str:
2023  """Override if need to add any 'body' content to dumpPython(). Returns a string."""
2024  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 2028 of file Config.py.

2028  def enabledLabels(self):
2029  """Override to return a list of strings for the accelerator labels
2030  that are enabled in the system the job is being run on."""
2031  return []

◆ labels()

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

Definition at line 2025 of file Config.py.

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

2025  def labels(self):
2026  """Override to return a list of strings for the accelerator labels."""
2027  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 2032 of file Config.py.

2032  def moduleTypeResolver(self, accelerators):
2033  """Override to return an object that implements "module type resolver"
2034  in python. The object should have the following methods
2035  - __init__(self, accelerators)
2036  * accelerators = list of selected accelerators
2037  - plugin(self):
2038  * should return a string for the type resolver plugin name
2039  - setModuleVariant(self, module):
2040  * Called for each ED and ES module. Should act only if
2041  module.type_() contains the magic identifier
2042 
2043  At most one of the ProcessAccelerators in a job can return a
2044 non-None object
2045  """
2046  return None

◆ type_()

def Config.ProcessAccelerator.type_ (   self)