Kareem Ergawy 5d364481e3
[flang][OpenMP] Upstream first part of do concurrent mapping (#126026)
This PR starts the effort to upstream AMD's internal implementation of
`do concurrent` to OpenMP mapping. This replaces #77285 since we
extended this WIP quite a bit on our fork over the past year.

An important part of this PR is a document that describes the current
status downstream, the upstreaming status, and next steps to make this
pass much more useful.

In addition to this document, this PR also contains the skeleton of the
pass (no useful transformations are done yet) and some testing for the
added command line options.

This looks like a huge PR but a lot of the added stuff is documentation.

It is also worth noting that the downstream pass has been validated on
https://github.com/BerkeleyLab/fiats. For the CPU mapping, this achived
performance speed-ups that match pure OpenMP, for GPU mapping we are
still working on extending our support for implicit memory mapping and
locality specifiers.

PR stack:
- https://github.com/llvm/llvm-project/pull/126026 (this PR)
- https://github.com/llvm/llvm-project/pull/127595
- https://github.com/llvm/llvm-project/pull/127633
- https://github.com/llvm/llvm-project/pull/127634
- https://github.com/llvm/llvm-project/pull/127635
2025-04-02 09:24:38 +02:00

2.0 KiB

Welcome to Flang's documentation

Flang is LLVM's Fortran frontend that can be found here. It is often referred to as "LLVM Flang" to differentiate itself from "Classic Flang" - these are two separate and independent Fortran compilers. LLVM Flang is under active development. While it is capable of generating executables for a number of examples, some functionality is still missing. See Getting Involved for tips on how to get in touch with us and to learn more about the current status.

.. toctree::
   :titlesonly:

   ReleaseNotes

Contributing to Flang

.. toctree::
   :titlesonly:

   C++17
   C++style
   DesignGuideline
   FortranForCProgrammers
   GettingInvolved
   GettingStarted
   ImplementingASemanticCheck
   PullRequestChecklist

Design Documents

.. toctree::
   :titlesonly:

   Aliasing
   AliasingAnalysisFIR
   ArrayComposition
   ArrayRepacking
   AssumedRank
   BijectiveInternalNameUniquing
   Calls
   Character
   ComplexOperations
   ControlFlowGraph
   DebugGeneration
   Directives
   DoConcurrent
   DoConcurrentConversionToOpenMP
   Extensions
   F202X
   FIRArrayOperations
   FIRLangRef
   FlangCommandLineReference
   FlangDriver
   FortranFeatureHistory
   FortranIR
   FortranLLVMTestSuite
   HighLevelFIR
   IORuntimeInternals
   InternalProcedureTrampolines
   Intrinsics
   IntrinsicTypes
   LabelResolution
   ModFiles
   OpenACC
   OpenACC-descriptor-management.md
   OpenMP-4.5-grammar.md
   OpenMP-declare-target
   OpenMP-descriptor-management
   OpenMP-semantics
   OptionComparison
   Overview
   ParameterizedDerivedTypes
   ParserCombinators
   Parsing
   PolymorphicEntities
   Preprocessing
   ProcedurePointer
   RuntimeDescriptor
   RuntimeEnvironment
   RuntimeTypeInfo
   Semantics
   f2018-grammar.md
   fstack-arrays
   Real16MathSupport
   Unsigned

Indices and tables

* :ref:`genindex`
* :ref:`search`