Common Geometry Primitives library - WP3 for the VecGeom team - CERN Indico

Page created by Donald Romero
 
CONTINUE READING
Common Geometry Primitives library - WP3 for the VecGeom team - CERN Indico
Common Geometry Primitives library
                                                            WP3

                                     Mihaela Gheata, CERN EP/SFT
                                         for the VecGeom team

  This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 654168.
Common Geometry Primitives library - WP3 for the VecGeom team - CERN Indico
Content

ØEvolution
ØStatus
      Ø Code restructuring
      Ø Solids optimisations
      Ø VecGeom in experiments
ØDirections and work plan
ØConclusions

April 26,
                             Common Geometry Primitives library - WP3   2
2018
Common Geometry Primitives library - WP3 for the VecGeom team - CERN Indico
Evolution

• AIDA project aiming initially to unify and modernize geometry algorithms
• Scope extended to encompass parallelism/vectorization and multi-
  architecture/multi-platform support -> VecGeom
• 2018 marks phasing out the initial USolids implementation while entering
  the production phase for VecGeom
      • Adopted Apache 2.0 license
• Next: integration in ROOT & Geant4 as complete alternative to native
  navigation
                                                               Performance      Production, adoption
                                                                   R&D             by experiments

     Geant4
     geometry    ROOT/TGeo      AIDA USolids            VecGeom           VecGeom v00.05.00

       ~1995          ~2002           ~2010              ~2013                ~2018

April 26, 2018                 Common Geometry Primitives library - WP3                                3
Code restructuring

• Externalized VecCore that became a common vectorization abstraction layer
  used in other areas (GeantV, ROOT, experiments)
      • VecCore maintained now under root-project GitHub umbrella:
      https://github.com/root-project/veccore
• Completed migration of interfaces to use VecCore and templates on data
  type (scalar/vector) for all navigation algorithms
      • Mostly internal changes to increase flexibility
• Added possibility to use solid specializations via a common factory
  mechanism
      • Provide to the user the best specialization of a solid for a given set of parameters
• Phased out USolids implementation
      • All functionality directly available in VecGeom or Geant4 with better performance

April 26, 2018                    Common Geometry Primitives library - WP3                     4
New interface to
                                                           Geant4

     VecGeom                                                                                                      Geant4
                   UnplacedVolume_t                                           G4VSolid
                                                                    DistanceToIn(p,v)                              G4Box
                 DistanceToIn(p,v,s)
                 DistanceToOut(p,v,s)                               DistanceToOut(p,v)
                 SafetyToIn(p)                                      DistanceToIn(p)
                                                                    DistanceToOut(p)                                       G4Tubs
                 SafetyToOut(p)
                  :                                                  :
                                                                                                                           :

                                                                                                                #define        #define
             UnplacedVolumeImplHelper                                       G4UAdapter
                                                                    DistanceToIn(p,v)    DistanceToIn(p,v,s)
                                                                    DistanceToOut(p,v)   DistanceToOut(p,v,s)       G4UBox
                                                                    DistanceToIn(p)      SafetyToIn(p)
                                                                    DistanceToOut(p)     SafetyToOut(p)
                                                                     :                    :
                                                                                                                          G4UTubs
                          vecgeom::UnplacedTube
                                         :                                                                                 :
          vecgeom::UnplacedBox

April 26, 2018                                Common Geometry Primitives library - WP3                                                   5
Solids development:
                                              Tessellated solid

