[J3] [SC22WG5.6371] Kickstarting proposals for F202Y features

Van Snyder van.snyder at sbcglobal.net
Fri May 13 21:03:59 UTC 2022


On Fri, 2022-05-13 at 13:40 +0000, Jeff Hammond via J3 wrote:
> asynchronous blocks / tasks (equivalent to OpenACC async and OpenMP
> non-dependent tasks)

I advocated asynchronous blocks in section 18 of 97-114f2.

A PARALLEL or fork/join construct was advocated in 06-187, along with
monitor procedures to synchronize access to shared resources. Critical
sections would be useful for the same reason. We already have the
CRITICAL construct, but that is to synchronize access in the coarray
model. 08-202 points out that in a thread model, critical section
synchronization would likely use different methods. It advocated to
change the name of the construct to COCRITICAL, looking forward to the
day when critical sections for synchronizing parallel constructs would
be useful.

A PARALLEL or fork/join construct, and asynchronous blocks, were
advocted in 18-243 and 19-108.

Bill Long pointed out that one can fake a fork/join construct by
putting SELECT CASE inside DO CONCURRENT, but that's ugly.

Ada has had tasks since the Strawman requirements document in 1976. It
turns out that tasking, at least in the Ada model, has inherent
inefficientices, so Ada introduced what are called "protected
variables," which are actually coroutines. Read "Concurrent and Real-
Time Programming in Ada" by Alan Burns and Andy Wellings.

The Ada committee believes that asynchronous subroutines and
asynchronous blocks are bad ideas because they make it too easy to
introduce race conditions.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.j3-fortran.org/pipermail/j3/attachments/20220513/716d48fc/attachment-0001.htm>


More information about the J3 mailing list