[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