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
New frame
New frame
New frame
New frame
New frame
New frame
New frame
New frame
New frame