Changes between Version 3 and Version 4 of 2020WP/HPC-02_Daley_Tiling


Ignore:
Timestamp:
2020-04-21T16:59:05+02:00 (6 months ago)
Author:
hadcv
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • 2020WP/HPC-02_Daley_Tiling

    v3 v4  
    2525=== Implementation 
    2626 
    27 {{{#!box width=35em help 
    28 Describe flow chart of the changes in the code. \\ 
    29 List the Fortran modules and subroutines to be created/edited/deleted. \\ 
    30 Detailed list of new variables to be defined (including namelists), \\ 
    31 give for each the chosen name and description wrt coding rules. 
     27A trial implementation of `tra_ldf_iso` is described in [https://forge.ipsl.jussieu.fr/nemo/attachment/wiki/2020WP/HPC-02_Daley_Tiling/tra_ldf_iso%20trial.pdf this document].  
     28 
     29The main code changes in the preferred approach (using public variables) are described below. 
     30 
     31__Summary of method__ 
     32 
     33The full processor domain (1:jpi, 1:jpj) is split into one or more subdomains (tiles). 
     34 
     35To work on a tile, the DO loop macros in `do_loop_substitute` are modified to use a new set of domain indices. A new subroutine `DOM/domain/dom_tile` sets the values of these indices and is also used to initialise the tile to the full domain in `DOM/domain/dom_init`. 
     36 
     37A loop over tiles is implemented at the timestepping level in `OCE/step/stp`. The domain indices for the tile subdomain are set within this loop by `dom_tile`, then 'unset' (set back to the full domain) after exiting the loop. All DO loops within the tiling loop therefore work on the current tile, instead of the full processor domain. 
     38 
     39The number of tiles is determined by the tile lengths, `nn_tile_i` and `nn_tile_j` defined in a new namelist `namtile`, with respect to the full domain. 
     40 
     41__Branch__ 
     42 
     43[http://forge.ipsl.jussieu.fr/nemo/browser/NEMO/branches/UKMO/dev_r12745_HPC-02_Daley_Tiling_trial_public dev_r12745_HPC-02_Daley_Tiling_trial_public] 
     44 
     45__New subroutines__ 
     46 
     47* `dom_tile` - Set domain indices 
     48 
     49__Modified modules__ 
     50 
     51''NOTE: the number of affected modules is expected to be much larger in the final implementation'' 
     52 
     53* `cfgs/SHARED/namelist_ref` - Add namelist `namtile` 
     54* `OCE/DOM/dom_oce` - Declare namelist variables 
     55* `OCE/DOM/domain` - Read `namtile` namelist and calculate tiling decomposition, add `dom_tile`, initialise domain indices 
     56* `OCE/TRA/traldf` - Changes to account for domain indices 
     57* `OCE/TRA/traldf_iso` - Changes to account for domain indices 
     58* `OCE/do_loop_substitute` - Implement domain indices 
     59* `OCE/par_oce` - Declare domain indices and tiling decomposition parameters 
     60* `OCE/step` - Add tiling loop and set domain indices using `dom_tile` 
     61* `OCE/step_oce` - Import `dom_tile` 
     62 
     63__Variables__ 
     64 
     65* Global variables 
     66  * `ntsi`, `ntsj`- start index of tile 
     67  * `ntei`, `ntej`- end index of tile 
     68  * `ntsim1`, `ntsjm1`- start index of tile, minus 1 
     69  * `nteip1`, `ntejp1`- end index of tile, plus 1 
     70  * `ntile`- tile number 
     71* Parameters 
     72  * `jpnitile`, `jpnjtile`, `jpnijtile`- number of tiles 
     73* Loop indices 
     74  * `jtile`- loop over tiles 
     75* Namelist 
     76  * `ln_tile`- Logical control on use of tiling 
     77  * `nn_tile_i`, `nn_tile_j`- tile length 
     78* Pre-processor macros 
     79  * `IND_2D`- substitution for ALLOCATE or DIMENSION arguments 
     80* Working variables 
     81  * `iitile`, `ijtile`- tile number 
     82* Dummy arguments 
     83  * `kntile` (`ntile`) 
     84 
     85__Namelist__ 
     86 
     87{{{ 
     88   !----------------------------------------------------------------------- 
     89   &namtile        !   parameters of the tiling 
     90   !----------------------------------------------------------------------- 
     91      ln_tile = .false.     !  Use tiling (T) or not (F) 
     92      nn_tile_i = 10        !  Length of tiles in i 
     93      nn_tile_j = 10        !  Length of tiles in j 
     94   / 
    3295}}} 
    33  
    34 ''...'' 
    35  
    3696=== Documentation updates 
    3797