To: J3 J3/14-148r1 From: Reinhold Bader and John Reid Subject: Treatment of image failure Date: 2014 June 06 References: N2007, N2013 Discussion: ~~~~~~~~~~~ [13:13-15] and [33:17-25] describe how image failure establishes the value of STAT in image control statements. The wording "in the current team" that appears in these paragraphs is not correct because some of the image control statements involve image sets that may be different from the image set in the current team. Furthermore, the TS text implies that successful execution of image control statements, the MOVE_ALLOC intrinsic, and ALLOCATE or DEALLOCATE statements is possible if images have failed and STAT is specified. The description of STAT does not match this expectation. Finally, I consider it desirable to have some quantification of the property "images known to have failed". This paper suggests fixes for these problems. EDITS to N2007: ~~~~~~~~~~~~~~~ [13:13] Replace "image of the current team" by "image involved in execution of an image control statement or collective subroutine" [13:15] After "collective procedure." insert new sentence "If the STAT= specifier of an execution of a CHANGE TEAM, END TEAM, FORM TEAM, SYNC ALL, SYNC IMAGES, or SYNC TEAM statement is assigned the value STAT_FAILED_IMAGE, the intended action shall have taken place for all the nonfailed images involved." [26:39-44] Replace "If the ... initiated termination;" by "If the STAT argument appears and execution is successful, the argument is assigned the value STAT_FAILED_IMAGE in the intrinsic module ISO_FORTRAN_ENV if a failed image has been detected in the current team; otherwise it is assigned the value zero. If the STAT argument appears and an error condition occurs, the argument is assigned the value STAT_STOPPED_IMAGE in the intrinsic module ISO_FORTRAN_ENV if the reason is that a successful execution would have involved an interaction with an image that has initiated termination;" [31:33+] Add the following text: "{In 6.7.4 STAT=specifier, edit paragraph 2 as follows} If the STAT= specifier appears, successful execution of the ALLOCATE or DEALLOCATE statement causes the to become defined with a value of {\ul STAT_FAILED_IMAGE in the intrinsic module ISO_FORTRAN_ENV if a failed image has been detected in the current team; otherwise it is assigned the value} zero." [31:36-38] Delete "value shall be ... otherwise, the" [33:16] after "the specified variable" insert "becomes defined with a value of {\ul STAT_FAILED_IMAGE in the intrinsic module ISO_FORTRAN_ENV if a failed image has been detected in the set of images involved in execution of the statement; otherwise it " [33:19-21] Delete "value shall be ... ; otherwise, the" [33:25+] Add the lines "The set of images involved in execution of a END TEAM, FORM TEAM, SYNC ALL or SYNC MEMORY statement is that of the current team. The set of images involved in execution of a CHANGE TEAM or SYNC TEAM statement is that of the team specified by the value of the specified argument. The set of images involved in execution of a SYNC IMAGES statement is that specified as its . The image involved in execution of a LOCK or UNLOCK statement is that on which the referenced lock variable is located. The image involved in execution of an EVENT POST statement is that on which the referenced event variable is located. After execution of an image control statement with a STAT= specifier or a collective subroutine with a STAT argument, all the failed images involved in the statement shall be known by the executing image to have failed." [33:27] Delete "other than detection of a failed image" [[not needed any more because a failed image is not an error if STAT is specified.]] [33:33] After "is not successful", insert "or an image involved in execution of the statement has failed"