aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/compiler/xla/service/copy_insertion.h
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/compiler/xla/service/copy_insertion.h')
-rw-r--r--tensorflow/compiler/xla/service/copy_insertion.h24
1 files changed, 14 insertions, 10 deletions
diff --git a/tensorflow/compiler/xla/service/copy_insertion.h b/tensorflow/compiler/xla/service/copy_insertion.h
index 6d25706089..5ba64b78a3 100644
--- a/tensorflow/compiler/xla/service/copy_insertion.h
+++ b/tensorflow/compiler/xla/service/copy_insertion.h
@@ -21,7 +21,6 @@ limitations under the License.
#include "tensorflow/compiler/xla/service/hlo_instruction.h"
#include "tensorflow/compiler/xla/service/hlo_module.h"
#include "tensorflow/compiler/xla/service/hlo_pass_interface.h"
-#include "tensorflow/core/lib/gtl/flatmap.h"
namespace xla {
@@ -72,21 +71,26 @@ class CopyInsertion : public HloPassInterface {
// TODO(b/62548313): Remove this when buffer assignment is module-scoped.
static StatusOr<bool> AddCopiesForBufferAssignment(HloModule* module);
+ // Try to remove as many copies from the module as possible without
+ // introducing live range interference. Only copy instructions that are
+ // eligible for copy elision are considered for removal.
+ Status RemoveUnnecessaryCopies(const HloOrdering& ordering,
+ HloModule* module);
+
private:
+ // Verifies that no HLO values have interfering live ranged assuming the
+ // ordering used by copy insertion.
+ Status VerifyNoLiveRangeInterference(HloModule* module);
+
+ Status AddCopiesToResolveInterference(HloModule* module);
+
+ Status AddSpecialCaseCopies(const CallGraph& call_graph, HloModule* module);
+
// Backend specific function that decides whether a fusion can share buffer
// with its operand.
HloDataflowAnalysis::FusionCanShareBufferFunction fusion_can_share_buffer_;
};
-// Try to remove as many copies from the module as possible without introducing
-// live range interference. Copy instructions (identified by their unique id) in
-// the set copies_to_exclude are not considered for removal.
-Status RemoveUnnecessaryCopies(
- const HloOrdering& ordering,
- const tensorflow::gtl::FlatSet<int>& copies_to_exclude, HloModule* module,
- const HloDataflowAnalysis::FusionCanShareBufferFunction&
- fusion_can_share_buffer = nullptr);
-
} // namespace xla
#endif // TENSORFLOW_COMPILER_XLA_SERVICE_COPY_INSERTION_H_