09-274 To: J3 From: John Reid Subject: SYNC problems, especially SYNC MEMORY Date: 2009 July 27 Reference: 09-007r2, 09-186r3, 09-239 1. Discussion The edits proposed here are revisions of those in 09-186r3, following comments by Malcolm Cohen in 09-239. 2. Edits [128:12-13] In 6.7.1.2 Execution of an ALLOCATE statement, para 3, replace "each" by "every" twice. [187:19] In 8.5.1 Image control statements, para 1, delete "as". [187:20] In 8.5.1 Image control statements, para 2, replace the first sentence of p2 with "Execution of an image control statement divides the execution sequence on an image into segments." An alternative edit would be to delete this sentence altogether. It seems like a restatement of the definition of a segment, which is at [188:8-9] in the section titled "Segments". [191:2-3] In 8.5.5 SYNC MEMORY statement, para 1, replace "The SYNC MEMORY ... each of which" by "Execution of a SYNC MEMORY statement ends one segment and begins another; these two segments". [192] In 8.5.5 SYNC MEMORY statement, NOTE 8.39: In the 8th line of the example program segment, replace "! Preceding segment" with "! Segment " In the 10th line, replace "segment " with "segment " In the 14th line, replace "segment " with "segment " In the 18th line, replace "Subsequent segment" with "Segment ". Replace the first para after the program text with: "The DO WHILE loop does not complete until VAL is defined with the value false. This is the cooperative synchronization that provides the dependency that image Q does not complete the segment until the CALL statement in segment completes. This ensures that the execution of segment on image P precedes execution of segment on image Q." In the third paragraph, delete the first sentence, "The definition ... of segment ." At the end of the third paragraph, replace "" with "". [It is clearer to have the description in 8.5.5p3 use the same segment labels as the example in Note 8.39.]