[llvm] b1fbf43 - [OpenMPOpt] deduplicateRuntimeCalls(): avoid traditional map lookup pitfall
Roman Lebedev via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 16 09:54:20 PDT 2020
Author: Roman Lebedev
Date: 2020-04-16T19:54:02+03:00
New Revision: b1fbf438f647f3e8cf03baf7e0479359373241cd
URL: https://github.com/llvm/llvm-project/commit/b1fbf438f647f3e8cf03baf7e0479359373241cd
DIFF: https://github.com/llvm/llvm-project/commit/b1fbf438f647f3e8cf03baf7e0479359373241cd.diff
LOG: [OpenMPOpt] deduplicateRuntimeCalls(): avoid traditional map lookup pitfall
Summary:
This roughly halves time spent in that pass,
while unsurprisingly significantly reducing total memory usage.
This makes sense because most functions won't use any openmp functions..
old
```
0.2329 ( 0.5%) 0.0409 ( 0.9%) 0.2738 ( 0.5%) 0.2736 ( 0.5%) OpenMP specific optimizations
```
```
total runtime: 63.32s.
bytes allocated in total (ignoring deallocations): 8.34GB (131.70MB/s)
calls to allocation functions: 14526259 (229410/s)
temporary memory allocations: 3335760 (52680/s)
peak heap memory consumption: 324.36MB
peak RSS (including heaptrack overhead): 5.39GB
total memory leaked: 289.93MB
```
new
```
0.1457 ( 0.3%) 0.0276 ( 0.6%) 0.1732 ( 0.3%) 0.1731 ( 0.3%) OpenMP specific optimizations
```
```
total runtime: 55.01s.
bytes allocated in total (ignoring deallocations): 6.70GB (121.89MB/s)
calls to allocation functions: 14268205 (259398/s)
temporary memory allocations: 3225355 (58637/s)
peak heap memory consumption: 324.09MB
peak RSS (including heaptrack overhead): 5.39GB
total memory leaked: 289.87MB
```
diff
```
total runtime: -8.31s.
bytes allocated in total (ignoring deallocations): -1.63GB (196.58MB/s)
calls to allocation functions: -258054 (31034/s)
temporary memory allocations: -110405 (13277/s)
peak heap memory consumption: -262.36KB
peak RSS (including heaptrack overhead): 0B
total memory leaked: -61.45KB
```
Reviewers: jdoerfert, hfinkel
Reviewed By: jdoerfert
Subscribers: yaxunl, hiraditya, guansong, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D78299
Added:
Modified:
llvm/lib/Transforms/IPO/OpenMPOpt.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/IPO/OpenMPOpt.cpp b/llvm/lib/Transforms/IPO/OpenMPOpt.cpp
index 8b45350ce44c..d0e0dde5a782 100644
--- a/llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+++ b/llvm/lib/Transforms/IPO/OpenMPOpt.cpp
@@ -248,7 +248,11 @@ struct OpenMPOpt {
/// \p ReplVal if given.
bool deduplicateRuntimeCalls(Function &F, RuntimeFunctionInfo &RFI,
Value *ReplVal = nullptr) {
- auto &Uses = RFI.UsesMap[&F];
+ auto UsesIt = RFI.UsesMap.find(&F);
+ if (UsesIt == RFI.UsesMap.end())
+ return false;
+
+ auto &Uses = UsesIt->getSecond();
if (Uses.size() + (ReplVal != nullptr) < 2)
return false;
More information about the llvm-commits
mailing list