aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/compiler/xla/service/gpu/gpu_executable.cc
diff options
context:
space:
mode:
authorGravatar Justin Lebar <jlebar@google.com>2018-05-10 19:28:35 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-05-10 19:31:17 -0700
commit5a492ef9bbfa4bb93fcf0e2b2f8afa34d25d5236 (patch)
treea9808c9898dbeed7ef941926364591c6ba4531e8 /tensorflow/compiler/xla/service/gpu/gpu_executable.cc
parent2656548f3ef7653474f3f8ad4072778e9e3aee2f (diff)
[XLA:GPU] Remove unused Thunk::ShouldBlockFutureThunks function.
PiperOrigin-RevId: 196206896
Diffstat (limited to 'tensorflow/compiler/xla/service/gpu/gpu_executable.cc')
-rw-r--r--tensorflow/compiler/xla/service/gpu/gpu_executable.cc24
1 files changed, 1 insertions, 23 deletions
diff --git a/tensorflow/compiler/xla/service/gpu/gpu_executable.cc b/tensorflow/compiler/xla/service/gpu/gpu_executable.cc
index 04b4f7aef1..e09bee0b94 100644
--- a/tensorflow/compiler/xla/service/gpu/gpu_executable.cc
+++ b/tensorflow/compiler/xla/service/gpu/gpu_executable.cc
@@ -164,9 +164,6 @@ Status GpuExecutable::ExecuteThunks(
sub_streams, hlo_module_->entry_computation());
uint64 start_micros = tensorflow::Env::Default()->NowMicros();
- // The next event enqueued on stream N must not run until the thunk at
- // last_blocking_thunk_for_stream[N] completes.
- std::map<int32, const Thunk*> last_blocking_thunk_for_stream;
std::map<const Thunk*, std::unique_ptr<se::Event>> thunk_to_finish_event;
for (Thunk* thunk : thunk_schedule_->TotalOrder()) {
TF_RETURN_IF_ERROR(thunk->Initialize(*this));
@@ -179,18 +176,10 @@ Status GpuExecutable::ExecuteThunks(
stream->ThenWaitFor(FindOrDie(thunk_to_finish_event, dependency).get());
}
- if (last_blocking_thunk_for_stream.count(stream_no)) {
- stream->ThenWaitFor(FindOrDie(thunk_to_finish_event,
- last_blocking_thunk_for_stream[stream_no])
- .get());
- last_blocking_thunk_for_stream.erase(stream_no);
- }
-
// If this thunk requests it, wait for all currently-executing thunks to
// finish. This is useful e.g. if the thunk is about to perform autotuning.
if (thunk->ShouldHaltAllActivityBeforeRunning(stream)) {
TF_RETURN_IF_ERROR(main_stream->BlockHostUntilDone());
- last_blocking_thunk_for_stream.clear();
}
profiler.StartOperation();
@@ -198,22 +187,11 @@ Status GpuExecutable::ExecuteThunks(
<< thunk->hlo_instruction()->ToString() << " on stream "
<< stream_no;
TF_RETURN_IF_ERROR(thunk->ExecuteOnStream(buffer_allocations, stream));
- if (thunk_schedule_->Depended(thunk) || thunk->ShouldBlockFutureThunks()) {
+ if (thunk_schedule_->Depended(thunk)) {
auto finish_event = MakeUnique<se::Event>(main_stream->parent());
finish_event->Init();
stream->ThenRecordEvent(finish_event.get());
thunk_to_finish_event[thunk] = std::move(finish_event);
-
- if (thunk->ShouldBlockFutureThunks()) {
- // Set last_blocking_thunk_for_stream on all streams other than this one
- // so that all other streams will wait for this thunk to complete before
- // executing any events that occur later in the total order.
- for (int32 i = 0; i < sub_streams.size() + 1; ++i) {
- if (i != stream_no) {
- last_blocking_thunk_for_stream[i] = thunk;
- }
- }
- }
}
profiler.FinishOperation(thunk->hlo_instruction());
}