To: J3 08-113 From: Bill Long and John Reid Subject: Definition of 'collective subroutine' Date: 2008 January 22 References: J3/08-007, J3/08-102, J3/07-323r1 Discussion When making the edits from 07-323r1, the editor deleted "for data" from its definition of "collective subroutine": "intrinsic subroutine that is invoked on a team of images to perform a calculation for data on those images and assign the value of the result on all of them". He considers it to be incorrect because 'the cross-team reduction operates using data that is not local to the image (otherwise the result would necessarily be different on each image!)'. We disagree that deletion is appropriate. For example, consider a run with 4 images and the team for the collective consisting of images 1 and 2. The original text was intended to say that data (combined as a group) from images 1 and 2 are involved in the collective, which is correct. The editor read it as image 1 uses data from image 1 and image 2 uses data from image 2, which is not correct. The new wording does not constrain the data to be on the team images (saying nothing about data), so it does allow that the execution on images 1 and 2 could involve data from images 3 and 4. This is critically wrong since issues of memory synchronization are involved in the collective and that synchronization applies only to the images in the team. Access outside the team involves semantic hazard. The editor also considers it to be ungrammatical. Here is an alternative. Edits to J3/07-008 [12:7] In 2.1.22 collective subroutine, replace the definition by "intrinsic subroutine that is invoked on a team of images to perform a calculation involving data on all those images and assign the value of the result on all of them (13.1)". [343:15-17] In 13.1 Classes of intrinsic procedure, replace the first sentence of para. 4 by "A collective subroutine is one that is invoked on a team of images to perform a calculation involving data on all those images and assign the value of the result on all of them."