1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
/**
* This file is adapted from PyTorch/XLA
* https://github.com/pytorch/xla/blob/master/third_party/xla_client/metrics.h
*/
#pragma once
#include <functional>
#include <memory>
#include <thread>
#include <c10/macros/Export.h>
namespace torch {
namespace lazy {
class TORCH_API Completion {
public:
class Data;
explicit Completion(std::shared_ptr<Data> data);
~Completion();
void Wait();
private:
std::shared_ptr<Data> data_;
};
// Schedules a closure which might wait for IO or other events/conditions.
TORCH_API void ScheduleIoClosure(std::function<void()> closure);
TORCH_API Completion
ScheduleIoClosureWithCompletion(std::function<void()> closure);
} // namespace lazy
} // namespace torch
|