[flang-dev] Flang Biweekly Sync - Notes from the October 2nd, 2019 call

Gary Klimowicz via flang-dev flang-dev at lists.llvm.org
Tue Oct 8 08:42:44 PDT 2019


Flang team,

Here are the notes from the October 2nd, 2019 Flang biweekly call.

We had difficulty getting the call started; for some reason the WebEx was canceled or expired. Only about a half-dozen people attended, but it was still a good discussion. I apologize for the inconvenience and have sent out a new invitation. (I have canceled the old, unusable invitation.)

Please be sure to let us know if you have any questions and agenda topics for the next call.

The next Flang biweekly call will be Wednesday, October 16th, 2019 at 8:30 AM Pacific Time.

The Flang Technical Community call was Monday, October 7th, 8:30 AM Pacific Time. The topic was Fortran debug metadata and DWARF generation.

The next Flang Technical Community call will be Monday, October 21st, 8:30 AM Pacific Time. The topic will be experience with the new flang compiler and Rose with Craig Rasmussen.

Thank you.

Gary Klimowicz


Agenda

  *   SC 2019 – BoF for LLVM has been scheduled
  *   LLVM Developer Meeting news
  *   MLIR for HPC Workshop news (at LCPC 2019)
  *   Flang Community Technical Call – Recap and next topic: Fortran debug metadata
  *   F18 development update
  *   Flang development update


Highlights


  *   Difficulties getting the call started this morning
     *   The WebEx call was somehow expired. We had a lot of difficulty starting the call.
     *   A new meeting request has been generated, which you should have already received.
     *   I canceled the old meeting request. If it doesn’t automatically disappear from your calendar, you can delete the old one manually.
     *   The new meeting link should be https://nvmeet.webex.com/nvmeet/j.php?MTID=mb4edb8c799f69ec2dc0554acc969a162.


  *   Supercomputing 2019
     *   The LLVM in HPC BoF session at SC 2019<https://sc19.supercomputing.org/program/birds-of-a-feather/> is scheduled for Wednesday, November 20, 5:15-6:45 PM. Here’s the BoF link: https://sc19.supercomputing.org/session/?sess=sess331.


  *   LLVM Developer Meeting 2019
     *   The LLVM Dev Meeting is October 22-23 at the San Jose Convention Center; details can be found here<https://llvm.org/devmtg/2019-10/>.
     *   Eric Schweitz (NVIDIA) will present An MLIR Dialect for High-Level Optimization of Fortran<https://llvm.org/devmtg/2019-10/talk-abstracts.html#tech19>.
     *   Steve Scalpone will try to set up a roundtable meeting for Flang.


  *   MLIR for HPC Workshop 2019
     *   The MLIR for HPC workshop<http://www.cs.utah.edu/~mhall/mlir4hpc/> will be held October 21st in conjunction with the 32nd Workshop on Languages and Compilers for Parallel Computing<https://lcpc19.cc.gatech.edu/> October 22-24 at Georgia tech.


  *   Flang Community Technical Biweekly Call
     *   Hal Finkel is hosting this call on Bluejeans<https://bluejeans.com/625064848>, Mondays 8:30 Pacific Time, on the weeks alternating with this call. The notes for all these calls can be found in Google Docs here<https://docs.google.com/document/d/1Z2U5UAtJ-Dag5wlMaLaW1KRmNgENNAYynJqLW2j2AZQ/>.
     *   On the September 23rd call, we discussed flangd, a tooling prototype, connecting an IDE to f18 via the Language Server Protocol (LSP).
     *   The next call is scheduled for Monday, October 7th, 8:30 AM PDT. The agenda topic is Fortran debug metadata and DWARF.


  *   F18 as an LLVM project
     *   The LLVM-hosted flang-dev mailing list has been set up. Subscribe at https://lists.llvm.org/cgi-bin/mailman/listinfo/flang-dev.
     *   F18 flang is still waiting to be added to the LLVM repo, but we are continuing to work with the LLVM admins; Hal is lending his support as well.
     *   Johannes Doerfert recommended that the f18 team attend the biweekly OpenMP LLVM call as well. It looks like one needs to get in touch with Ravi Narayanaswamy to be invited to the call ravi.narayanaswamy at intel.com<mailto:ravi.narayanaswamy at intel.com>.
     *   Zaak Beekman of Paratools introduced himself as developer for TAU, OpenCoarrays, and Mac homebrew packages.


  *   F18 update
     *   Implemented name resolution for different names for relational operators (e.g., operator(.ne.), operator(/=), operator(<>)).
     *   Improved .mod file writing.
     *   Completed implementing semantic checks for the restrictions on "specification expressions".
     *   Addressing issues and fixing bugs.
     *   Working on procedure interfaces
     *   We have two developers working on FIR. Eric Schweitz is now a committer on MLIR, and has two changes merged. (What he believes is the last one remains in review.)
     *   OpenMP semantic checking continues, including contributions by David Truby.
     *   Johannes asked why the f18 build was so slow. We think this has to do with the extensive use of constexprs. We hear rumors of a clang pull request that would improve this and look forward to its implementation.
     *   The driver “flang” turns on semantic processing by default. This will make it easier for people to check existing codes against f18 and expanding the test suite in f18.
     *   Arm Ltd generated a pull request for Clang as a first step for the new flang driver. The pull request for adding --fortran-mode can be found here: https://reviews.llvm.org/D63607.


  *   Flang Dev news and updates
     *   More bug fixes sent to Flang.
     *   Some pull requests have been addressed.
     *   Work continues on the BLOCK construct. BLOCK inside an OpenMP construct is likely not supported in flang.
     *   Working on LLVM 9 changes to Flang (differences between LLVM 8 and 9).
     *   License update to Apache 2.0 with LLVM exceptions is coming.
     *   We will be decoupling PGI and Flang development to shorten turnaround on pull requests, add committers.


