To: J3 J3/21-142r1 From: Yasuharu Hayashi & John Reid Subject: NOTE on the coarray memory model Date: 2021-June-22 1. Introduction NOTE 4 in clause 11.7.2 says "In practice, apart from executions of atomic subroutines, the processor could make a copy of a nonvolatile coarray on an image (in cache or a register, for example) and, as an optimization, defer copying a changed value back to the permanent memory location while it is still being used. Since the variable is not volatile, it is safe to defer this transfer until the end of the segment and thereafter to reload from permanent memory any coarray that was not defined within the segment. It might not be safe to defer these actions beyond the end of the segment since another image might reference the variable then." The intention of the latter half of the second sentence "thereafter to reload..." related to cache optimizations for nonvolatile coarrays is unclear, because + Reload from permanent memory after the copy back should be safe irrespective of whether the nonvolatile coarray was defined or not, + The copy back and reload of the nonvolatile coarray that was not defined are not necessary in the first place, and + "thereafter" could be interpreted as "after the end of the segment", which seems to be in contradiction with the description in the last sentence "not be safe to defer these actions beyond the end of the segment". 2. Response from HPC We agree that a change is needed in this paragraph of this note. We would like to focus on a coarray being copied to a temporary memory location, altered there and copied back later, before the end of the segment. 3. Edits to 21-007r1 In 11.7.2 Segments, NOTE 4, para 2, line 2, change "on an image" to "in a segment", line 3, change "the permanent" to "its permanent", line 4, change "transfer" to "change", lines 4-5, delete "and thereafter ... the segment", line 5, change "these actions" to "this action", so that the para becomes "In practice, apart from executions of atomic subroutines, the processor could make a copy of a nonvolatile coarray in a segment (in cache or a register, for example) and, as an optimization, defer copying a changed value back to its permanent memory location while it is still being used. Since the variable is not volatile, it is safe to defer this change until the end of the segment. It might not be safe to defer this action beyond the end of the segment since another image might reference the variable then."