[PATCH] D47300: [RFC] Abstract parallel IR analyzes & optimizations + OpenMP implementations

Johannes Doerfert via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 23 16:17:17 PDT 2018


jdoerfert created this revision.
Herald added subscribers: llvm-commits, guansong, mgorny, mehdi_amini.

This patch is part of an RFC to add an abstract parallel IR interface
that allows us to analyze and optimize parallel codes in different
representations.

The relationship of the parts contained in this initial commit is shown
below. The attribute annotator transformation pass will query the
abstract parallel region and communication info interfaces to determine
if communicated values can be tagged as no-alias, no-capture, readnone,
or readonly. If so, this is done through the abstract ParallelIR/Builder
interface. Both the analyses parts as well as the builder interface is
implemented for the OpenMP KMPC runtime library call representation used
by clang.

  Optimization         Analysis/Transformation           Implementation

 ---------------------------------------------------------------------------

  /---> ParallelRegionInfo (A) ---------|-> KMPCImpl (A)
  |                                     |

AttributeAnnotator --|---> ParallelCommunicationInfo (A) --/

  |
  \---> ParallelIR/Builder (T) -----------> KMPCImpl (T)

In addition to the attribute annotator we have four more parallel IR
specific optimizations that achieve high speedups for Rodinia OpenMP
benchmarks. However, to keep this commit simple only a simplified form
of attribute annotator was included.


Repository:
  rL LLVM

https://reviews.llvm.org/D47300

Files:
  include/llvm/Analysis/ParallelIR/KMPCImpl.h
  include/llvm/Analysis/ParallelIR/RegionInfo.h
  include/llvm/Analysis/Passes.h
  include/llvm/InitializePasses.h
  include/llvm/LinkAllPasses.h
  include/llvm/Transforms/ParallelIR.h
  include/llvm/Transforms/ParallelIR/AttributeAnnotator.h
  include/llvm/Transforms/ParallelIR/Builder.h
  lib/Analysis/Analysis.cpp
  lib/Analysis/CMakeLists.txt
  lib/Analysis/ParallelIR/KMPCImpl.cpp
  lib/Analysis/ParallelIR/RegionInfo.cpp
  lib/Passes/LLVMBuild.txt
  lib/Passes/PassBuilder.cpp
  lib/Passes/PassRegistry.def
  lib/Transforms/CMakeLists.txt
  lib/Transforms/IPO/LLVMBuild.txt
  lib/Transforms/IPO/PassManagerBuilder.cpp
  lib/Transforms/LLVMBuild.txt
  lib/Transforms/ParallelIR/AttributeAnnotator.cpp
  lib/Transforms/ParallelIR/Builder.cpp
  lib/Transforms/ParallelIR/CMakeLists.txt
  lib/Transforms/ParallelIR/KMPCImpl.cpp
  lib/Transforms/ParallelIR/LLVMBuild.txt
  lib/Transforms/ParallelIR/ParallelIR.cpp
  test/Transforms/ParallelIR/openmp.ll
  test/Transforms/ParallelIR/openmp2.ll
  tools/bugpoint/CMakeLists.txt
  tools/bugpoint/LLVMBuild.txt
  tools/opt/CMakeLists.txt
  tools/opt/LLVMBuild.txt
  tools/opt/opt.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D47300.148314.patch
Type: text/x-patch
Size: 91381 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180523/ef1a6ce9/attachment.bin>


More information about the llvm-commits mailing list