Where we can use your help

  *   Subscribe to the LLVM Flang email list: https://lists.llvm.org/cgi-bin/mailman/listinfo/flang-dev.
  *   Topics for the next biweekly community call and technical community call.
  *   Let us know if you have presentations or meetings relevant to the Flang community. We will publicize these in these notes.


Details (Updates are in bold)


  1.  Flang on GitHub
·         There have been 1,583 total commits (1,550 in the previous update).
·         There are 482 people who have “starred” the flang repo and 69 forks.
·         183 people are following f18 in 28 forks. There have been 2,642 commits.


  1.  Flang Community Technical Call

     *   This 30-minute biweekly call is hosted by Hal Finkel at https://bluejeans.com/625064848 on the alternate Mondays on the weeks we do not have this call, at 8:30 AM Pacific time.
     *   Agenda topics and notes from the calls can be found in this <https://docs.google.com/document/d/1Z2U5UAtJ-Dag5wlMaLaW1KRmNgENNAYynJqLW2j2AZQ/edit#heading=h.oiag5i748hyl> Google doc. It also contains instructions for joining the meeting.
     *   The most recent call was held September 23rd. The agenda topic was flangd, an example of f18 tooling using the Language Server Protocol to connect an IDE to f18.
     *   The last call was October 7th. Jie Li of NVIDIA discussed Fortran debug metadata and DWARF generation.
     *   The next call is scheduled for October 21st. Craig Rasmussen will discuss early experiences with f18 and Rose.
     *   Future Topics and tentative dates:
        *   LLVM transition (mailing lists, git/monorepo, etc.)
        *   Tooling development – Experiences with Rose (October 21)
     *   Meeting details:
