| 92 | RendezvousFactory; |
| 93 | |
| 94 | struct Args { |
| 95 | int64_t step_id = 0; |
| 96 | int64_t round_step_id = 0; |
| 97 | Rendezvous* rendezvous = nullptr; |
| 98 | Rendezvous* global_rendezvous = nullptr; |
| 99 | StepStatsCollectorInterface* stats_collector = nullptr; |
| 100 | CallFrameInterface* call_frame = nullptr; |
| 101 | CancellationManager* cancellation_manager = nullptr; |
| 102 | SessionState* session_state = nullptr; |
| 103 | // Unique session identifier. Can be empty. |
| 104 | string session_handle; |
| 105 | TensorStore* tensor_store = nullptr; |
| 106 | ScopedStepContainer* step_container = nullptr; |
| 107 | CollectiveExecutor* collective_executor = nullptr; |
| 108 | thread::ThreadPoolInterface* user_intra_op_threadpool = nullptr; |
| 109 | int64_t start_time_usecs = 0; |
| 110 | // The deadline for the kernel to complete by. Empty if unspecified. |
| 111 | absl::optional<absl::Time> deadline; |
| 112 | |
| 113 | // If true, calls Sync() on the device. |
| 114 | bool sync_on_finish = false; |
| 115 | |
| 116 | typedef std::function<void()> Closure; |
| 117 | typedef std::function<void(Closure)> Runner; |
| 118 | // CostRunner will schedule task via cost value which compute by CostModel. |
| 119 | typedef std::function<void(Closure, int64)> CostRunner; |
| 120 | Runner runner = nullptr; |
| 121 | CostRunner cost_runner = nullptr; |
| 122 | |
| 123 | ExecutorPolicy executor_policy = ExecutorPolicy::USE_NORMAL_EXECUTOR; |
| 124 | |
| 125 | // store refs to cpu tensors that will be sent to gpu, |
| 126 | // and release them when the session run finishes. |
| 127 | std::unique_ptr<mutex> ref_send_inputs_mu_ptr; |
| 128 | std::vector<std::unique_ptr<TensorReference>>* ref_send_inputs_ptr = nullptr; |
| 129 | bool merge_compute_and_copy_stream = false; |
| 130 | }; |
| 131 | typedef std::function<void(const Status&)> DoneCallback; |
| 132 | virtual void RunAsync(const Args& args, DoneCallback done) = 0; |
| 133 |
no outgoing calls