public server System (NWP) + code design policy: modularity, parallelization, optimization, hardware + code management: development methodology, versioning, technical validation, compilation Source code: model & DA NWP Applications + scripting + dataflow and tasks scheduling + range of applications Working environment + data handling tools + tracking of evolutions/bugs/cycling + communication, documentation + training sessions What mainly came out of discussions Source Code Management < difficulty and timing to contribute to new versions: timing, accessibility, validation < difficulty to validate merged pre-cycles, incl. cycling w/ ECMWF > more accessible repository ? > more continuous integration ? by an integration team > more thorough validation > more coordination (e.g. Surfex versions) & formalized procedure for integration ? (code review) Technical validation WHAT to test: elementary+extensive range of configurations, full chaining ? HOW to test: validation w.r.t. integration strategy and repository, scripting system ? WHERE to test: contributors, integrators > @ home (PC, HPC) / identified platforms ? Common Scripting System + wide & extensible range of configuration types + research and operational + based on open source languages & data formats + from scratch or choice of an existant one ? + sharing among consortium: aim in terms of adoption ? cost to benefit ? facilitated by a Common Working Infrastructure (Environment/Platform) (repository web access, ticketing, discussion, wiki, documentation, training material & sessions) # # # # # # # # # CY46_t1.01 # # # # Cycling in the IFS-ARPEGE-AROME code (a simplified GIT view) - current strategy - CY46 CY46T1 CY46T1_r1.01 CY46T1_r1.nn CY47 CY47T1 CY46_t1.nn Cycling in the IFS-ARPEGE-AROME code (a simplified GIT view) - continuous integration - Legend # # # # # # # # # Legend # # GIT tag <- commit # # # <- ellipsis (commits) # # <- merge CY46 CY46T1 CY46T1_r1.01 CY46T1_r1.nn CY47 CY47T1 Repositories and GIT flow: a possible organisation Godfather repository accessible to all in read mode, accessible to integrators in read/write mode - master - integration branches public servers staging repositories locally accessible to users in read/write mode, accessible to integrators in read(+write) mode - master - integration branches - user contribution branches @integrator#N integrator repository accessible to integrators only - master - integration branches - user contribution branches @user#N (PC or HPC) user repository accessible to user only - master - integration branches - user contribution branches System Task Team: Ulf Andrae, Alex Deckmyn, Maria Derkova, Ryad El Khatib, Claude Fischer, Harold Petithomme, Daniel Santos Munoz, Oldrich Spaniel, Florian Suzat, Eoin Whelan, Alexandre Mary, ... But also... + Keep a close eye on ECMWF Scalability program and associated evolutions of the code + Consider founded initiatives like the current one Hirlam is doing with BSC (optimization/new architectures) + Code modernization: stick to IFS line, and/or more object-oriented features ? + Compilation: need for a unified building tool ? Or extend existant w.r.t. current needs. + Questionnaire / detailed inventory of the tools used throughout the consortium. implies may require mary_CY46_superbranch gco_CY46_t1 gco_CY46T1_r1 (phasing) (merge) (phasing) master master deadline validation : ~4 months declaration contribution window : ~2 months declaration mary_CY46_superbranch gco_CY46_t1 gco_CY46T1_r1 (phasing) branch (merge & validation) (merge & validation) (merge & validation) master master declaration continuous integration : ~6 months declaration integrator: pull contribution & merge on integration branch integrator: update integration and master branches user: fetch & pull (update master & integration branches) user: push contribution branch user: pull request
1
  1. New frame
  2. New frame
  3. New frame
  4. New frame
  5. New frame
  6. New frame
  7. New frame
  8. New frame
  9. New frame
  10. New frame