To: J3 10-113r3 From: Aleksandar Donev Subject: Comments GB-14 and CA-02/3/4: Clarify execution of certain intrinsic procedures Date: 2010 February 17 References: WG5/N1802, WG5/N1803, J3/09-007r3 DISCUSSION 1. GB-14 The document does not specify how certain intrinsic procedures, principally in class S, may be used as far as their use in unordered images is concerned. The proposal is already implied for those of classes E, ES and PS by other wording. Those of class A are already covered. For implementations where images are separate processes run under a batch scheduler, it is common for the command and its environment to be different for image 1 and the other images; this restriction is already in the standard for "READ (*,...)". It would also be reasonable to implement secondary images by calls to 'network CPU servers', where they might not be associated with a command at all. 2. CA-02 There is a discussion on random number generator (RANDOM_NUMBER) on multiple images, but is left unstated what the relationship is between cores. We prefer that each image be able to generate random numbers independently, but if this is not possible, there should be a statement that this is processor dependent. 3. CA-03 It is not stated what the behaviour is between 2 images that execute EXECUTE_COMMAND_LINE concurrently. We recommend that this be stated to be processor dependent. 4. CA-04 The behaviour between two images that execute the following intrinsics cannot be guaranteed. COMMAND_ARGUMENT_COUNT, GET_COMMAND, GET_COMMAND_VARIABLE, CPU_TIME, DATE_AND_TIME, SYSTEM_CLOCK. We'd like to specify that it is processor dependent to the values returned on multiple images using the listed intrinsics. PROPOSAL The edit proposed here comes from GB-14. It appears to cover CA-02/3/4, too, but additional edits are provided to allow images to share a common generator. Additional edits are supplied for Annex A. EDITS [325:1-]In 13.5 "Standard generic intrinsic procedures" after Table 13.1, add the new paragraphs: The effects of calling COMMAND_ARGUMENT_COUNT, EXECUTE_COMMAND_LINE, GET_COMMAND, GET_COMMAND_ARGUMENT, GET_ENVIRONMENT_VARIABLE on any image other than image 1 are processor dependent. If RANDOM_SEED is called in a segment A, and either RANDOM_SEED or RANDOM_NUMBER is called in segment B, then segments A and B shall be ordered. It is processor dependent whether each image uses a separate random number generator, or if some or all images use common random number generators. On images that use a common generator, the interleaving of calls to RANDOM_NUMBER in unordered segments is processor dependent. It is processor dependent whether the results returned from CPU_TIME, DATE_AND_TIME and SYSTEM_CLOCK are dependent on which image calls them. NOTE 13.x For example, it is unspecified whether CPU_TIME returns a per-image or per-program value, whether all images run in the same time zone, and whether the initial count, count rate, and maximum in SYSTEM_CLOCK are the same for all images. [END NOTE] The use of all other standard intrinsic procedures in unordered segments is subject only to their argument use following the rules in 8.5.2. [464:3+] In Annex A, A.2 Processor Dependencies, add new entries: "the effects of calling COMMAND_ARGUMENT_COUNT, EXECUTE_COMMAND_LINE, GET_COMMAND, GET_COMMAND_ARGUMENT, GET_ENVIRONMENT_VARIABLE on any image other than image 1 (13.5);" "whether each image uses a separate random number generator, or if some or all images use common random number generators (13.5);" "on images that use a common random number generator, the interleaving of calls to RANDOM_NUMBER in unordered segments (13.5);" "whether the results returned from CPU_TIME, DATE_AND_TIME and SYSTEM_CLOCK are dependent on which image calls them (13.5);"