message: [XLA] Remove a source of nondeterminism in HLO clustering.
  Record the HLO clusters with std::set instead of std::unordered_set to ensure
  that the algorithm to assign each cluster a sequence number during a set
  traversal is deterministic.
diff: @@ -172,10 +172,15 @@ bool HasResourceInputOrOutput(const Node& node) {
  DT_RESOURCE) != node.output_types().end();
  }
  +struct NodeCompare {
  + bool operator()(const Node* a, const Node* b) { return a->id() < b->id(); }
  +};
  +using OrderedNodeSet = std::set<Node*, NodeCompare>;
  +
  Status FindCompilationCandidates(
  const Graph& graph, FunctionLibraryDefinition* flib_def, Env* env,
  const std::function<bool(const Node*, const DeviceType&)>& is_compilable_fn,
  - std::unordered_set<Node*>* candidates) {
  + OrderedNodeSet* candidates) {
  OptimizerOptions opts;
  std::unique_ptr<ProcessFunctionLibraryRuntime> pflr(
  new ProcessFunctionLibraryRuntime(nullptr, env, TF_GRAPH_DEF_VERSION,
  @@ -354,7 +359,7 @@ Status MarkForCompilationPass::RunImpl(
  Graph* graph = options.graph->get();
  - std::unordered_set<Node*> compilation_candidates;
  + OrderedNodeSet compilation_candidates;
  TF_RETURN_IF_ERROR(FindCompilationCandidates(
  *graph, options.flib_def,
  (options.session_options != nullptr) ? options.session_options->env
  