• Complete re-write of            Vectorized checks on bounding
  algorithms aiming to            boxes (limiting #candidates)
  vectorize in single
  particle mode on
  facets of the same type                                                   Hit candidate
  (triangles)                                                                                         Vectorized
                                                                                                      distance
                           e-                                                                         calculation
                                                                                                      on triangles
                                              ABBoxManager                            TessellatedCluster

• 2-level vectorization
      • Find hit candidates by fast vectorized checks on bounding boxes of clusters of
        triangles
      • Optimize checks on selected clusters by vectorizing on triangle components

April 26, 2018                   Common Geometry Primitives library - WP3                                            6
Tessellated Solid:
                                              Initialization performance

                                                                                                Tessellated solid initialization time
• Initialization time bound by clustering                                         1.E+04
                                                                                                           VecGeom        USolids

  (VecGeom) and voxelization                                                      1.E+03

  (USolids/Geant4)                                                                1.E+02

• In VecGeom the clustering of

                                                        Initialization time [s]
                                                                                  1.E+01

  bounding boxes by the helper is O(N2)                                           1.E+00

      • Still ~x10 faster than the old algorithm                                  1.E-01

      • Can be largely improved                                                   1.E-02

• New clustering algorithm needed.                                                1.E-03

  Time becomes prohibitive for large                                              1.E-04

  structures (>106 facets)                                                             1.E+02   1.E+03           1.E+04
                                                                                                               Number of facets
                                                                                                                                    1.E+05   1.E+06

April 26, 2018                     Common Geometry Primitives library - WP3                                                                           7
Tessellated Solid:
                                                                   Navigation performance

                                                                                                         Speed-up
      • Large performance                                                14                 DistanceToInUS/VG       DistanceToOutUS/VG
        improvement for distance
        computation for up to                                            12

        O(105) facets

                                             Time USolids/Time VecGeom
                                                                         10

      • Log(N) complexity in USolids                                      8

        approach catches up linear
        complexity in new algorithm                                       6

        for ~106 facets                                                   4

      • Improvements possible for                                         2

        very large number of facets                                       0.E+00
                                                                          0        2.E+05    4.E+05        6.E+05       8.E+05       1.E+06   1.E+06

            • 2 levels of bounding boxes                                                                 Number of facets

              now -> too many candidates
                                                                   Speed-up for DistanceToIn/DistanceToOut computation compared to USolids
            • Number of levels can be
              increased

April 26, 2018                    Common Geometry Primitives library - WP3                                                                             8
Extending multi-
                                                     faceted approach
         • Implementation of facet-based solids
           (trapezoids, polyhedra, extruded solid)
           using a helper based on TessellatedCluster
         • Implemented new SIMD helper class
           TessellatedSection
                 • Representing a convex surface made of
                   quadrilateral tiles, organized in clusters of size
                   = vector length
                 • Delimited by two Z planes
                 • Using explicit vectorization on tiles using
                   VecCore types
         • Can represent sections of multi-faceted
           solids
                 • Polyhedra, extruded solids, trapezoids
                 • Tests ongoing

April 26, 2018                          Common Geometry Primitives library - WP3   9
Solids development:
                                                Extruded Solid

      • Initially implemented as a Tessellated Solid for                                   Scalar navigation interfaces
        the general case (arbitrary polygon, arbitrary
        number of Z planes)                                                          LoopUnplacedVolumeImplHelper
                                                                                       
            • Performance gain due to improved algorithm
      • Specialized to simple extruded implementation                                     UnplacedExtruded
        (Sextru) for 2 planes right prism
      • Specialized to using tessellated sections for the              2 planes
                                                                                                ExtrudedStruct              General
        convex case with more Z planes                                 no scaling/shift                                     extruded

      • Planning to use the new factory mechanism for                           PolygonalShell                 TessellatedStruct
        selection of the best implementation
                                                                                                              TessellatedSection

                                                                     Helpers dispatching to vectorized           Convex
                                                                     implementations                             extruded

April 26, 2018                     Common Geometry Primitives library - WP3                                                        10
Performance for
                                                                                                                                               convex extruded solid

                                                            • Initial implementation based on tessellated solid not so fast for
                                                              Contains/Inside
                                                            • Performance increased by large factor after using TessellatedSection
Speedup compared to ROOT/Geant4

                                                                                        Extruded Benchmark — Backend — x8664                                                                                             Extruded Benchmark — Backend — x8664

                                                            VGscalar         ROOT                                                                                                  VGscalar            ROOT
                                                             Geant4                                                                                                                 Geant4

                                                       10
                                                                                                    Extruded with 4 planes/16 vertices per plane                              10

                                                        9                                                                                                                      9

                                                        8                                                                                                                      8

                                                        7
                                                                       Extruded as                                                                                             7
                                                                                                                                                                                                                         Extruded using
                                                                                                                                                     VecGeom scalar speedup
                              VecGeom scalar speedup

                                                        6
                                                                       tessellated solid                                                                                       6
                                                                                                                                                                                                                         tessellated sections
                                                        5                                                                                                                      5

                                                        4                                                                                                                      4

                                                        3                                                                                                                      3

                                                        2                                                                                                                      2

                                                        1                                                                                                                      1

                                                        0                                                                                                                      0
                                                                        Inside      Contains        SafetyToOut       DistanceToIn   DistanceToOut                                            Inside          Contains        SafetyToIn     SafetyToOut        DistanceToIn   DistanceToOut

                      April 26, 2018                                                                                     Common Geometry Primitives library - WP3                                                                                                                              11
New general
                                             trapezoids
• For simple solids (box, trd,
  parallelepiped) not expecting
  gains using tessellations
      • Gains in scalar mode obtained by
        scalar optimizations (usage of
                                                                    SPEEDUP GENERAL TRAPEZOID USING
        vectorized Min/Max, better use of                                 TESSELLATED SECTION
        temporaries)                                2.5

• For the solids already vectorized in               2
                                                                                                    1.97

  the scalar case the improvement is                1.5    1.40
                                                                                    1.56
                                                                                                                                1.37

  very limited                                       1
                                                                        1.00

      • 5-10% in some methods of                                                                                  0.69

        Polyhedron, Trapezoid                       0.5

• Large improvements observed for                    0
                                                           Inside     Contains   DistanceToIn   DistanceToOut   SafetyToIn   SafetyToOut

  previously non vectorized cases
  (general trapezoids)                                    Speed-up of general trapezoid compared
                                                          to previous implementation

April 26, 2018                  Common Geometry Primitives library - WP3                                                                   12
VecGeom in
                                             experiments
• In CMS, tests of Geant4 10.4 with VecGeom started early in 2017, during the
  development process
      • Coordinated work between the VecGeom, Geant4 and CMS teams
      • Observed 7-13% improvement in CPU performance with similar memory usage when
        using Geant4 10.4 + VecGeom
      • Decided to use VecGeom for 2018 productions
• LHCb started also testing VecGeom in fall 2017
      • No speed-up measured due to usage of very simple solids
• The Fermilab Mu2e experiment will perform precision measurements of the
  neutrino- less muon-to-electron conversion rate to search for new physics
      • Tests of Geant4 10.4, including VecGeom v00.05.01 started in January 2018
• ALICE planning to use full VecGeom features in Geant4 simulation
      • Needs VecGeom navigator interfaced from Geant4

April 26, 2018                  Common Geometry Primitives library - WP3               13
WP3 deliverables
                                 achieved

April 26, 2018   Common Geometry Primitives library - WP3   14
Next steps

• VecGeom navigation interfaced with Geant4 and ROOT
      • Geant4: first implementation as derivation from G4Navigator
      • Investigating also a templated approach for using VecGeom navigator
• Complete the set of remaining less-used solids
      • Multiple union, twisted solids, planar half-space used in Boolean solids
      • New version of more robust torus in development
• Finalizing solids factory implementations to handle all specializations
• Continue testing on realistic geometry setups
      • Robustness tests
      • Exact tracking comparison with original Geant4 implementation
      • Include new snapshots from LHC detectors & feedback from experiments
• VecGeom persistency will be implemented for GDML and ROOT formats
      • GSoC and summer student projects this year
• Write a first version of a user guide

April 26, 2018                   Common Geometry Primitives library - WP3          15
Summary

• VecGeom now available as first production-quality release v00.05.00
      • Tested by several experiments, adopted by CMS in production for 2018
• Interface re-factoring completed
      • Based on external VecCore, used by other packages than VecGeom
      • USolids implementation phased out: all functionality now available in VecGeom
      • Factories to handle specialized solids
• New solids/performance improvements for existing ones
      • General trapezoid, but also simple solids
      • Fast version of tessellated and extruded solids now available
• Ongoing work for interfacing Geant4 navigation with VecGeom
      • Navigation interface re-design in Geant4
      • Documentation

April 26, 2018                   Common Geometry Primitives library - WP3               16
Contributors

• CERN-EP/SFT + AIDA 2020: G. Amadio, J. Apostolakis, G. Cosmo, A. Gheata,
  M. Gheata, P. Mato, W. Pokorski, E. Tcherniaev
• J. Martinez Castro, A. Miranda Aguillar (Mexico), P. Canal, G. Lima (FNAL),
  R. Sehgal (BARC), S. Wenzel (CERN-ALICE)

• Repository for VecGeom
      • https://gitlab.cern.ch/VecGeom/VecGeom
• JIRA issue tracking tool
      • https://its.cern.ch/jira/projects/VECGEOM

April 26, 2018                  Common Geometry Primitives library - WP3        17
You can also read