[polly] r311155 - [GPGPU] Synchronize after each kernel, not each copy out
Tobias Grosser via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 18 05:55:58 PDT 2017
Author: grosser
Date: Fri Aug 18 05:55:58 2017
New Revision: 311155
URL: http://llvm.org/viewvc/llvm-project?rev=311155&view=rev
Log:
[GPGPU] Synchronize after each kernel, not each copy out
Summary:
This change reduces the overall number of synchronize calls for kernels with
a lot of output data at the cost of additional synchronize calls for kernels
launched in sequence without any device to host transfers in between. As the
latter pattern is a lot less frequent, this seems a better tradeoff.
Even though the above motivation would be motivation enough, this is just
a step towards enabling ppcg to not compute to and from device copy calls
at all, which would be incorrect in case we still relied on these calls to
place our synchronization statements.
Reviewers: Meinersbur, bollu, singam-sanjay
Reviewed By: bollu
Subscribers: nemanjai, kbarton, pollydev, llvm-commits
Tags: #polly
Differential Revision: https://reviews.llvm.org/D36867
Modified:
polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp
Modified: polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp?rev=311155&r1=311154&r2=311155&view=diff
==============================================================================
--- polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp (original)
+++ polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp Fri Aug 18 05:55:58 2017
@@ -1219,6 +1219,8 @@ void GPUNodeBuilder::createUser(__isl_ta
const char *Str = isl_id_get_name(Id);
if (!strcmp(Str, "kernel")) {
createKernel(UserStmt);
+ if (PollyManagedMemory)
+ createCallSynchronizeDevice();
isl_ast_expr_free(Expr);
return;
}
@@ -1248,7 +1250,6 @@ void GPUNodeBuilder::createUser(__isl_ta
if (!PollyManagedMemory) {
createDataTransfer(UserStmt, DEVICE_TO_HOST);
} else {
- createCallSynchronizeDevice();
isl_ast_node_free(UserStmt);
}
isl_ast_expr_free(Expr);
More information about the llvm-commits
mailing list