EIRENE Streamlining, Code Camp FZJ

Europe/Berlin
Bldg. 9.1 "IPP-A", Large Seminar Room (ZOOM <NGM_CC21>)

Bldg. 9.1 "IPP-A", Large Seminar Room

ZOOM <NGM_CC21>

https://us02web.zoom.us/j/81849254369?pwd=TktaSTUzMW1DbU5ZYVhlb1AxUlNtdz09
    • 09:00 13:45
      Arrival, getting started, bilateral talks, etc.
      • 12:30
        Joint taxi from DUS airport (12:30?..) 50m
    • 13:45 14:00
      FORMAL START. Greetings, agenda approval, misc. 15m
    • 14:00 16:00
      A1: Version and simulation case(s) for streamlining

      Mapping of the main branches, challenges
      Expected output: any merging work that can be done during code camp, make sure the starting branch develop_openmp has all the requested features, e.g. Jorge’s tallies work)
      Master input file; possible variations, testing focuses

      Convener: Yannick Marandet (CEA)
      • 14:00
        Overview of the EIRENE versions 20m

        10-15 min talk + questions

        Speaker: Petra Boerner
    • 16:00 16:20
      Break (20 min) 20m
    • 16:20 18:20
      B1: Grouping of variables into structures

      (within modules, no IMAS)

      Convener: Jorge Gonzalez (DIFFER)
      • 16:20
        Characteristic examples 20m

        Experience from tallies output to HDF5: coding samples, useful constructions, suggested style...

        Speaker: Jorge Gonzalez (DIFFER)
        1. Where it will be relevant to group variables:
          1. Improves performance
          2. Improves code readability
          3. Results in a more flexible code for current or future developments.
        2. Possible impacts of variable grouping:
          1. Relevant reduction in performance.
          2. Impact in pre/post-processing tools.
          3. Coupling with plasma codes.
          4. Rewriting time is to large for the reduced benefit.
          5. Private/public variables.
          6. Cache.
        3. Possible points to apply variable grouping:
          1. Particles
          2. Geometry, starting with coordinates.
          3. MPI broadcasting
    • 09:30 12:30
      B2. Grouping variables in a view of core segregation

      --> working session I on variable grouping (specific branch selected for the core segregation, see session A1)
      Large focus on joint coding and detailed decisions.
      --> One should identify and group variables absolutely necessary for the main loop.

      Conveners: Yannick Marandet (CEA), Dmitriy Borodin (FZJ)
    • 12:30 13:45
      Lunch 1h 15m

      Regular bus to "Seecasino" leaves 12:30!

    • 13:45 15:00
      Discussion/report/feedback on the coding advancement 1h 15m
      Speaker: ALL

      1) Can we improve geometry treatment?

       --> Cell relevance to the stratas (surfaces) to be reviewed  (PB, Monday morning session)

       --> Can one bring this together with the OcTree version (Oliver Bertuch)

      --> Should we consider using an abstract cell type uniform for all existing cell types (DB)?..

       

      2) Should we move particle intializations out of the main loop??? 

       

      3) Streamlining of the main loop

       --> Define particle initial conditions type (JG); in future also trajectory type

      --> Use of modules to be localized to the relevant routines

      --> Link cells with the relevant additional surfaces

      --> The parameters affected by the routines should be given explicitely as arguments; the routine input should also be made as explicit as possible. 

      --> Modularize the routines where possible using utility functions (with "contain")

      --> Make shorter and "cleaner" functions (consider using inlining) (JG/DH - formulate more clearly, test "pure" subtoutune directive)

       

      4) Reconsider variable structure in EIRENE

       --> group variables using TYPEs

      --> reconsider using large arrays allocated and used by distributed pointers (also from the point of view of HPC broadcasting; mind the cashing by the exersize).

       

      (I) This excersize helps to improve

           a) joint expertise and mutual understanding on the code writing priciples

           b) reduce "learning barier" for newcommers

    • 15:00 18:00
      B3. Grouping of variables into structures (for IMASification)

      (IO related : geometry, tallies)

      Convener: Dmitriy Borodin (FZJ)

      1) Things suitable for outsourcing to ACH

          a|) Utility routines to build GDB objects (Thomas Johnson) - not EIRENE specific! Just theatraeders for instance (for all EIRENE geometry types).

          b) Interpolation and extaction routnes.

       

      2) Basically B2.5-EIRENE is IMASIfied from the fluid side for output. Still, there are variables in EIRENE worth IMASification, not seeable from the B2.5 IDSs

           a) statistical vaiances

           b) all, what is ouside the B2 grid (extended grid and more).

           c) CRM internal data

           d) Emission data with EIRENE resolution (processes, lines, cells, etc)

           e) Particular processes, surfaces etc. defined inside EIRENE

           f) metadata specific for EIRENE (code library node)

           g) make IMAS from base files describing geometry

           k) provide conversion tools for grid types (e.g. quadragular to thriangular)

       

      3) EIRENE as an NGM should be IMASified independent on B2.5

            a) keep B2.5 IDSs as a basis for other fluid codes (starting with SOLEDGE3X). Flag where generalisation is needed.

            b) Start trasforming common variables between B2.5 and EIRENE into IMAS (long term!!)

                ==> Best to do after the streamlining and total version merge!

                ==> Data structure developed by streamling should keep in mind future IMASification.

            c) Start with IMAS input for EIRENE

                ==> adding cortesian velocity componets

                ==> incorporate ways to use the machine description DB 

       

       

       

      • 15:00
        IMAS in SOLPS-ITER (EIRENE side): status and outlook 30m

        Participation from ITER confirmed

        Speaker: Dr Xavier Bonnin (ITER IO)
      • 16:00
        Break (20 min) 20m
    • 09:00 11:00
      S1. Working session with focus on core segregation.
      Convener: Dmitriy Borodin (FZJ)

      1) Analyse random generator for harmful variations
        -- Random and MPI/OpenMP
        -- ACH task?..

      2) Improving  presorting of additional surfaces.

        -- available routinges provide good starting point 
        -- OcTree is available (3-5 points surface polygons)
       

      3) Handling the grid - single geometry option should be aimed. Not just OOP, but streamling the basic math.

       

      • 10:45
        Break (15 min) 15m
    • 11:00 12:30
      EIRENE Versioning (merge strategy)
      Convener: Yannick Marandet (CEA)

      1) Add sripts, compiler configuration files and postprocessing.

      2) Move manual into the same repository as the source

      3)  Merge of the instructured version of the SOLPS-ITER should be taken care about

       

      More general items:

      1) Git rebase is not be used

      2) Var names (applied to new code parts)

         -- Use capitals to underline name parts

         -- no type indications (except for pointers, etc?.. needs really good motivatgion)

      3)

         -- warning tolerance --> 0 

       

       

    • 12:30 13:45
      Lunch 1h 15m

      Regular bus to "Seecasino" leaves 12:30!

    • 13:45 15:00
      Discussion/report/feedback on the coding advancement 1h 15m
      Speaker: ALL
    • 15:00 18:00
      B4. Variable structure in the streamlined version
      Convener: Jorge Gonzalez (DIFFER)
      • 16:00
        Break (20 min) 20m
    • 09:00 12:30
      S2. Code segregation in the streamlined version
      Convener: Yannick Marandet (CEA)

      1) We do cosider streamlining of the CR part

             -- Go abstract reaction type (DB)

             -- Reconsider MODCOL (reaction type, fitting type, N insiede reaction type)

             -- Unloading the main loop (fpath.f) from branching (is it really worth the effort?..)

             -- Tracking of internal states can be done based on external preparation

       

      3) To be liasoned with YACORA, suggesting 2 options:

           -- YACORA will be the basis, but we should provide the access layer

           -- Alternatively we create our our standalone preparation tool (starting with HydKin and using YACORA data if allowed + Original data)

          

       

      2) Runtime error handling should be reconsidered (DB)

       

      • 11:00
        Break (15 min) 15m
    • 12:30 13:45
      Lunch 1h 15m

      Regular bus to "Seecasino" leaves 12:30!

    • 13:45 15:00
      Discussion/report/feedback on the coding advancement 1h 15m
      Speaker: ALL
    • 15:00 18:00
      EIRENE toy model (developed with ACH)

      Sceleton version most suitable for testing of various parallelisation schemes

      Convener: Oscar Lappi (ACH-VTT)
      • 15:00
        EIRENE Toy model: aims, current development status 20m
        Speaker: Oscar Lappi (ACH-VTT)
      • 16:00
        Break (20 min) 20m
    • 19:30 21:30
      Social Dinner (in Jülich, outside FZJ) 2h
    • 09:30 10:15
      Discussion/report/feedback on the coding advancement 45m
      Speaker: ALL
    • 10:15 14:35
      Wrap-up and future plans

      Reports on the sessions (10 min each?..)
      Final discussion

      • 10:20
        The streamlined version - status and outlook 15m
        Speaker: Yannick Marandet (CEA)
      • 10:35
        Decisions on the variable structures 15m
        Speaker: Jorge Gonzalez (DIFFER)
      • 10:50
        Progress and plans regarding the core segregation 15m
        Speaker: Dmitriy Borodin (FZJ)
      • 11:05
        EIRENE IMASification 15m
        Speaker: Dmitriy Borodin (FZJ)
      • 11:20
        Break (15 min) 15m
      • 11:35
        Final Discussion 1h
        Speaker: Dmitriy Borodin (FZJ)
    • 12:30 13:45
      Lunch 1h 15m

      Regular bus to "Seecasino" leaves 12:30!

    • 14:35 15:00
      Fixing the meeting points and adjorn 25m
      Speaker: Dmitriy Borodin (FZJ)
    • 15:00 18:00
      Final working session: issues and solutions
      Convener: Dmitriy Borodin (FZJ)