Opened 7 years ago
Closed 6 years ago
#208 closed defect (fixed)
Error in paralelisatino interface of interpolation
Reported by: | jpolcher | Owned by: | somebody |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | Model architecture | Version: | |
Keywords: | Cc: |
Description
aggregate_p was designed to called in a parallel section of the code and manage the interpolation which is only mono-proc. Once this is done the result (sub_index, sub_area) are scattered to all other processors.
This works well, except when in some routines aggregate_p is called within an "IF ( is_root_prc ) THEN" structure. In this case the global array is scattered onto the local arrays which are not correctly dimensioned. This leads to out of bounds access to memory.
This bug has been in the code for years and it is surprising it has not been noted before !
The solution is simply to precede the the "CALL scatter()" with a "IF ( nbpt < nbp_glo)". So the scatter will only be applied if the code has been called with local variables.
Change History (1)
comment:1 Changed 6 years ago by jgipsl
- Resolution set to fixed
- Status changed from new to closed
I can not find this way of coding in the trunk. It must have been corrected earlier.