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

Constructor & Destructor Documentation

◆ __init__()

def Config.ProcessAccelerator.__init__ (   self)

Definition at line 1996 of file Config.py.

1996  def __init__(self):
1997  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 1998 of file Config.py.

1998  def _place(self, name, proc):
1999  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 2039 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__().

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

◆ dumpPython()

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

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

2002  def dumpPython(self, options=PrintOptions()):
2003  specialImportRegistry.registerUse(self)
2004  result = self.__class__.__name__+"(" # not including cms. since the deriving classes are not in cms "namespace"
2005  options.indent()
2006  res = self.dumpPythonImpl(options)
2007  options.unindent()
2008  if len(res) > 0:
2009  result += "\n"+res+"\n"
2010  result += ")\n"
2011  return result
2012 
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 2014 of file Config.py.

Referenced by Config.ProcessAccelerator.dumpPython().

2014  def dumpPythonImpl(self, options):
2015  """Override if need to add any 'body' content to dumpPython(). Returns a string."""
2016  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 2020 of file Config.py.

2020  def enabledLabels(self):
2021  """Override to return a list of strings for the accelerator labels
2022  that are enabled in the system the job is being run on."""
2023  return []

◆ labels()

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

Definition at line 2017 of file Config.py.

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

2017  def labels(self):
2018  """Override to return a list of strings for the accelerator labels."""
2019  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 2024 of file Config.py.

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

◆ type_()

def Config.ProcessAccelerator.type_ (   self)