To: J3 11-191
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.