From 8d7f18b250a6356623509dee7a4d0636b8937784 Mon Sep 17 00:00:00 2001
From: Jiho Choi <jihochoi@google.com>
Date: Thu, 21 May 2020 14:28:20 -0700
Subject: [PATCH] Add memory cost breakdown per operation type and memory space
 to OpMetrics.

PiperOrigin-RevId: 312741555
Change-Id: Id6666a8c6b9d67fe443154fb135cadeeeaecebdc
---
 .../core/profiler/protobuf/op_metrics.proto       | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/tensorflow/core/profiler/protobuf/op_metrics.proto b/tensorflow/core/profiler/protobuf/op_metrics.proto
index c0f34773e02..af38795b7b2 100644
--- a/tensorflow/core/profiler/protobuf/op_metrics.proto
+++ b/tensorflow/core/profiler/protobuf/op_metrics.proto
@@ -26,7 +26,7 @@ message LayoutAnalysis {
 }
 
 // Metrics for an operation (accumulated over all occurrences).
-// Next ID: 19
+// Next ID: 20
 message OpMetrics {
   // HLO module id. 0 for TF ops.
   uint64 hlo_module_id = 13;
@@ -50,6 +50,19 @@ message OpMetrics {
   uint64 flops = 2;
   // Total bytes accessed.
   uint64 bytes_accessed = 5;
+  // Breakdown of memory accessed by operation type and memory space.
+  message MemoryAccessed {
+    enum OperationType {
+      UNKNOWN = 0;
+      READ = 1;
+      WRITE = 2;
+    }
+    OperationType operation_type = 1;
+    // Device-specific id of memory space.
+    uint64 memory_space = 2;
+    uint64 bytes_accessed = 3;
+  }
+  repeated MemoryAccessed memory_accessed_breakdown = 19;
   // Total dma stall time in picoseconds.
   uint64 dma_stall_ps = 10;
   // The data layout for this op. Only set for convolution ops for now.