Draft Agenda for J3 Meeting 218 1. Monday, February 11, 2019 8:00 am --------------------------------------------------------------- 1.1 Opening business D. Nagle Remarks from the chair D. Nagle Lack of clarity in procedure. We need to leave a better record When a subgroup wishes to kill a feature, write a paper and bring to plenary for final dispensation. Task for this meeting is to work on the US wish list, and try to get as much done as possible before the Tokyo meeting. Second priority is interpretations. Adoption of agenda D. Nagle Steidel/Snyder Unanimous Consent (UC) Approval of Meeting 217 minutes D. Nagle Lionel/Clune (UC) INCITS report (if any) D. Nagle Dan's 3year term as chair is up; does anyone else want to do this? (dead silence) IEEE/754 report (if any) R. Corbett IEEE committee failed to complete standard by 2018. Going to take another year. LIkely to have some features that are less specified in the 2019 version. Problems with 2018 ballot were with new features late in process. (New features related to bit-for-bit reproduceability) IEEE has the rule that only one exception allowed per compare, the "invalid" exception. WG23 report (if any) D. Nagle Hopeful that Dan will be allowed to work on WG23 again. NCAR is not enthusiastic. POSIX has gone down a step, and is likey to be withdrawn as a standard. There will be LSG as replacement (Linux Study Group). WG9 report V.Snyder Paper 19-128 describes some issues going on with WG9. 19-118 is the notice of the Ada-Europe 24th International Conference MPI Liaison report (if any) B. Long Nothing new to report. OpenMP Liaison report (if any) B. Long The 5.0 specification was released at SC last November. A book of the specification is being sold on Amazon, if people want a hard copy: https://www.amazon.com/dp/1795759887 The OpenMP language committee held a F2F meeting last week, hosted by NVIDIA at its Santa Clara office. A TR release is scheduled for SC'19, and 5.1 is scheduled for SC'20. 5.1 is a minor release, and we don't plan on adding any major features, or at least any major features that would require a significant amount of implementation work. The next major release, 6.0, is expected to be release at SC'22. Here are some of the topics that were discussed in the various subcommittees, along with the projected release version it will be introduced in: -- Miscellaneous Topics [5.1] loop construct refinements (proposed by NVIDIA): the OMP LOOP construct was added in 5.0, and it allows loops to be executed in parallel using a team, parallel, or SIMD-level parallelism. The committee wants to add clauses to the loop construct to give more control to the user on how the loops is parallelized using the construct. [5.1] SIMD extensions (proposed by Intel): allow use of function pointers in SIMD regions; new SIMD clauses for compress, expand, conflict, and "allow early exit" support [6.0] Loop transformation clauses (proposed by Argonne National Lab): a set of clauses that can be applied to a loop nest to specify a variety of desired loop transformations (e.g. interchange, stripmining, loop fusion, loop peeling, unrolling, loop reversal, etc.). [6.0] General Induction Support (proposed by Intel) -- Affinity Topics [5.1] Affinity control for teams construct [5.1] Expressing affinity between tasks and devices -- Accelerator topics A large number of topics, as usual, were discussed within the accelerator subcommittee: [5.1] add Fortran versions of device memory routines (omp_target_alloc, omp_target_free, omp_target_associate_ptr, omp_target_disassociate_ptr, omp_target_memcpy, omp_target_memcpy_rect, omp_target_is_present). [5.1] device-specific environment variables [5.1] improved pointer initialization in target regions [5.1] add is_present clause or map-type for device constructs [5.1] allow use of function pointers within target regions [5.1] provide asynchronous versions of the device memory routines [5.1] add "omp promise" directive, where the users asserts certain properties about a given OpenMP region that would enable more efficient implementation of the region. [5.1] support callls to contain functions (for Fortran) in target regions [5.1/6.0] expose underlying streams for asynchronous execution/data transfer (e.g. CUDA streams) [5.1/6.0] enhance deep copy support with serialize/deserialize functions [6.0+] operating on classes with virtual methods in target regions -- Tasking topics [5.1] add task-data affinity control and dependences for taskloop construct [5.1] add schedule clause to taskloop [6.0+] Support repeatable task graphs [6.0+] Support real time applications. [6.0+] task width (reserves N number of threads for execution of a given task) [6.0+] Allow threads that don't bind to a parallel region to be available for task execution ("unshackled" threads) -- Fortran topics [5.1] Define restrictions for coarray usage with OpenMP -- coindexed list items not allowed in clauses, privatized coarrays effectively lose "coarray" property, image control statements may only appear in sequential part of program, and coindexed references must be serialized within a given image and cannot occur on target devices. [5.1/6.0] Improve support for usage of array syntax in target regions to take advantage of parallel teams and parallel threads. [5.1/6.0] Allowing loop or workshare constructs to be applied to DO CONCURRENT loops -- C/C++ [5.1] Adopt attribute syntax as substitute for various declarative directives [5.1] Define behavior for use of noreturn, move operations, and alignment [5.1] Define behavior for use of base language atomic and fence operations UPC Liaison report (if any) B. Friesen Quiet, little new code is being written. More focus on GASNet. OpenACC Liaison report (if any) G. 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. 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 more "hackathons" coming up in 2019, 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. OpenACC has ratified version 2.7: 1. Make it clear that the host can be a device. 2. Listing which fortran intrinsics and math.h functions should be supported. 3. Fortran bindings for API routines. 4. Treat reduction as a data clause (for parallel loop reduction). 5. Clarify that the host data construct used without "use device" means nothing 6. Array reductions 7. "acc parallel self" - run this in parallel on the current device Version 2.7 of the OpenACC specification can be found at https://www.openacc.org/specification. We also understand that at the OpenMP face-to-face meeting last fall that the OpenMP group is planning to create a roadmap for how OpenACC constructs are mapped to OpenMP constructs. This would effectively mean that "#pragma acc" would be treated as a new way to spell "#pragma omp" and dramatically reduce the porting problem for codes that used both. OpenSource Flang report (if any) G. 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. 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 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 February 20, 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. Current Flang Compiler ---------------------- 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 support Fortran debug metadata to be upstreamed). The current compiler supports Fortran 2003 and some Fortran 2008 features. Recent improvements to Flang include - many bug fixes and enhancements from the PGI compiler; - many improvements in the libpgmath library; - initial support for OpenMP target offload based on Clang's LLVM 7.0 work. Flang is available for Linux on x86-64, OpenPOWER and Arm processors, and is the basis of the Arm commercial Fortran compiler. AMD has indicated their interest in adopting flang as well. Members of the community are also working on ports to Mac OS X and packages for OpenBSD and FreeBSD. Contributions to this version of the compiler are encouraged, but require executing a contributor license agreement (CLA) with NVIDIA due to the nature of the way we combine internal and external improvements to Flang. interactive communication with the Flang community. The New F18 Compiler -------------------- The older code base used to seed the initial Flang compiler is not going to meet the long-term goals of the project. 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 new front-end, which we call F18, is available at https://github.com/flang-compiler/f18. All development for F18 is being done on the open source repository, and you can follow the pull request activity from our developers there. No contributor license agreement is needed to contribute to F18, which is being developed under the Apache 2.0 license with LLVM extensions (the same as LLVM and Clang). The current state of F18 is - written in modern C++ following LLVM conventions; - parses all of Fortran 2018 to abstract syntax trees (AST); - implements preprocessing directives; - recognizes most common comment-based directives (including OpenMP), though there is limited semantic processing; - implements semantic analysis for types and symbols, including derived types, modules and submodules, constants and constant expressions; - has initial "Fortran Intermediate Representation" tree definition for defining a control flow graph above that provided by LLVM IR. We are at a point where people interested in Fortran tooling (formatters, preprocessors, source-to-source compilers) can use the F18 parser. We are encouraging people to do so and to provide feedback and enhancements to F18. Upcoming work includes - continued work on statement and expression semantics, lowering from AST to FIR trees; - definition of runtime environment; - implementation of Fortran I/O semantics and runtime. We plan to be able to compile single-threaded Fortran 2018 programs this year. Beginning Treasurer's report J. Steidel Motion to waive October's meeting fee. Steidel/Snyder UC. Beginning membership report L. Menard 12 Voting members (the usual suspects) plus one prospective member; OakRidge. They have paid 2018, but their representative needs to be a visitor once. In attendance: Corbett Robert Corbett Cray Inc Bill Long IBM Corporation Daniel Chen Intel Corporation Lorri Menard, Jon Steidel Jet Propulsion Laboratory Van Snyder Kernelyze LLC * Lawrence Berkeley National Laboratory Brian Friesen Lionel Steve Lionel, Malcolm Cohen, Vipul Parekh NASA Tom Clune National Center for Atmospheric Research (NCAR) Dan Nagle NVidia Corporation Gary Klimowicz Oak Ridge National Labs Reuben Budiardja (Observer meeting) United States Dept of Energy Damian Rouson Attending, but not [yet] members of J3: ARM Srinath Vadlamani Los Alamos National Lab Ondrej Certik Lawrence Livermore Craig Rasmussen 12 members (one not represented here), one organization that will acheive membership at the end of this meeting plus two other potential members, represented here by 18 people No one in jeopardy right now for attendance, however INCITS says that IBM has not paid their annual dues. DOE in jeopardy for voting, but we have a solution in place for that. Local arrangements C. Rasmussen Taking requests. Comments from members On meeting schedules; particularly the February meeting. Can we move the February meeting to first or third week of Feb? Jon noted that the OpenMP meeting was two weeks ago. Meeting will move to the week of last Monday in Feb. 1.2 Tutorials (if needed) 1.3 Subgroup organization D. Nagle /JoR Chair: Dan Nagle Steve Lionel, Lorri Menard, Gary Klimowicz Papers assigned: 19-107,19-108,19-110r1,19-111,19-113,19-120,19-121, 19-122,19-123,19-133 /Data Chair: Malcolm Cohen Tom Clune, Ondrej Certik, Reuben Budiardja, Van Snyder, Bob Corbett, Damien Rouson, Craig Rasmussen, Vipul Parekh, Srinath Vadlamani Papers assigned: 19-112, 19-125, 19-126,19-127 /HPC Chair: Bill Long Srinath Vadlamani, Jon Steidel, Brian Friesen, Daniel Chen Papers assigned: 19-109,19-132 /Interp Chair: Malcolm Cohen Papers assigned: 19-114, 19-119, 19-124, 19-129, 19-130, 19-131 /Edit Chair: Malcolm Cohen Papers assigned: 19-115, 19-116, 19-117 Recess to Subgroup at 9:08 1.4 Subgroup meetings 1.5 Subgroup reports (4:30 pm) /JoR For vote tomorrow: 19-107r1,19-108r1,19-111r1,19-137,19-138,19-139 /Data For vote tomorrow: 19-135 (with straw) Supercedes 18-265,19-112 19-141 reply to 19-126,19-127 /HPC For vote tomorrow: 19-140 (reply to 19-109) /Edit Disposes of these: 18-267 - needs to be either an interp, or a suggestion for a future revision (Lionel) suggestion for next 18-116 - Withdrawn /Interp Discussed: 19-136 - rejected, no action because the results ARE as-if it had been done in array-element order. (will do a 136r1) Recessed for evening at 4:55 2. Tuesday, February 12, 2019 8:00 am --------------------------------------------------------------- 2.1 F202x Plenary (19-010) Subgroup Heads /JoR ** Motion 19-107r1 "Irregularities (index variables)" [Snyder/Lionel] (Nagle/Lionel) UC ** Motion 19-108r1 "Medium-grain parallelism" [Snyder/Nagle] (Nagle/Lionel) Vote: 11 (For) - 1(Against) ** Motion 19-111r1 "Instead of += etc" [Snyder/Klimowicz] (Nagle/Clune) UC ** Motion 19-137 "Specifications and Edits of AT" - Spec and Syntax only [Nagle] (Nagle/Klimowicz) UC (to repeat, on spec/syntax only) ** Motion 19-138 "Specification and Edits for longer statements" [Nagle] (Nagle/Snyder) Through discussion some questions were answered: "10,000" is in decimal. One million is enough. Continuation line limit is removed. Straw Vote (SV) to require that overline-limit be diagnosed: 13 - 0 - 3 (y/n/u) To be amended and returned. ** Motion 19-139 "Specifications and Edits for log & friends" [Nagle] (Nagle/Clune) UC /Data ** Motion 19-135 "Protected types and components" [Cohen] (Cohen/Snyder) Straw vote was conducted to determine if should focus on protected types or protected components: SV: Types - Components - Neither - Undecided 0 - 9 - 3 - 6 As amended to focus on components UC ** Motion 19-141 "Abstract procedures not proceeding" [Snyder] (Cohen/Clune) UC /HPC ** Motion 19-140 "Reply for paper 19-109" [Long] (Long/Steidel) UC /EDIT No business /Interp For vote tomorrow: 19-136R1 2.2 Tutorials (if needed) Ondrej gave a tutorial on Demo of LFortran, an interactive LLVM-based Fortran compiler. [URL is broken onto two lines] (https://nbviewer.jupyter.org/ gist/certik/f1d28a486510810d824869ab0c491b1c) LFortran can execute user's code interactively in the Jupyter notebook to allow exploratory work (much like Python, MATLAB or Julia). The demo showed simple statements and control flow as well as interactive plotting. Adjourned to subgroup at 10:04 2.3 Subgroup meetings 2.4 Subgroup reports (4:30 pm) /JoR: For vote tomorrow: 19-110r2, 19-122, 19-133r1, 19-137r1, 19-138r1, 19-139r1, 19-145 /Data: For vote tomorrow: 19-142 /HPC: For vote tomorrow: 19-146 (reply 132) /Edit: For vote tomorrow: 18-267, 19-115, 19-117, 19-143, 19-144 /Interp: For vote tomorrow: 19-114r1, 19-119r1, 19-124, 19-129, 19-130, 19-131, 19-136r1 recessed at 4:40 3. Wednesday, February 13, 2019 8:00 am --------------------------------------------------------------- 3.1 F202x Plenary (19-010) Subgroup Heads /JoR ** Motion 19-110r2 "Supporting rank genericity -- NOT VECTOR SUBSCRIPTS!" [Snyder/Menard] (Nagle/Lionel) 8 - 1 - rest out of the room ** Motion 19-122r1 "Supporting generic programming -- updaters" [Snyder/Klimowicz] (Nagle/Long) 9 - 1 - rest out of the room 19-133r1 "Use cases for exception handling" [Clune/Nagle/Lionel/Klimowicz] (For discussion, no vote) Discussions: Not all exceptions can be handled. Issues on popping up the stack on an exception Cost both at runtime, and at implementation time even for users Should decide what a Fortran handler can do, which will influence what it looks like Don't throw it out just because can't do 100% Block-based could be helpful to enable/disable different exceptions Can't always fix-up and continue, in fact, it's been unacceptable in previous years Most of the problems can be resolved by having a good traceback. Library developers have a need for this; don't want the whole app to fail just because of an exception in the library Alternate returns from library functions have been used Some users pass the status variable but don't check it. (bad user on device) Issues with old code that didn't do status checking, in a sandwich way, if the bottom bread (new code) can raise an exception it overrides the middle Provide the tools already (in STAT=, ERR= etc) Don't encourage coders to be lazy ** Motion 19-137r1 "Specifications and Edits of AT" [Nagle] (Nagle/Menard) As amended UC ** Motion 19-138r1 "Specification and Edits for longer statements" [Nagle] Specification only: (Nagle/Menard) SV: Hard limit - processor dependent - no opinion 7 6 4 Now a vote: 11 - 1 Vote the edits: 11 - 1 ** Motion 19-139r1 "Specifications and Edits for log & friends" [Nagle] Specs: (Nagle/Cohen) UC Edits: (Nagle/Lionel) UC -- Motion 19-145 " Degree trigonometric functions" [Menard] (Nagle/Clune) Withdrawn for rework /Data ** Motion 19-142 "TYPEOF and CLASSOF" [Cohen](Cohen/Snyder) As amended UC /HPC ** Motion 19-146 "Response to 19-132" [Steidel](Long/Steidel) As amended UC /Edit ** Motion 18-267 "Syntax errors in example codes" [Friesen] (Cohen/Long) UC ** Motion 19-115 "Making note of Statement Entities" [Lionel] (Cohen/Steidel) UC ** Motion 19-117 "Coarrays of type TEAM_TYPE" [Steidel](Cohen/Steidel) UC ** Motion 19-143 "remaining block data subprogram" [Corbett] (Cohen/Klimowicz) UC ** Motion 19-144 "procedure pointer components" [Corbett] (Cohen/Corbett) UC /Interp ** Motion 19-114r1 "Problems with C_FUNLOC and C_F_PROCPOINTER being PURE" [Long/Steidel] (Long/Steidel) As amended UC ** Motion 19-119r1 "Contradiction with assumed rank" [Snyder/Cohen] (Cohen/Snyder) UC ** Motion 19-124 "Bad examples?" [Steidel] (Cohen/Steidel) UC ** Motion 19-129 "Program completion" [Cohen] (Cohen/Clune) As amended UC ** Motion 19-130 "Connection of INPUT_UNIT and *" [Cohen] (Cohen/Long) As amended UC ** Motion 19-131 "Connection of INPUT_UNIT" [Cohen] (Cohen/Steidel) As amended UC ** Motion 19-136r1 "F2018 interp: In array element order execution should apply to IMPURE elemental function only" [Chen/Cohen] (Cohen/Klimowicz) UC 3.2 Tutorials (if needed) Recess to subgroup at 12:00 3.3 Subgroup meetings 3.4 Subgroup reports (4:30 pm) /JoR For vote tomorrow: 19-133r2, 19-147r1, 19-149 /Data For vote tomorrow: 19-152, 19-150 /HPC No papers /Edit No papers /Interp For vote tomorrow: 19-151 Recess at 4:45 4. Thursday, February 14, 2019 8:00 am --------------------------------------------------------------- 4.1 F202x Plenary (19-010) Subgroup Heads /JoR ** Motion 19-133r2 "Use cases for exception handling" [Clune/Nagle/Lionel/Klimowicz] Discussion SV: Continue with investigation - drop - undecided 16 - 0 - 1 ** Motion 19-147r1 "SELECTED_LOGICAL_KIND" [Snyder/Nagle] (Nagle/Snyder) UC ** Motion 19-149 "Require reports of ignorance" [Nagle] (Nagle/Lionel) As amended UC /Data ** Motion 19-150 "Rank-agnostic array element and section denotation" [Cohen] (Cohen/Snyder) UC ** Motion 19-152 "BOUNDS and RANK attributes" [Clune] (Cohen/Clune) As amended UC /HPC No papers /Edit No papers /Interp ** Motion 19-151 "Categories of pure procedures" [Corbett] (Cohen/Rouson) UC Recess to subgroup at 10:15 4.2 Tutorials (if needed) 4.3 Subgroup meetings 4.4 US TAG (4:15 pm) No TAG meeting this month 4.5 Subgroup reports (4:30 pm) /JoR For vote tomorrow: 19-145r1, 19-156,19-157,19-158,19-160 /Data For vote tomorrow: 19-155 - voting on the use cases. For information only: 19-154, 19-161 /HPC For information only: 19-159 /Interp For vote tomorrow: 19-153 /Edit 19-162 5. Friday, February 15, 2019 8:00 am --------------------------------------------------------------- 5.1 F202x Plenary (19-010) Subgroup Heads /JoR ** Motion 19-145r1 "Degree trigonometric functions" [Menard] (Nagle/Klimowicz) As amended to fix COS and to remove COMPLEX. UC ** Motion 19-156 "Control of leading zero in formatted numeric output" [Lionel] (Nagle/Lionel) Straw vote on keywords: Present - Print - Provide - Produce Dont care 0 6 0 5 2 as amended: UC ** Motion 19-157 IEEE Circular trigonometric functions [Menard] (Nagle/Menard) As amended to repair intervals and complex. UC -- Motion 19-158 "Add reductions to DO CONCURRENT" [Klimowicz] (Nagle/Klimowicz) Straw Vote: Continue with this? Y - N - U 11 - 0 - 1 Straw Vote 2: Intrinsic operations on intrinsic types Withdrawn for more work. ** Motion 19-160 "Part 2 Procedures"[Nagle] (Nagle/Lionel) UC /Data 19-154 "Macro processing facility" [Cohen] For information only. 19-161 "Protected components" [Snyder/Cohen] For information only. !! Motion 19-155 "Restricting generic parameters" [Clune] (Lionel/Klimowicz) Paper failed, 1 yes 7 no /HPC 19-159 "BITS" For information only /Interp ** Motion 19-153 "Categories of elemental procedures" [Corbett] (Corbett/Chen) As amended UC /Edit ** Motion 19-162 "C_PTRDIFF_T" [Lionel] (Lionel/Chen) UC 5.2 Closing business 5.3 Review of action items No action items from this meeting. 5.4 Future meetings D. Nagle m219 Aug 5-9 (Tokyo) m220 Oct 14-18 2019 Van Snyder Marriott Residence Inn, Hughes Dr, Las Vegas NV USA m221 Feb 24-28 2020 Jon Steidel Marriott Residence Inn, Hughes Dr, Las Vegas NV USA 5.5 Treasurer's report J. Steidel 11 Feb 2019 Opening balance $ 3382.36 11 Feb 2019 Meeting fees waived + 0.00 ------- Subtotal $ 3382.36 14 Feb 2019 Snacks for mtg 218 - 95.04 ------- Subtotal $ 3287.32 15 Feb 2019 Refreshments Residence Inn - 243.75 ------- 15 Feb 2019 Closing balance $ 3043.57 5.6 Closing membership report L. Menard Because Reuben Budiardja attended this meeting, OakRidge has acheived full membership, bringing the total of organizations to 13. Los Alamos might be able to piggy-back on its C++ membership; Ondrej to investigate. ARM has applied for J3 membership, but the paperwork has not yet gone through. 5.7 Comments from members This [19-155] was the first paper that was voted against in recent history. Dan's term is up, but is willing to take it again. Lunch at Gordon Biersch; still have 10% off coupons at the front desk. Meet at 11 in the lobby. 10:00 adjournment