= Name and subject of the action Last edition: '''[[Wikinfo(changed_ts)]]''' by '''[[Wikinfo(changed_by)]]''' The PI is responsible to closely follow the progress of the action, and especially to contact NEMO project manager if the delay on preview (or review) are longer than the 2 weeks expected. [[PageOutline(2, , inline)]] == Summary ||=Action || Loop Fusion || ||=PI(S) || I.Epicoco, F.Mele || ||=Digest || Adoption of the 'loop fusion' optimization tecnique to reduce the cache misses and to improve the computational performance || ||=Dependencies || Extra-halo || ||=Branch || source:/NEMO/branches/{YEAR}/dev_r{REV}_{ACTION_NAME} || ||=Previewer(s) || TBD || ||=Reviewer(s) || TBD || ||=Ticket || #2367 || === Description {{{#!comment width=25em help Describe the goal of development and the methodology, \\ add reference documents or publications if relevant. }}} ''The halo management support has been introduced to provide the developer with a tool for specifying different halo sizes for different NEMO Kernels. As an example, we cite the case of dynspg_ts routine where it could be convenient to enlarge the halo region (up to 5 lines or more) to reduce the communication steps in the time sub-stepping loop. In the advection kernels, like in the MUSCL schema, the use of a halo region 2 lines wide allows to remove the communication which currently happens between the slop calculation and the flux calculation; by means of a 2-lines halo, only an exchange is needed at the beginning of the routine and this, in turn, makes the code ready for further optimizations such as tiling ad loop fusion. Moreover, the size of the halo region could be also tuned according to the size of the sub-domain; it is worth remembering that with a wider halo region the overall communication costs reduce but the computation costs grow. '' === Implementation {{{#!box width=35em help Describe flow chart of the changes in the code. \\ List the Fortran modules and subroutines to be created/edited/deleted. \\ Detailed list of new variables to be defined (including namelists), \\ give for each the chosen name and description wrt coding rules. }}} ''...'' === Documentation updates {{{#!box width=55em help Using previous parts, define the main changes to be done in the NEMO literature (manuals, guide, web pages, …). }}} ''...'' == Preview {{{#!box width=50em info [[Include(wiki:Developers/DevProcess#preview_)]] }}} ''...'' == Tests {{{#!box width=50em info [[Include(wiki:Developers/DevProcess#tests)]] }}} ''...'' == Review {{{#!box width=50em info [[Include(wiki:Developers/DevProcess#review)]] }}} ''...''