[all-commits] [llvm/llvm-project] feed67: [OpenMP] Introduce stream pool to make sure the co...
Shilei Tian via All-commits
all-commits at lists.llvm.org
Sat Apr 11 04:14:46 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: feed674deca13fc66ee19fce9d555d1cd91535ca
https://github.com/llvm/llvm-project/commit/feed674deca13fc66ee19fce9d555d1cd91535ca
Author: Shilei Tian <tianshilei1992 at gmail.com>
Date: 2020-04-11 (Sat, 11 Apr 2020)
Changed paths:
M openmp/libomptarget/plugins/cuda/src/rtl.cpp
Log Message:
-----------
[OpenMP] Introduce stream pool to make sure the correctness of device synchr...
...onization
Summary: In previous patch, in order to optimize performance, we only synchronize once
for each target region. The syncrhonization is via stream synchronization.
However, in the extreme situation, the performce might be bad. Consider the
following case: There is a task that requires transferring huge amount of data
(call many times of data transferring function). It is scheduled to the first
stream. And then we have 255 very light tasks scheduled to the remaining 255
streams (by default we have 256 streams). They can be finished before we do
synchronization at the end of the first task. Next, we get another very huge
task. It will be scheduled again to the first stream. Now the first task
finishes its kernel launch and call stream synchronization. Right now, the
stream already contains two kernels, and the synchronization will wait until the
two kernels finish instead of just the first one for the first task.
In this patch, we introduce stream pool. After each synchronization, the stream
will be returned back to the pool to make sure that for each synchronization,
only expected operations are waited.
Reviewers: jdoerfert
Reviewed By: jdoerfert
Subscribers: gregrodgers, yaxunl, lildmh, guansong, openmp-commits
Tags: #openmp
Differential Revision: https://reviews.llvm.org/D77412
More information about the All-commits
mailing list