J3/06-286 Date: 15 August 2006 To: J3 From: Aleksandar Donev Subject: Clarifications for SYNC, QUERY References: 06-007 Following some comments from Van and discussion in subgroup B, we propose clarifications of text concerning SYNC_IMAGES and QUERY. ------------------- Note 8.36 does not explain if there is a difference between SYNC_IMAGES(*) being executed on all images and SYNC_ALL. Here is an attempt to make it more informative and clarify the reason for having both SYNC_IMAGES(*) and SYNC_ALL: 202:0+3 In Note 8.36, add to the end of the second sentence: "for each other." -> "until all other images execute a SYNC_ALL statement, while SYNC_IMAGES causes an image to wait only until the images specified in the image set execute a corresponding SYNC_IMAGE statement. Execution of a SYNC_IMAGES(*) statement on all images achieves the same effect as execution of a SYNC_ALL statement, however, using a SYNC_ALL statement provides useful documentation and might be more efficient on certain platforms." Then split off "In the following example" as a separate paragraph. ------------------- The text describing QUERY and when it is satisfied etc. is very difficult to understand. This is an attempt to rewrite it: [205: 5-25] A QUERY statement is blocking if and only if it has no READY= specifier. A QUERY statement is satisfied on completion of its execution if and only if it is a blocking QUERY statement or it set the variable specified by its READY= specifier to true. Let Q_{M<-T} denote the number of times image M has completed the execution of a satisfied QUERY statement with a different image T in its image set. Execution of an image M, of the segment following a blocking QUERY statement is delayed until, for each different T in the image set, N_{T->M} > Q_{M<-T}. Before execution of that segment commences, Q_{M<-T} is increased by 1. Execution on image M of a non-blocking QUERY statement causes the to become defined. The value is set to false if, for a different image T in the image set, N_{T->M} <= Q_{M<-T}. Otherwise, the value is set to true, and then Q_{M<-T} is increased by 1.