To: J3 J3/18-117 From: Bill Long Subject: Put with Notify Date: 2018-February-07 Discussion: ----------- A capability called "put with notify" is popular in the SHMEM community as a very efficient, narrowly focused, synchronization technique for data transfers between images. The basic idea is to combine a "put" (definition of a variable on a different image) with a notification mechanism that allows the receiving image to know that the data has arrived. While long requested for coarrays in Fortran, there was previously no simple syntax to allow for two things on the left side of an assignment. Fortran 2018 introduced events along with specifiers as part of an image selector, which could be extended to overcome this problem. Feature outline: ---------------- Extend the image selector syntax to allow a NOTIFY = specifier in the variable of an assignment. NOTIFY could alternatively be spelled POST. For example, x[10, notify=ex] = y where ex is a coarray declared type(event_type). The effective event post is to the ex variable on the same image as specified by the image selector. On image 10, event wait(ex) [here it is safe to reference x and get the new value] If X was an array "waiting" for data to be transferred to separate elements from multiple images, the event wait could include a count. The feature differs from the sequence of x[10] = y event post (ex) in that the event post operation in the new feature can be incorporated into the same data packet as the value of y, and also that the synchronization is only on this particular transfer, and not all outstanding memory operations on the image. In other words, x[10, notiry=ex] = y does not constitute an image control statement.