ISO/IEC JTC1/SC22/WG5 N2158 Minutes of Meeting of ISO/IEC JTC1/SC22/WG5 Hosted by ANSI, the USA Member Body for JTC1/SC22 in Berkeley, CA, USA June 11-15, 2018 List of Participants: Steve Lionel (self, USA) convenor Dan Nagle (NCAR, USA) PL22.3 chair Reinhold Bader (Leibniz Supercomputing Centre, Germany and DIN) Kiran Chandramohan (Arm, UK) Daniel Chen (IBM, Canada) Tom Clune (NASA, USA) Malcolm Cohen (NAG, UK) Bob Corbett (self, USA) Salvatore Filippone (Cranfield University, UK) Brian Friesen (Lawrence Berkeley National Laboratory, USA) Gary Klimowicz (NVIDIA, USA) Bill Long (Cray, USA) Divya Mangudi (Intel, USA) Jeanne Martin (former convenor, USA, Monday only) Lorri Menard (Intel, USA) David Muxworthy (British Standards Institution, UK) Vipul Parekh (Resenex, USA, Tuesday to Thursday) Craig Rasmussen (DOE, USA, Monday to Thursday) Soren Rasmussen (Cranfield University, UK) John Reid (JKR Associates, UK) Larry Rolison (self, USA, Monday only) Damian Rouson (Sourcery, USA) Anton Shterenlikht (University of Bristol, UK) Nathan Sircombe (Arm, UK) Van Snyder (Caltech/JPL, USA) Masayuki Takata (Edogawa University, Japan) Notes: 1. This was a joint meeting of SC22/WG5 and INCITS/PL22.3. These minutes record only the parts of the meeting in WG5 mode. 2. WG5 papers are referenced as Nnnnn. They are available from https://wg5-fortran.org/documents.html 3. INCITS/PL22.3 is abbreviated throughout to PL22.3 and its papers are referenced as J3/18-nnn. They are available from https://j3-fortran.org/ 1. Opening of the Meeting The meeting opened at 09:00 on Monday, June 11th 2018. 2. Opening business 2.1 Introductory remarks from the Convenor The convenor welcomed participants, especially those who were attending WG5 for the first time. He noted that this was his first meeting as WG5 convenor. 2.2 Welcome from the Host Brian Friesen welcomed participants on behalf of Lawrence Berkeley Laboratory. 2.3 Local arrangements Brian Friesen as co-host described local arrangements including action to be taken in the event of an earthquake. Damian Rouson, co-host, described the social arrangements for the week and local possibilities for dinner. 2.4 Appointments for this meeting The drafting committee would be Reinhold Bader, Daniel Chen, David Muxworthy (chair), Dan Nagle and Masayuki Takata. David Muxworthy would act as secretary and Steve Lionel as librarian and as editor of the Disposition of Comments document in response to the DIS ballot. 2.5 Adoption of the agenda [N2150] The agenda was adopted. 3. Matters arising from the minutes of the Garching 2017 Meeting [N2132] There were no items not otherwise on the agenda. 4. Status of Garching 2017 Resolutions [N2131] No matters were raised. 5. Reports 5.1 SC22 Matters (Convenor) The convenor reported that SC22 continued to disallow line numbers in standards documents. An SC22 working party had recommended a more timely procedure to distribute corrections and updates to existing standards via a JTC1 website. There was some concern about a possible delay in the provision of the Summary of Voting in the SC22 DIS ballot but in fact the document (SC22N5273) appeared on the SC22 website on the first morning of the meeting and was copied for convenience to PL22.3 paper J3/18-168. 5.2 National Activity Reports Canada: The quarterly SCC meeting was held in March with representatives of other programming language working groups such as C, C++, COBOL and ADA. The Fortran 2018 DIS was approved. Germany: Reinhold Bader is a member of DIN NA 043-01-22 AA "programming languages" subcommittee and participated in the yearly meeting, held in Berlin on November 27, 2017. He gave a talk about the state of Fortran standardization. Nine of the 17 registered members were present at the meeting. Japan: The chair of ITSCJ/SC22/Fortran WG has been changed from Minoru Tanaka (Fujitsu) to Hidetoshi Iwashita (Fujitsu). Translation of F2008 had been abandoned and that of F2018 would officially start, at the earliest, in April 2019. Preparation for the 2019 Tokyo meeting was in progress, and the preliminary local arrangements (N2151) would soon be available. UK: The BSI Fortran panel had 19 members, including observers, having gained four new members and lost three during the year. The UK voted "approval with comments" on the Fortran 2015/2018 second CD and DIS. The UK voted in favour of Steve Lionel as WG5 convenor. USA: The US had collected comments and requirements for future developments from around the world. It was considering criteria for the next revision, again open to world-wide contributions. Steve Lionel had taken over as WG5 convenor and established new WG5 (and PL22.3) websites. 5.3 Report from Primary Development Body (INCITS/PL22.3 Chair) PL22.3 was charged with developing the draft standard and had done so. 5.4 Reports from other Development Bodies (Editors/Heads) There were no contributing development bodies at present. 5.5 Liaison Reports: NCITS/J11 (C): Dan Nagle Work was proceeding as usual. CPLEX had been included in the main standard. MPI: Bill Long MPI Forum was meeting in the same week - June 11-14 see https://www.mpi-forum.org/meetings/2018/06/agenda The tickets concerning persistent collective operations were up for a formal vote. It looks like this is going to make it this time. There is some progress on MPI Sessions. Sessions is a very large topic -- they are making slow progress on different pieces for now. There is some talk about reviving ULFM by splitting it some manner. UPC: Damian Rouson Nothing to add. IFIP/WG2.5: Van Snyder Van Snyder could not get funding to attend last year's meeting in Oslo; the 2018 meeting was to be the following week in Sydney. He believed that there were no new projects, or old projects upon which new work has been done during the last two years, that would affect Fortran. A meeting had been proposed for this summer but would not take place. OpenMP: Bill Long See Appendix A. WG9 (Ada): Van Snyder The primary organizations in the Ada community were WG9, the Ada Rapporteur Group (primarily compiler vendors), and Ada Europe. They usually met once per year in conjunction with the International Conference on Reliable Software Technologies. This year, 18-22 June in Lisbon, was the 23rd conference. There were five presentations on reliable software technology, three on Ada 202x, three on handling implicit overhead, two vendor presentations, two on real-time scheduling, and three on application domains -- on the first day. There were at least thirteen sponsors (SigAda, SigPlan, and eleven commercial sponsors). Ada took a page out of the Fortran playbook and published a corrigendum recently. Further details are in http://ae2018.di.fc.ul.pt/meetings.html. WG23 (Vulnerabilities): Dan Nagle Dan Nagle would continue work in this project. OpenACC: Gary Klimowicz Information about OpenACC, including the current standard document, training materials, and upcoming events can be found at http://www.openacc.org/. The current OpenACC 2.6 standard includes support for manual deep copy of data structures to target processors. Discussions have begun on "true" deep copy, which allows data movement policies to be defined within the data types themselves, and referenced when needed in the accelerated code. Users can specify which parts of larger data structures are to be copied to targets. There is a technical report https://www.openacc.org/sites/default/files/inline-files/TR-16-1.pdf that describes the "true" deep copy requirements, beginning in Section 3. There are over 110 applications in production or development using OpenACC, including: - Gaussian 16 - ANSYS Fluent - VASP - MPAS-A - COSMO - GAMERA for GPU - Quantum Espresso There are several "hackathons" coming up, where researchers bring their codes to work alongside with OpenACC experts to accelerate their applications. Event dates are posted at https://www.openacc.org/events. - September 10-14 NCSA - September 17-21 Brookhaven - October 1-5 CSCS - October 22-26 OLCF Flang: Gary Klimowicz See Appendix B. 6. Consideration of the comments from the ballot of the DIS of the Fortran standard and construction of responses. This agenda item occupied most of the meeting. The ISO ballot comments were discussed in PL22.3 mode and the detailed outcomes are recorded in the PL22.3 minutes. These are summarized in the resulting Disposition of Comments document, N2153. There follows an outline record in chronological sequence of discussions in WG5 mode. [PL22.3 plenary and subgroup sessions from 09:55 to 16:35] The meeting adjourned at 16:35 ........................................................................... Tuesday The meeting resumed at 09:00. [PL22.3 plenary and subgroup sessions from 09:00 to 16:30] Vipul Parekh, attending as an observer, was introduced. He gave a short description of his experience with Fortran. The convenor reminded participants of the public survey on possible new features in Fortran 202X which had run from September 2017 to February 2018. The results were summarized in N2147 and PL22.3 had undertaken a preliminary review which was recorded in J3/18-156. He asked participants to review the documents over the following two days with a view to discussing them on Thursday. He particularly asked other countries to contribute, so that by the time of the Tokyo meeting in 2019 it should be possible to define the features to be in the next revision. [PL22.3 plenary session from 16:37 to 16:55] The meeting adjourned at 16:55. ........................................................................... Wednesday The meeting resumed at 09:00. [PL22.3 plenary and subgroup sessions from 09:00 to 16:30] A photographer attended to take images of the group at 10:00. The photograph is at http://photos.lbl.gov/bp/#/folder/4398181/. Brian Friesen led a tour of the Laboratory computing facilities at lunchtime. The Convenor again reminded members to read N2147 to facilitate a discussion under agenda item 10 later in the week. [PL22.3 plenary session from 16:33 to 16:55] The meeting adjourned at 16:55 and was followed by the meeting social event at the Lake Chalet in Oakland. ........................................................................... Thursday The meeting resumed at 09:00. [PL22.3 plenary and subgroup sessions from 09:00 to 16:50] Damian Rouson, co-host, invited members to an informal 'Pizza in the Park' evening in Dorothy Bolte Park, Berkeley. The meeting adjourned at 16:50. ........................................................................... Friday The meeting resumed at 09:00. [PL22.3 plenary session from 09:00 to 09:45] 7. Decide whether the comments from the DIS ballot require construction of a separate FDIS, or whether the FDIS step can be skipped. There having been over 80 comments on the DIS, many of them generating multiple edits to the document, it was clear that an FDIS would be needed. The Project Editor was to incorporate the amendments made at the meeting and to make the draft FDIS available to WG5 members. It was anticipated that this would be done by July 7. In particular a subgroup consisting of Steve Lionel, Bill Long, Dan Nagle and John Reid was delegated to check the document for correctness. Other members were welcome to contribute. 8. Consider the Fortran defect reports (interpretations) in J3/17-006. Agenda item 8 was not pursued at this meeting. 9. WG5 Business and Strategic Plans 9.1 Goals for 2018-2021 A draft Strategic Plan (N2154) was approved. Members were asked to comment on a draft Business Plan and Convener's Report for 2017-2018 which would be labelled N2156. 10. Start planning for the further revision of the Fortran standard. It was noted that most input to the survey on future development of the standard had come from the USA and other countries were encouraged to make contributions. There followed a series of straw votes on topics highlighted in N2147. - whether generics should be considered straw vote: yes: 14 - no: 4 - undecided: 3 - whether exceptions should be considered straw vote: yes: 7 - no: 5 - undecided: 9 The following items from N2147 had been left undecided in the review in J3/18-156. - += and *= syntax straw vote: yes: 3 - no: 11 - undecided: 5 - constructors for derived types straw vote: yes: 1 - no: 8 - undecided: 12 - allow a specification section in some constructs without block/endblock straw vote: yes: 4 - no: 8 - undecided: 7 - allow arrays in allocatables with coarray components straw vote: yes: 8 - no: 5 - undecided: 7 11. Closing Business 11.1 Future meetings Makki Takata, host for the 2019 meeting, asked for an indication of the size of hotel rooms that members might prefer. A straw vote went: spacious (and more expensive) 5 - smaller 8 - either 3. Bill Long offered a meeting in Minneapolis, supported by Cray, and described facilities. Van Snyder offered a meeting in Pasadena and also described local facilities. A straw vote went: Minneapolis 11 - Pasadena 2 - either 6. The Minneapolis invitation was accepted. Nathan Sircombe offered a meeting in Manchester, UK, in 2021, supported by Arm. He gave a short presentation on Arm, local facilities, and the city of Manchester. The invitation was accepted. 11.2 Any other business None was raised. 12. Adoption of Resolutions [N2152] There was some discussion and minor editing of the draft proposed by the Drafting Committee. After editing, resolutions B1 to B3 and B9 to B11 were approved by unanimous acclaim and resolutions B4 to B8 were approved by unanimous consent 13. Adjournment Members congratulated Steve Lionel for successfully chairing his first meeting as WG5 convenor. The WG5 meeting adjourned at 12:50 on Friday, June 15, 2018. ........................................................................... APPENDIX A Open MP report by Bill Long The OpenMP committee would release a comment draft for the OpenMP 5.0 specification (TR7) in early July, which would cover all the new features that would be in the final specification. They have been working on voting in final features and fixes to the specification in the last three months, in preparation of that draft. The final OpenMP 5.0 release was scheduled for November this year. Here is a list of the major new features since the last draft release: - What was called the "concurrent" construct in TR6 has been renamed to the "loop" construct. It works similar to "acc loop independent" in OpenACC. It may be used in place of a distribute, worksharing-loop, or simd construct, and allows an implementation more flexibility in parallelization since it implies that the iterations of the loop are independent. Related to this, an order(concurrent) clause was added to distribute, worksharing-loop, and simd constructs to give more flexibility to the implementation on parallelization of the associated loops. - Improved lambda support when executing code on a target device. - Allow some flavours of non-rectangular loops to be parallelized. - A scan directive was added to support inclusive/exclusive scan (prefix sum) computations in a parallelizable loop. - A modifier was added to the reduction clause to define task reductions. - Support "reverse offload" from a target device back to the host (e.g. to do I/O or other things that a target device may not support). - Permit the teams construct to be used outside of a target construct, on the host. - API routines for defining task dependence objects. - To allow external asynchronous activities to interact with OpenMP synchronization primitives, a clause was added to allow an OpenMP task to stay live (in a "detached" state) beyond the completion of its structured block. The clause accepts a pointer to an omp_event_t object, and an API routine was added to satisfy that event, permitting the task to complete (and any OpenMP synchronization constructs waiting on the task's completion). - Context-based selection of function variants or directive variants. A directive was added for declaring function variants for functions called in an OpenMP program. The compiler may replace the call to a function with a call to its variant if it appears in a specified enclosing context. A meta-directive was added for specifying different directive variants that may be selected from according to the enclosing context. Context may be defined according to the enclosing OpenMP constructs, traits for the current device, or other implementation-specific traits. - Non-contiguous array sections may now appear in a target update directive (e.g. update an array with a non-unit stride that resides in a target device). The array section syntax for C/C++ was updated to support a triplet notation. - The base pointer used in an array section may now be shaped with a new "pointer shaping" syntax. - New memory allocator traits were added for pinned memory and for specifying fallback behavior in case an allocation can not be satisfied. - Derived type variables with allocable components can now appear in a map clause. Deep-copy semantic is implied. ........................................................................... APPENDIX B Flang report by Gary Klimowicz Flang is an open source compiler for Fortran, sponsored by the US Department of Energy (particularly, LLNL, Sandia and LANL). The goals of the project are to - Create a new, open source Fortran 2018 compiler with Apache 2.0 licensing, - that can be used for language and parallelization experimentation, - that exists as a peer in the LLVM community of languages, like Clang, - that can rely on LLVM code generation and parallelism support for CPUs and GPUs. The initial version of Flang is derived from the PGI Fortran compiler, with some proprietary features removed (OpenACC support, inter-procedure analysis). It was published on GitHub in May 2017 at github.com/flang-compiler, and consists of several subprojects (including the Flang driver and compiler itself, and changes to LLVM to be upstreamed). The current compiler supports Fortran 2003 and some Fortran 2008 features. Improvements in the PGI compiler are added to Flang as they pass NVIDIA QA. Flang is available for Linux on x86-64, OpenPOWER and Arm processors, and is the basis of the Arm commercial Fortran compiler. Members of the community are also working on ports to Windows and Mac OS X. There are flang-dev and flang-announce mailing lists you can join for discussion of Flang at http://lists.flang-compiler.org/ and a Slack channel, http://flang-compiler.slack.com/ for more interactive communication with the Flang community. The Flang project team recognizes that the older code base used to seed Flang is not going to meet the long-term goals of the project, and NVIDIA has begun a new project to rewrite the Fortran front-end in C++ to better align with the LLVM and Clang communities and to better leverage the existing tools and techniques from these communities. This front-end is based on parser combinators. It can currently parse all of Fortran 2018 as of the DIS, producing abstract syntax trees. We are currently working on declaration and type processing, expression evaluation for compile-time expressions, and OpenMP directive parsing. The source code for this compiler is available on GitHub. NVIDIA and the DOE will produce a webinar in late June or early July to walk through the repository, documentation and code structure. There is a biweekly half-hour conference call providing status updates on Flang, every other Wednesday at 8:30 AM Pacific time (the next is June 27, 2018). If you are interested in participating in these calls, please let Gary Klimowicz (gklimowicz@nvidia.com) know and he will forward the meeting invitation. ...........................................................................