11-187 To: J3 From: Craig Rasmussen Subject: Use of ASYNCHRONOUS attribute beyond Fortran I/O Date: 2011 June 12 Reference: WG5/N1854 Discussion: ----------- With the proliferation of multi- and many-core processors, there is an increasing opportunity for exploiting parallelism by mechanisms outside the control of Fortran. For example, both MPI and OpenCL provide an API that allows memory in a Fortran image to be affected by a separate thread of control during the concurrent execution of a series of Fortran statements. Unfortunately there is currently no means whereby a Fortran programmer can inform the Fortran processor that a variable may be subject to asynchronous activity other than via the VOLATILE attribute, which has severe implications on performance. An attribute is needed that allows the programmer to informs the processor to disable certain code motion optimizations, as described in NOTE 5.4 regarding the ASYNCHRONOUS attribute. The actual name of this attribute is less important than its presence. An earlier vote by J3 favored ASYNCHRONOUS (used in the edits below), though another, such as ASYNCHRONOUS_MEM for example could be used. Edits to N1854: -------------- Insert in 6.4 Edits to clause 5 {In 5.3.4 ASYNCHRONOUS attribute, add to the end of sentence 1 in paragraph 1 [90:13]} or other asynchronous activity by means not specified by the program. {In 5.3.4 ASYNCHRONOUS attribute, add to the sentence ending on line 17, [90:17]} or may be referenced or defined by means not specified by the program.