Skip to content
Snippets Groups Projects

Reduce processing time for the jet hypo in the presence of identical conditions

Merged Peter Sherwood requested to merge peter/athena:master-ATR22238_2_1 into master
  1. Nov 24, 2020
  2. Nov 21, 2020
  3. Nov 20, 2020
  4. Nov 18, 2020
  5. Nov 17, 2020
    • Peter Sherwood's avatar
      Contuiing work on optimisation for identical Conditions · 37bd6406
      Peter Sherwood authored
      Use CapacityCheckedConditoin for FastReducer. This class is used to
      replace mutiple identical CompoundConditions. It contains a single CompoundCondition
      object, and has multiplicity attribute.
      
      This contains a CompoundCondition. The CapacityCheckedCondition forwards isSatisfied  to the
      contained CompoundCondition. When checking whether a Condition is satisfied FastReducer  no longer
      requres that at least a single jet group satisfies the Condition. Instead it requires enough
      jet groups pass to satisfy the mutliplicity condition. The multiplicity for non-identical Conditions
      is set to 1.
      
      The IConditionMT interface was modied to remove the noexcept attribute for the toString() method.
      noaccept was not a valid attribite as the method consumes memory. The many implementation classes are
      affected.
      37bd6406
  6. Nov 16, 2020
  7. Nov 13, 2020
  8. Nov 12, 2020
  9. Nov 11, 2020
  10. Nov 04, 2020
  11. Nov 03, 2020
  12. Nov 02, 2020
    • Peter Sherwood's avatar
      Add check to ensure coapacity of a condition is reached by the satisfying jet groups. · f63d87ad
      Peter Sherwood authored
      This check is used in particular to ensure that there are suficient jets to satisfy
      single Conditions wich represent multiple identical conditions. such single Conditions are
      part of an optimisation to reduce the computation time for identical Conditions.
      
      src/ICapacityCheckedCondition.h
      	change the capacitySatisfied method to take a muliplicity (std::size_T)
      	instead of a JetGroup.
      
      src/CapacityCheckedCondition.h
      	adjust for interface change
      
      src/FastReducer.h,cxx
      	add capacityCheck to findInitialJobGroups()
      f63d87ad
  13. Oct 30, 2020
    • Peter Sherwood's avatar
      Start work on optimizing of how job groups propagate up a hypo tree. · 99640268
      Peter Sherwood authored
      Job group propagation is correct but inefficient in the presence of identical  conditions.
      
      Jet group propagation is currently handled in the following manner.
      
      Let a parent condition P have n siblings: S_1... S_n
      Let J_1... J_2 be the jet groups that pass each  of the n siblings.
      JetGroupProduct finds all the distinct job groups formed by selecting one jet group from is taken fron each of
      the J_i. Only distinct jet groups are retained. Distinct job groups are those obtained by flattening the JobGroup
      calculated by the combination process, and discounting differences due to the order of the jets.
      
      When the siblings are identical Conditions, the same jets pass each of the conditions. The combination process
      can be optimized. The optimazation exploits the repetion that is _always_ present for identical Conditions.
      
      As an example, let J_1 = J_2 = J_3 = {1,2,3}. Then the combinations are	- excluding repeated jets - {1,2,3}, {1,3,2},
      {2, 1, 3}, {2, 3, 1}, {3, 1, 2}, {3, 2, 1}. After repetition removal, we are left with {1,2,3}. Further we only need to
      look at jets passing C_1.
      
      This optimatiztion replaces n repeated Conditions of capacity = 1 by a single Condition of capacity n.
      After initially allocating jets to Conditions, a further test needs now to be made: were there enough distinct
      jets to satisfy the n conditions - i.e. were there at least n jets fulfilling the condition.
      
      To this end, the IConditionMT interface is extended by ICheckedCapacityCondition. This PABC provides a checking function:
      
      bool capacitySatisfied(const HypoJetVector&,..)
      
       which will be passed the selected jets as an argument.
      
      Currently, the sole implementation is CheckedCapacityCondition.
      
      This commit uses this CheckedCapacityCondition. However the hypo trees remain as before, and no checks are made.
      It is therefor expected that they will be no visible effects at this stage.
      99640268
    • Peter Sherwood's avatar
  14. Oct 28, 2020
  15. Oct 21, 2020
  16. Oct 08, 2020
  17. Aug 07, 2020
  18. Jul 31, 2020
  19. Jun 02, 2020
Loading