Skip to content

Commit ce019d2

Browse files
ezhulenevtensorflower-gardener
authored andcommitted
[xla] Migrate to PjRtFuture<>::MakePromise() API
PiperOrigin-RevId: 806070441
1 parent b4c382e commit ce019d2

File tree

3 files changed

+14
-15
lines changed

3 files changed

+14
-15
lines changed

third_party/xla/xla/pjrt/c/pjrt_c_api_helpers.cc

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -467,14 +467,15 @@ xla::PjRtFuture<> ConvertCEventToCppFuture(PJRT_Event* c_event,
467467
event_onready_args.extension_start = nullptr;
468468
event_onready_args.event = c_event;
469469

470-
PjRtFuture<>::Promise promise = PjRtFuture<>::CreatePromise();
470+
auto [promise, future] = PjRtFuture<>::MakePromise();
471471
event_onready_args.user_arg = new std::function<void(PJRT_Error*)>(
472-
[promise, c_event, c_api](PJRT_Error* error) mutable {
472+
[promise = std::make_shared<PjRtFuture<>::Promise>(std::move(promise)),
473+
c_event, c_api](PJRT_Error* error) mutable {
473474
if (error != nullptr) {
474-
promise.Set(::pjrt::PjrtErrorToStatus(error, c_api));
475+
promise->Set(::pjrt::PjrtErrorToStatus(error, c_api));
475476
::pjrt::MakeErrorDeleter(c_api)(error);
476477
} else {
477-
promise.Set();
478+
promise->Set();
478479
}
479480
::pjrt::MakeEventDeleter(c_api)(c_event);
480481
});
@@ -489,7 +490,7 @@ xla::PjRtFuture<> ConvertCEventToCppFuture(PJRT_Event* c_event,
489490
if (error != nullptr) {
490491
return PjRtFuture<>(::pjrt::PjrtErrorToStatus(error, c_api));
491492
}
492-
return PjRtFuture<>(std::move(promise));
493+
return std::move(future);
493494
}
494495

495496
static absl::StatusOr<PJRT_NamedValue> ConvertToPjRtNamedValue(

third_party/xla/xla/pjrt/c/pjrt_c_api_wrapper_impl.cc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -692,15 +692,14 @@ PJRT_Error* PJRT_AsyncHostToDeviceTransferManager_TransferData(
692692
"PJRT_AsyncHostToDeviceTransferManager_TransferData_Args",
693693
PJRT_AsyncHostToDeviceTransferManager_TransferData_Args_STRUCT_SIZE,
694694
args->struct_size));
695-
xla::PjRtFuture<>::Promise promise = xla::PjRtFuture<>::CreatePromise();
695+
auto [promise, future] = xla::PjRtFuture<>::MakePromise();
696696
absl::AnyInvocable<void() &&> on_done_with_d2h_transfer =
697-
[promise]() mutable { promise.Set(); };
697+
[promise = std::move(promise)]() mutable { promise.Set(); };
698698
PJRT_RETURN_IF_ERROR(
699699
args->transfer_manager->transfer_manager->TransferRawDataToSubBuffer(
700700
args->buffer_index, args->data, args->offset, args->transfer_size,
701701
args->is_last_transfer, std::move(on_done_with_d2h_transfer)));
702-
args->done_with_h2d_transfer =
703-
new PJRT_Event{xla::PjRtFuture<>(std::move(promise))};
702+
args->done_with_h2d_transfer = new PJRT_Event{std::move(future)};
704703
return nullptr;
705704
}
706705

third_party/xla/xla/pjrt/se_raw_buffer.cc

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,19 @@ limitations under the License.
3737
namespace xla {
3838

3939
PjRtFuture<> PjRtStreamExecutorDeviceEvent::GetReadyFuture() {
40-
PjRtFuture<>::Promise promise = PjRtFuture<>::CreatePromise();
41-
event_.AndThen([promise, event = event_]() mutable {
40+
auto [promise, future] = PjRtFuture<>::MakePromise();
41+
event_.AndThen([promise = std::move(promise), event = event_]() mutable {
4242
if (auto* error = event.GetErrorIfPresent()) {
4343
promise.Set(*error);
4444
} else {
4545
promise.Set();
4646
}
4747
});
4848

49-
return PjRtFuture<>(
50-
promise,
49+
return PjRtFutureHelpers::WithProfiling(
50+
std::move(future),
5151
/*on_block_start=*/
52-
[ready_event = FormRef(promise.async_value()),
53-
callee_method = callee_method_, callee_type = callee_type_]() {
52+
[callee_method = callee_method_, callee_type = callee_type_]() {
5453
tsl::profiler::TraceMeProducer traceme(
5554
[&] { return absl::StrCat(callee_type, "::", callee_method); });
5655
return PjRtFutureHelpers::ProfilingKeys({traceme.GetContextId()});

0 commit comments

Comments
 (0)