Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduction

Linaro and Linaro Members' are working on flang targeting AArch64 on Linux and Windows. Linux has had a head start in flang, so in general Linux support has been slightly ahead of Windows support. Therefore, part of our work is to bring Windows on Arm (WoA) support to the same level of parity as Linux. However, we also strive to improve flang in general, for any platform. Enabling Flang in LLVM is a big project with plenty of work for to go around.

  • General flang AArch64 enablement work

    • Jira Legacy
      serverSystem JIRA
      serverId59107c6f-1e52-32bc-b58f-400d54bba998
      keyLLVM-665

  • Fujitsu-specific bugs and feature improvement

  • Windows-specific work

    • Jira Legacy
      serverSystem JIRA
      serverId59107c6f-1e52-32bc-b58f-400d54bba998
      keyWOA-47
      (link may require special permissions to access)

Scope

  • Include flang in AArch64 releases for both Linux and Windows

  • Provide CI for flang for both Linux and Windows, running check-all and the llvm-test-suite

  • Test relevant open-source workloads with flang; add them to CI if license/resources permit

  • Fix bugs, add missing features as needed by the workloads that we choose to prioritize

  • Check flang’s integration with CMake and provide CI if necessary

  • Publish developer notes on how to generate a WoA binary

  • Help the flang community as much as possible (e.g. with upstreaming from fir-dev/classic-flang)

Project lead(s): Carlos Seo

Project Contacts

Source Code

LLVM Buildbots CI

LLVM Releases

Upstream Wiki

Upstream Collaboration (Slack, Technical and Community calls etc)

Production-Ready Criteria

Flang will be considered production-ready when:

  • It’s able to build the following packages:

    • SPEC CPU2006

    • SPEC CPU2017

    • OpenBLAS

    • SciPy

    • NumPy

  • Its performance is no slower than 25% that of gfortran (and/or Classic Flang?) in SPEC CPU2017 (rate), in any of the benchmarks
    (Check current status between flang and gfortran, in SPEC CPU2017)

Also, the community currently agrees that flang-new will be renamed to flang only when:

  • HLFIR is the default.

  • Procedure pointers support is implemented.

  • The -flang-experimental-exec option is removed.

Active Tasks and Coordination

  • We are currently targeting: SPEC2017, SPEC2006, OpenBLAS, SciPy, NumPy

  • OpenBLAS

    • We have committed some fixes to flang to enable it to build OpenBLAS on WoA

    • There are 2 outstanding issues left:

      Jira Legacy
      serverSystem JIRA
      serverId59107c6f-1e52-32bc-b58f-400d54bba998
      keyLLVM-760
      and
      Jira Legacy
      serverSystem JIRA
      serverId59107c6f-1e52-32bc-b58f-400d54bba998
      keyWOA-387

  • SPEC2017 is tracked upstream in this board: https://github.com/orgs/llvm/projects/8

  • Qualcomm is working on fixing the issues, see

    Jira Legacy
    serverSystem JIRA
    serverId59107c6f-1e52-32bc-b58f-400d54bba998
    keyLLVM-789

  • Fixed upstream:

    Jira Legacy
    serverSystem JIRA
    serverId59107c6f-1e52-32bc-b58f-400d54bba998
    keyLLVM-790

  • Linaro is working on adding it to CI Jira LegacyserverSystem JIRAserverId59107c6f-1e52-32bc-b58f-400d54bba998keyLLVM-766

  • NumPy

    • Testsuite fixes

      Jira Legacy
      serverSystem JIRA
      serverId59107c6f-1e52-32bc-b58f-400d54bba998
      keyLLVM-734

    • Missing support for procedure pointers: Peixin (Huawei) https://github.com/PeixinQiao from upstream is working on implementing this. A few patches were recently committed.

  • SPEC2006

    • All benchmarks are passing except 465.tonto, which fails at compile time because of 2 issues

    • Qualcomm is working on one of them, the upstream community is working on the other

  • SNAP is known to work with flang, Linaro has been reviewing a patch to add it to the test-suite https://reviews.llvm.org/D130734

Achievements and Status

  • SciPy

    • All issues fixed and committed upstream. SciPy now builds with Flang with all tests passing.

  • NumPy

    • Now Compiles with flang but has 4 testsuite failures.

  • SPEC2017

    • Flang now passes SPEC2017 correctness.

  • Flang included in LLVM releases:

    • Linux: since LLVM 14

    • Windows: since LLVM 15

  • Buildbots running check-flang:

    • Linux: 12 configurations

    • Windows: 2 buildbot (flang is the first subproject for which the tests have been enabled on the WoA buildbots)

  • Buildbots running the llvm-test-suite

  • CI testing flang + CMake:

  • Developer notes:

  • Upstreaming of the fir-dev branch is now considered complete (Linaro has contributed several patches & code reviews to this effort)

  • Contributions to flang’s runtime libraries, WoA support, bugfixes etc

  • Upstream code reviews

Widget Connector
width1100
urlhttps://docs.google.com/presentation/d/1xdT4D0kh49CXmnzTgqvS-Z2W_HtwVO5WgBk4VA5TAr8/edit#slide=id.g10e2787e354_3_0
height670

Current Plan

Jira Legacy
serverSystem JIRA
columnskey,summary,created,status,due,fixversions
maximumIssues1000
jqlQueryfilter="FLANG Current Plan" ORDER BY due ASC, fixVersion
serverId59107c6f-1e52-32bc-b58f-400d54bba998

Backlog

Jira Legacy
serverSystem JIRA
columnskey,summary,created,status
maximumIssues1000
jqlQueryfilter="FLANG Backlog" ORDER BY created DESC
serverId59107c6f-1e52-32bc-b58f-400d54bba998

Accomplished

Jira Legacy
serverSystem JIRA
columnskey,summary,created,status,resolutiondate
maximumIssues1000
jqlQueryfilter="FLANG Accomplished" ORDER BY resolved DESC
serverId59107c6f-1e52-32bc-b58f-400d54bba998
Easy html macro
theme{"label":"solarized_dark","value":"solarized_dark"}
contentByMode{"html":"<center>\n <img src=\"https://static.linaro.org/common/member-logos/arm.jpg\" height=\"120\">\n &nbsp;\n <img src=\"https://static.linaro.org/common/member-logos/fujitsu.jpg\" height=\"120\">\n &nbsp;\n <img src=\"https://static.linaro.org/common/member-logos/quic.jpg\" height=\"120\">\n &nbsp;\n</center>","javascript":"","css":""}

Linaro Ltd.