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. 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