Meeting URL: https://bluejeans.com/625064848?src=join_info
Meeting ID: 625 064 848
Want to dial in from a phone? Dial one of the following numbers:
+1.408.317.9254 (US (San Jose))
+1.866.226.4650 (US Toll Free)
(see all numbers - https://www.bluejeans.com/premium-numbers)
Enter the meeting ID and passcode followed by #
Connecting from a room system?
Dial: bjn.vc or 199.48.152.152 and enter your meeting ID & passcode



  1.  Flang community

  *   Website: www.flang-compiler.org<http://www.flang-compiler.org> redirects to http://github.com/flang-compiler/flang.
  *   Wiki: https://github.com/flang-compiler/flang/wiki is the Flang wiki page where the most up-to-date build instructions and news can be found.
  *   Issues: Bug reports for Flang can be reported to https://github.com/flang-compiler/flang/issues.
  *   LLVM mailing lists: There are now two mailing lists hosted by llvm.org. We are now using these lists:
     *   The flang-dev mailing list has been set up. Subscribe at https://lists.llvm.org/cgi-bin/mailman/listinfo/flang-dev. These biweekly notes are now sent to this email list.
     *   The flang-commits mailing list has been set up. Subscribe at https://lists.llvm.org/cgi-bin/mailman/listinfo/flang-commits.
  *   Slack: flang-compiler.slack.com is used for informal real-time communication in the Flang community. Add yourself via the invite <https://join.slack.com/t/flang-compiler/shared_invite/enQtMjExOTEyMzQ3MjIxLTZkMDNlODc2YjgxZDY1NTQ2YWJiZWVhOGU2YWY0NDNiOWY0ZjQzNjYyZTNlZjBlNjgxY2U1ZjFjMmY5NzIwMzA> link.


  *   Supercomputing 2019
     *   The LLVM in HPC BoF session at SC 2019<https://sc19.supercomputing.org/program/birds-of-a-feather/> is scheduled for Wednesday, November 20, 5:15-6:45 PM. Here’s the BoF link: https://sc19.supercomputing.org/session/?sess=sess331.
     *   Please let us know any other talks or meetings you would like us to publicize here.


  *   LLVM Developer Meeting 2019

     *   The LLVM Dev Meeting is October 22-23 at the San Jose Convention Center; details can be found here<https://llvm.org/devmtg/2019-10/>.
     *   Eric Schweitz’s talk, An MLIR Dialect for High-Level Optimization of Fortran<https://llvm.org/devmtg/2019-10/talk-abstracts.html#tech19>, was accepted.
     *   Please let us know any other talks or meetings you would like us to publicize here.


  *   MLIR for HPC Workshop 2019

     *   The MLIR for HPC workshop<http://www.cs.utah.edu/~mhall/mlir4hpc/> will be held October 21st in conjunction with the 32nd Workshop on Languages and Compilers for Parallel Computing<https://lcpc19.cc.gatech.edu/> October 22-24 at Georgia tech.
     *   Some of the usual suspects from the LLVM Developer Meeting will be attending this workshop.



  1.  What we’re up to


  *   F18 Fortran 2018 compiler

  *   On GitHub: The source code f18 is available on flang-compiler.github.com/f18<https://github.com/flang-compiler/f18/>. It’s recommended to start in the “documentation” directory.
  *   Status: We continue development on the new Fortran 2018 front-end. Recent work includes:

     *   Implemented name resolution for different names for relational operators (e.g., operator(.ne.), operator(/=), operator(<>)).
     *   Improved .mod file writing.
     *   Completed implementing semantic checks for the restrictions on "specification expressions".
     *   Addressing issues and fixing bugs.
     *   Working on procedure interfaces
     *   We have two developers working on FIR. Eric Schweitz is now a committer on MLIR, and has two changes merged. (What he believes is the last one remains in review.)
     *   OpenMP semantic checking continues, including contributions by David Truby.
     *   Constraint checking on DO loops, CYCLE and EXIT statements.
     *   The driver “flang” turns on semantic processing by default. This will make it easier for people to check existing codes against f18 and expanding the test suite in f18.
     *   We continue to follow the MLIR project for the flang intermediate representation. There are a lot of changes from MLIR that we have to merge.
     *   Arm Ltd generated a pull request for Clang as a first step for the new flang driver. The pull request for adding --fortran-mode can be found here: https://reviews.llvm.org/D63607.


  *   LLVM Project:

     *   The flang-dev email list has been set up on llvm.org. You can subscribe here: https://lists.llvm.org/cgi-bin/mailman/listinfo/flang-dev. Archives are also available.
     *   The flang-commits email list has also been set up. There is no content yet, as we haven’t migrated to the LLVM monorepo.
     *   The plan is to first upload some of the top-level documentation so the community can read the project goals and strategy before we do a big code dump. This should happen mid-June.
     *   Still blocked on adding flang to the LLVM repo.


  *   Current Flang:

     *   Work continues on the Fortran 2008 BLOCK construct. We continue to test.
     *   Work on polymorphic allocatable assignment statements should be pushed to Flang by the time you read this.
     *   Began work on pointer initialization with non-NULL values.
     *   We will be making updates for the new Apache 2.0 license with LLVM exceptions. This needs to be reviewed by the NVIDIA intellectual property group. Changes here are likely to touch every file in Flang.
     *   We are in the process of incorporating changes to support LLVM 9.0. Our printf-based IR generation has some incompatibilities with LLVM 9.0.
     *   We will be opening up Flang to more committers soon. We would like to get BLOCK and the license changes into Flang before adding committers.
     *   We will be decoupling PGI and Flang development to shorten turnaround on pull requests and other development activity.
     *   Recent fixes pushed to Flang
        *   #244 Wrong assignment of structure with CLASS(*) allocatable component
        *   #512 Flang rejects polymorphic assignment
        *   #720 Segfault on sourced allocation of polymorphic variable
        *   #721 Wrong result from MOVE_ALLOC with character variables
        *   #749 build fails with gcc 9.0.1 and glibc-2.29 due to duplicated getcpu() declaration
        *   #771 libpgmath: win (1l<<31) overflows
        *   #781 [Debug] Assertion failure in llvm
        *   Pull request #760 Rename getcpu() to get_rutime() for compatibility with glibc 2.29 and later
        *   Pull request #762 Force #undef HUGE in runtime/libpgmath/lib/x86_64/libm_amd.h
        *   Pull request #775 Introduce a LIBPGMATH_SYSTEM_NAME variable
        *   Pull request #801 Enable build when OMP_OFFLOAD_LLVM and OMP_OFFLOAD_PGI are both (should be addressed by PR#800)


     *   Upcoming changes to Flang (in review):
        *   More PGI bug fixes
        *   Debug support for Fortran allocatables
        *   Support for assumed rank arrays and SIZE intrinsic
        *   Pull request #573 – libpgmath: make it clang friendly; addresses bug #557 (reviewing)
        *   Pull request #695 – Remove duplicate files


     *   Assigned for work:
        *   #226 Unlimited polymorphic type does not work with transfer intrinsic
        *   #298 norm2 intrinsic
        *   #402 Compiler error on regular code
        *   #404 Internal compiler error with polymorphic subroutine parameters and nested derived types
        *   #426 Failures in #include of OpenMPI's mpif.h
        *   #461 OpenMP TeaLeaf_ref: local pointer variable not captured into parallel region
        *   #477 Pull request for module variable import debug test
        *   #498 Error while compiling libpgmath
        *   #577 Procedure pointers to internal procedures
        *   #602 fd_sincos_scalar.cpp: "error: ‘__builtin_complex’ was not declared in this scope"
        *   #604 Flang errors out on a final subroutine with parameterized derived types
        *   #608 gdwarf-<version> flag is not honoured
        *   #610 No debug generated for namelists
        *   #662 Regression : Segfault in taskloop code
        *   #720 Segfault on sourced allocation of polymorphic variable
        *   #780 Linking CXX shared library libpgmath.dylib fails on macOS
        *   #787 ICE with array operations inside NORM2
        *   #807 possible memory corruption in function ompaccel_copy_arraydescriptors
        *   Pull request #573 libpgmath: make it clang friendly; addresses bug #557
        *   Pull request #695 runtime: remove duplicate files
        *   Pull request #710 Test case for capturing procedure pointers to OpenMP parallel regions
        *   Pull request #719 libpgmath: windows and osx support


  *   Outstanding pull requests:

  *   #521 Add OpenBSD as a recognized OS (pending test on new OpenBSD systems internally)
  *   #529 runtime: PoC: generate call to LLVM intrinsic instead of calling runtime functions when possible; handling NINT for a beginning (proposed expansion of this pull request)
  *   #530 AArch64: disable test cases invalid on aarch64 (working on)
  *   #532 runtime: remove duplicate files (need to validate on all compilers)
  *   #546 Loosen ties to x86 (working on)
  *   #572 libpgmath: respect LIBPGMATH_WITH_GENERIC setting; fixes #559 (reviewing)
  *   #592 add support for macOS (awaiting CLA)
  *   #622 Add explicit braces to avoid dangling else problem (failed NVIDIA testing)
  *   #642 AArch64: significantly improve formatted input performance by using optimized libc functions on ARM64
  *   #647 Introduce buffered I/O and replace getc with buffered read
  *   #655 Add missing signed integer to a pointer conversion in DATA statement
  *   #658 Fix in preprocessing for Flexi app
  *   #659 Changes to support transpose intrinsic during initialization
  *   #660 Enable support for simd directives
  *   #672 Support isnan() GNU extension (Arm reviewing)
  *   #689 Fix for segfault in multiple entries OpenMP functions
  *   #693 runtime: ARM64 is a 64-bit architecture
  *   #694 libpgmath sanity: do not call sleep() in Linux systems
  *   #695 runtime: remove duplicate files
  *   #701 Fix for ICE in taskloop
  *   #702 Fix for random_seed when seeds have zeroes in LSB
  *   #710 Test case for capturing procedure pointers to OpenMP parallel regions
  *   #717 Support building libpgmath with clang 6
  *   #725 Check for gregset_t before using it
  *   #726 Remove linux references where unneeded
  *   #737 TRAILZ function added to the fortran compiler (resubmitted)
  *   #738 Fix for issue #550
  *   #742 Implement UNROLL directive
  *   #751 Fix for len intrinsic returning int*8 in some cases
  *   #752 Fix for ICE in atomic instruction generation
  *   #756 Fix ICE interf:new_symbol_and_link, symbol not found
  *   #772 Fix unresolved sprintf, fprintf error
  *   #773 Support for isnan GNU extension: Generate isnanf() & isnan() libm calls
  *   #776 The BSDs name 64-bit x86 as amd64
  *   #778 Fixing NCAR test problems with error tolerance lower than E-12


  *   Public plan: NVIDIA has published a brief plan for upcoming Flang work on github.io at https://github.com/flang-compiler/flang/wiki/Roadmap. This has been recently updated to reflect current Flang and F18 priorities and to provide better context for the project and its long-term goals.


  *   Creating pull requests: NVIDIA requires contributor agreements from developers wishing to make pull requests. The Individual CLA is here: https://flang-compiler.github.io/files/Flang-ICLA-v4.pdf. The Corporate CLA is here: https://flang-compiler.github.io/files/Flang-CCLA-v2.pdf. Send completed CLAs to flang-cla at nvidia.com<mailto:flang-cla at nvidia.com>. Assuming the pull request builds and passes “make check-flang”, NVIDIA will take on the internal testing of the pull request using the full test suite available internally and provide feedback to the contributor as appropriate. Once we have the quality of the pull request established, it will be incorporated into Flang.

  *   LLVM is switching to a new Apache license with LLVM exceptions that we need to incorporate into our CLAs after it is adopted by LLVM community. The LLVM license can be found at http://llvm.org/foundation/relicensing/LICENSE.txt. A web page describing the relicensing effort can be found at http://llvm.org/foundation/relicensing/.



  *   OpenMP 4.5 support:
o    OpenMP 4.5 is supported on multicore CPUs, mapping all target regions across all the cores, with the following known limitations:

        *   We map the directives directly for host==device with very predictable behavior and good performance results.
        *   Task depend/priority is not supported
        *   OMP do clauses linear, order(n), and schedule (modifier) are not supported
        *   SIMD construct, Declare SIMD, and SIMD clause: private/reduction/lastprivate/collapse clauses on SIMD construct are supported, SIMD clause/construct are used as a hint to vectorize through metadata generation
        *   There is a bug if target construct is enclosed by task construct

o    No update



  *   Outstanding issues:

     *   Please refer to the Issues section on GitHub for flang-compiler/flang<https://github.com/flang-compiler/flang/issues> and flang-compiler/flang-driver<https://github.com/flang-compiler/clang/issues>.


  *   Debug Metadata:
     *   LLVM Debug metadata changes posted to LLVM Phabricator for review; responding to review comments.
        *   https://reviews.llvm.org/D54114 [CHARACTER intrinsic data type] Review for this is not complete, and we would like to get additional comments or alternate proposals.
     *   LLVM Debug metadata changes upstreamed to LLVM:
        *   https://reviews.llvm.org/D54043 [ELEMENTAL, PURE and RECURSIVE PROCEDURES]
        *   https://reviews.llvm.org/D54327 [COMMON blocks]


  *   Packaging and Binary Releases:

  *   Binary release: We post binary releases at least quarterly. March binary releases of Flang for x86-64 and OpenPOWER (LLVM 7.0) have been posted to http://github.com/flang-compiler/flang/releases.
  *   Spack: Spack packages for Flang have been reviewed by the Spack team and pulled into Spack for flang_20180921. We are still working through issues with defining the spack package for flang. Brian Homerding is starting to work on Spack changes for the LLVM and Flang for the LLVM Git monorepo.


  *   Testing updates:

  *   NCAR Kernels tests take a long time to execute on some architectures, so we have moved them to longtests, based on Arm pull request.


  *   Application updates:
     *   No update.



  1.  Fortran 2008 features
Some Fortran 2008 features in development for pgfortran will flow into Flang soon.

  *   Allocation of polymorphic variables. This has been pushed to Flang.
  *   BLOCK construct. Work continues on BLOCK. We are running through final tests and working to merge into NVIDIA source before migrating to Flang.
  *   Pointer default initialization. Work has begun.
  *   EXECUTE_COMMAND_LINE intrinsic. Work has begun.

The following items are considered complete. Please report GitHub issues if you identify any problems.

  *   G0 edit descriptor
  *   NORM2 intrinsic
  *   ERROR STOP
  *   Pointers to internal procedures
  *   SUBMODULE
  *   Serial implementation of F2018 DO CONCURRENT (there is no multi-core implementation planned at this time)
  *   BACK optional argument support for MINLOC/MAXLOC


-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/flang-dev/attachments/20191008/d26fcbdc/attachment-0001.html>


More information about the flang-dev mailing list