tensorflow_serving_client/
step_stats.rs

1// This file is generated by rust-protobuf 2.14.0. Do not edit
2// @generated
3
4// https://github.com/rust-lang/rust-clippy/issues/702
5#![allow(unknown_lints)]
6#![allow(clippy::all)]
7
8#![cfg_attr(rustfmt, rustfmt_skip)]
9
10#![allow(box_pointers)]
11#![allow(dead_code)]
12#![allow(missing_docs)]
13#![allow(non_camel_case_types)]
14#![allow(non_snake_case)]
15#![allow(non_upper_case_globals)]
16#![allow(trivial_casts)]
17#![allow(unsafe_code)]
18#![allow(unused_imports)]
19#![allow(unused_results)]
20//! Generated file from `tensorflow/core/framework/step_stats.proto`
21
22use protobuf::Message as Message_imported_for_functions;
23use protobuf::ProtobufEnum as ProtobufEnum_imported_for_functions;
24
25/// Generated files are compatible only with the same version
26/// of protobuf runtime.
27// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_14_0;
28
29#[derive(PartialEq,Clone,Default)]
30pub struct AllocationRecord {
31    // message fields
32    pub alloc_micros: i64,
33    pub alloc_bytes: i64,
34    // special fields
35    pub unknown_fields: ::protobuf::UnknownFields,
36    pub cached_size: ::protobuf::CachedSize,
37}
38
39impl<'a> ::std::default::Default for &'a AllocationRecord {
40    fn default() -> &'a AllocationRecord {
41        <AllocationRecord as ::protobuf::Message>::default_instance()
42    }
43}
44
45impl AllocationRecord {
46    pub fn new() -> AllocationRecord {
47        ::std::default::Default::default()
48    }
49
50    // int64 alloc_micros = 1;
51
52
53    pub fn get_alloc_micros(&self) -> i64 {
54        self.alloc_micros
55    }
56    pub fn clear_alloc_micros(&mut self) {
57        self.alloc_micros = 0;
58    }
59
60    // Param is passed by value, moved
61    pub fn set_alloc_micros(&mut self, v: i64) {
62        self.alloc_micros = v;
63    }
64
65    // int64 alloc_bytes = 2;
66
67
68    pub fn get_alloc_bytes(&self) -> i64 {
69        self.alloc_bytes
70    }
71    pub fn clear_alloc_bytes(&mut self) {
72        self.alloc_bytes = 0;
73    }
74
75    // Param is passed by value, moved
76    pub fn set_alloc_bytes(&mut self, v: i64) {
77        self.alloc_bytes = v;
78    }
79}
80
81impl ::protobuf::Message for AllocationRecord {
82    fn is_initialized(&self) -> bool {
83        true
84    }
85
86    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
87        while !is.eof()? {
88            let (field_number, wire_type) = is.read_tag_unpack()?;
89            match field_number {
90                1 => {
91                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
92                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
93                    }
94                    let tmp = is.read_int64()?;
95                    self.alloc_micros = tmp;
96                },
97                2 => {
98                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
99                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
100                    }
101                    let tmp = is.read_int64()?;
102                    self.alloc_bytes = tmp;
103                },
104                _ => {
105                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
106                },
107            };
108        }
109        ::std::result::Result::Ok(())
110    }
111
112    // Compute sizes of nested messages
113    #[allow(unused_variables)]
114    fn compute_size(&self) -> u32 {
115        let mut my_size = 0;
116        if self.alloc_micros != 0 {
117            my_size += ::protobuf::rt::value_size(1, self.alloc_micros, ::protobuf::wire_format::WireTypeVarint);
118        }
119        if self.alloc_bytes != 0 {
120            my_size += ::protobuf::rt::value_size(2, self.alloc_bytes, ::protobuf::wire_format::WireTypeVarint);
121        }
122        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
123        self.cached_size.set(my_size);
124        my_size
125    }
126
127    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
128        if self.alloc_micros != 0 {
129            os.write_int64(1, self.alloc_micros)?;
130        }
131        if self.alloc_bytes != 0 {
132            os.write_int64(2, self.alloc_bytes)?;
133        }
134        os.write_unknown_fields(self.get_unknown_fields())?;
135        ::std::result::Result::Ok(())
136    }
137
138    fn get_cached_size(&self) -> u32 {
139        self.cached_size.get()
140    }
141
142    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
143        &self.unknown_fields
144    }
145
146    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
147        &mut self.unknown_fields
148    }
149
150    fn as_any(&self) -> &dyn (::std::any::Any) {
151        self as &dyn (::std::any::Any)
152    }
153    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
154        self as &mut dyn (::std::any::Any)
155    }
156    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
157        self
158    }
159
160    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
161        Self::descriptor_static()
162    }
163
164    fn new() -> AllocationRecord {
165        AllocationRecord::new()
166    }
167
168    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
169        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
170        unsafe {
171            descriptor.get(|| {
172                let mut fields = ::std::vec::Vec::new();
173                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
174                    "alloc_micros",
175                    |m: &AllocationRecord| { &m.alloc_micros },
176                    |m: &mut AllocationRecord| { &mut m.alloc_micros },
177                ));
178                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
179                    "alloc_bytes",
180                    |m: &AllocationRecord| { &m.alloc_bytes },
181                    |m: &mut AllocationRecord| { &mut m.alloc_bytes },
182                ));
183                ::protobuf::reflect::MessageDescriptor::new_pb_name::<AllocationRecord>(
184                    "AllocationRecord",
185                    fields,
186                    file_descriptor_proto()
187                )
188            })
189        }
190    }
191
192    fn default_instance() -> &'static AllocationRecord {
193        static mut instance: ::protobuf::lazy::Lazy<AllocationRecord> = ::protobuf::lazy::Lazy::INIT;
194        unsafe {
195            instance.get(AllocationRecord::new)
196        }
197    }
198}
199
200impl ::protobuf::Clear for AllocationRecord {
201    fn clear(&mut self) {
202        self.alloc_micros = 0;
203        self.alloc_bytes = 0;
204        self.unknown_fields.clear();
205    }
206}
207
208impl ::std::fmt::Debug for AllocationRecord {
209    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
210        ::protobuf::text_format::fmt(self, f)
211    }
212}
213
214impl ::protobuf::reflect::ProtobufValue for AllocationRecord {
215    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
216        ::protobuf::reflect::ReflectValueRef::Message(self)
217    }
218}
219
220#[derive(PartialEq,Clone,Default)]
221pub struct AllocatorMemoryUsed {
222    // message fields
223    pub allocator_name: ::std::string::String,
224    pub total_bytes: i64,
225    pub peak_bytes: i64,
226    pub live_bytes: i64,
227    pub allocation_records: ::protobuf::RepeatedField<AllocationRecord>,
228    pub allocator_bytes_in_use: i64,
229    // special fields
230    pub unknown_fields: ::protobuf::UnknownFields,
231    pub cached_size: ::protobuf::CachedSize,
232}
233
234impl<'a> ::std::default::Default for &'a AllocatorMemoryUsed {
235    fn default() -> &'a AllocatorMemoryUsed {
236        <AllocatorMemoryUsed as ::protobuf::Message>::default_instance()
237    }
238}
239
240impl AllocatorMemoryUsed {
241    pub fn new() -> AllocatorMemoryUsed {
242        ::std::default::Default::default()
243    }
244
245    // string allocator_name = 1;
246
247
248    pub fn get_allocator_name(&self) -> &str {
249        &self.allocator_name
250    }
251    pub fn clear_allocator_name(&mut self) {
252        self.allocator_name.clear();
253    }
254
255    // Param is passed by value, moved
256    pub fn set_allocator_name(&mut self, v: ::std::string::String) {
257        self.allocator_name = v;
258    }
259
260    // Mutable pointer to the field.
261    // If field is not initialized, it is initialized with default value first.
262    pub fn mut_allocator_name(&mut self) -> &mut ::std::string::String {
263        &mut self.allocator_name
264    }
265
266    // Take field
267    pub fn take_allocator_name(&mut self) -> ::std::string::String {
268        ::std::mem::replace(&mut self.allocator_name, ::std::string::String::new())
269    }
270
271    // int64 total_bytes = 2;
272
273
274    pub fn get_total_bytes(&self) -> i64 {
275        self.total_bytes
276    }
277    pub fn clear_total_bytes(&mut self) {
278        self.total_bytes = 0;
279    }
280
281    // Param is passed by value, moved
282    pub fn set_total_bytes(&mut self, v: i64) {
283        self.total_bytes = v;
284    }
285
286    // int64 peak_bytes = 3;
287
288
289    pub fn get_peak_bytes(&self) -> i64 {
290        self.peak_bytes
291    }
292    pub fn clear_peak_bytes(&mut self) {
293        self.peak_bytes = 0;
294    }
295
296    // Param is passed by value, moved
297    pub fn set_peak_bytes(&mut self, v: i64) {
298        self.peak_bytes = v;
299    }
300
301    // int64 live_bytes = 4;
302
303
304    pub fn get_live_bytes(&self) -> i64 {
305        self.live_bytes
306    }
307    pub fn clear_live_bytes(&mut self) {
308        self.live_bytes = 0;
309    }
310
311    // Param is passed by value, moved
312    pub fn set_live_bytes(&mut self, v: i64) {
313        self.live_bytes = v;
314    }
315
316    // repeated .tensorflow.AllocationRecord allocation_records = 6;
317
318
319    pub fn get_allocation_records(&self) -> &[AllocationRecord] {
320        &self.allocation_records
321    }
322    pub fn clear_allocation_records(&mut self) {
323        self.allocation_records.clear();
324    }
325
326    // Param is passed by value, moved
327    pub fn set_allocation_records(&mut self, v: ::protobuf::RepeatedField<AllocationRecord>) {
328        self.allocation_records = v;
329    }
330
331    // Mutable pointer to the field.
332    pub fn mut_allocation_records(&mut self) -> &mut ::protobuf::RepeatedField<AllocationRecord> {
333        &mut self.allocation_records
334    }
335
336    // Take field
337    pub fn take_allocation_records(&mut self) -> ::protobuf::RepeatedField<AllocationRecord> {
338        ::std::mem::replace(&mut self.allocation_records, ::protobuf::RepeatedField::new())
339    }
340
341    // int64 allocator_bytes_in_use = 5;
342
343
344    pub fn get_allocator_bytes_in_use(&self) -> i64 {
345        self.allocator_bytes_in_use
346    }
347    pub fn clear_allocator_bytes_in_use(&mut self) {
348        self.allocator_bytes_in_use = 0;
349    }
350
351    // Param is passed by value, moved
352    pub fn set_allocator_bytes_in_use(&mut self, v: i64) {
353        self.allocator_bytes_in_use = v;
354    }
355}
356
357impl ::protobuf::Message for AllocatorMemoryUsed {
358    fn is_initialized(&self) -> bool {
359        for v in &self.allocation_records {
360            if !v.is_initialized() {
361                return false;
362            }
363        };
364        true
365    }
366
367    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
368        while !is.eof()? {
369            let (field_number, wire_type) = is.read_tag_unpack()?;
370            match field_number {
371                1 => {
372                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.allocator_name)?;
373                },
374                2 => {
375                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
376                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
377                    }
378                    let tmp = is.read_int64()?;
379                    self.total_bytes = tmp;
380                },
381                3 => {
382                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
383                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
384                    }
385                    let tmp = is.read_int64()?;
386                    self.peak_bytes = tmp;
387                },
388                4 => {
389                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
390                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
391                    }
392                    let tmp = is.read_int64()?;
393                    self.live_bytes = tmp;
394                },
395                6 => {
396                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.allocation_records)?;
397                },
398                5 => {
399                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
400                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
401                    }
402                    let tmp = is.read_int64()?;
403                    self.allocator_bytes_in_use = tmp;
404                },
405                _ => {
406                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
407                },
408            };
409        }
410        ::std::result::Result::Ok(())
411    }
412
413    // Compute sizes of nested messages
414    #[allow(unused_variables)]
415    fn compute_size(&self) -> u32 {
416        let mut my_size = 0;
417        if !self.allocator_name.is_empty() {
418            my_size += ::protobuf::rt::string_size(1, &self.allocator_name);
419        }
420        if self.total_bytes != 0 {
421            my_size += ::protobuf::rt::value_size(2, self.total_bytes, ::protobuf::wire_format::WireTypeVarint);
422        }
423        if self.peak_bytes != 0 {
424            my_size += ::protobuf::rt::value_size(3, self.peak_bytes, ::protobuf::wire_format::WireTypeVarint);
425        }
426        if self.live_bytes != 0 {
427            my_size += ::protobuf::rt::value_size(4, self.live_bytes, ::protobuf::wire_format::WireTypeVarint);
428        }
429        for value in &self.allocation_records {
430            let len = value.compute_size();
431            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
432        };
433        if self.allocator_bytes_in_use != 0 {
434            my_size += ::protobuf::rt::value_size(5, self.allocator_bytes_in_use, ::protobuf::wire_format::WireTypeVarint);
435        }
436        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
437        self.cached_size.set(my_size);
438        my_size
439    }
440
441    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
442        if !self.allocator_name.is_empty() {
443            os.write_string(1, &self.allocator_name)?;
444        }
445        if self.total_bytes != 0 {
446            os.write_int64(2, self.total_bytes)?;
447        }
448        if self.peak_bytes != 0 {
449            os.write_int64(3, self.peak_bytes)?;
450        }
451        if self.live_bytes != 0 {
452            os.write_int64(4, self.live_bytes)?;
453        }
454        for v in &self.allocation_records {
455            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
456            os.write_raw_varint32(v.get_cached_size())?;
457            v.write_to_with_cached_sizes(os)?;
458        };
459        if self.allocator_bytes_in_use != 0 {
460            os.write_int64(5, self.allocator_bytes_in_use)?;
461        }
462        os.write_unknown_fields(self.get_unknown_fields())?;
463        ::std::result::Result::Ok(())
464    }
465
466    fn get_cached_size(&self) -> u32 {
467        self.cached_size.get()
468    }
469
470    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
471        &self.unknown_fields
472    }
473
474    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
475        &mut self.unknown_fields
476    }
477
478    fn as_any(&self) -> &dyn (::std::any::Any) {
479        self as &dyn (::std::any::Any)
480    }
481    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
482        self as &mut dyn (::std::any::Any)
483    }
484    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
485        self
486    }
487
488    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
489        Self::descriptor_static()
490    }
491
492    fn new() -> AllocatorMemoryUsed {
493        AllocatorMemoryUsed::new()
494    }
495
496    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
497        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
498        unsafe {
499            descriptor.get(|| {
500                let mut fields = ::std::vec::Vec::new();
501                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
502                    "allocator_name",
503                    |m: &AllocatorMemoryUsed| { &m.allocator_name },
504                    |m: &mut AllocatorMemoryUsed| { &mut m.allocator_name },
505                ));
506                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
507                    "total_bytes",
508                    |m: &AllocatorMemoryUsed| { &m.total_bytes },
509                    |m: &mut AllocatorMemoryUsed| { &mut m.total_bytes },
510                ));
511                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
512                    "peak_bytes",
513                    |m: &AllocatorMemoryUsed| { &m.peak_bytes },
514                    |m: &mut AllocatorMemoryUsed| { &mut m.peak_bytes },
515                ));
516                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
517                    "live_bytes",
518                    |m: &AllocatorMemoryUsed| { &m.live_bytes },
519                    |m: &mut AllocatorMemoryUsed| { &mut m.live_bytes },
520                ));
521                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<AllocationRecord>>(
522                    "allocation_records",
523                    |m: &AllocatorMemoryUsed| { &m.allocation_records },
524                    |m: &mut AllocatorMemoryUsed| { &mut m.allocation_records },
525                ));
526                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
527                    "allocator_bytes_in_use",
528                    |m: &AllocatorMemoryUsed| { &m.allocator_bytes_in_use },
529                    |m: &mut AllocatorMemoryUsed| { &mut m.allocator_bytes_in_use },
530                ));
531                ::protobuf::reflect::MessageDescriptor::new_pb_name::<AllocatorMemoryUsed>(
532                    "AllocatorMemoryUsed",
533                    fields,
534                    file_descriptor_proto()
535                )
536            })
537        }
538    }
539
540    fn default_instance() -> &'static AllocatorMemoryUsed {
541        static mut instance: ::protobuf::lazy::Lazy<AllocatorMemoryUsed> = ::protobuf::lazy::Lazy::INIT;
542        unsafe {
543            instance.get(AllocatorMemoryUsed::new)
544        }
545    }
546}
547
548impl ::protobuf::Clear for AllocatorMemoryUsed {
549    fn clear(&mut self) {
550        self.allocator_name.clear();
551        self.total_bytes = 0;
552        self.peak_bytes = 0;
553        self.live_bytes = 0;
554        self.allocation_records.clear();
555        self.allocator_bytes_in_use = 0;
556        self.unknown_fields.clear();
557    }
558}
559
560impl ::std::fmt::Debug for AllocatorMemoryUsed {
561    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
562        ::protobuf::text_format::fmt(self, f)
563    }
564}
565
566impl ::protobuf::reflect::ProtobufValue for AllocatorMemoryUsed {
567    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
568        ::protobuf::reflect::ReflectValueRef::Message(self)
569    }
570}
571
572#[derive(PartialEq,Clone,Default)]
573pub struct NodeOutput {
574    // message fields
575    pub slot: i32,
576    pub tensor_description: ::protobuf::SingularPtrField<super::tensor_description::TensorDescription>,
577    // special fields
578    pub unknown_fields: ::protobuf::UnknownFields,
579    pub cached_size: ::protobuf::CachedSize,
580}
581
582impl<'a> ::std::default::Default for &'a NodeOutput {
583    fn default() -> &'a NodeOutput {
584        <NodeOutput as ::protobuf::Message>::default_instance()
585    }
586}
587
588impl NodeOutput {
589    pub fn new() -> NodeOutput {
590        ::std::default::Default::default()
591    }
592
593    // int32 slot = 1;
594
595
596    pub fn get_slot(&self) -> i32 {
597        self.slot
598    }
599    pub fn clear_slot(&mut self) {
600        self.slot = 0;
601    }
602
603    // Param is passed by value, moved
604    pub fn set_slot(&mut self, v: i32) {
605        self.slot = v;
606    }
607
608    // .tensorflow.TensorDescription tensor_description = 3;
609
610
611    pub fn get_tensor_description(&self) -> &super::tensor_description::TensorDescription {
612        self.tensor_description.as_ref().unwrap_or_else(|| super::tensor_description::TensorDescription::default_instance())
613    }
614    pub fn clear_tensor_description(&mut self) {
615        self.tensor_description.clear();
616    }
617
618    pub fn has_tensor_description(&self) -> bool {
619        self.tensor_description.is_some()
620    }
621
622    // Param is passed by value, moved
623    pub fn set_tensor_description(&mut self, v: super::tensor_description::TensorDescription) {
624        self.tensor_description = ::protobuf::SingularPtrField::some(v);
625    }
626
627    // Mutable pointer to the field.
628    // If field is not initialized, it is initialized with default value first.
629    pub fn mut_tensor_description(&mut self) -> &mut super::tensor_description::TensorDescription {
630        if self.tensor_description.is_none() {
631            self.tensor_description.set_default();
632        }
633        self.tensor_description.as_mut().unwrap()
634    }
635
636    // Take field
637    pub fn take_tensor_description(&mut self) -> super::tensor_description::TensorDescription {
638        self.tensor_description.take().unwrap_or_else(|| super::tensor_description::TensorDescription::new())
639    }
640}
641
642impl ::protobuf::Message for NodeOutput {
643    fn is_initialized(&self) -> bool {
644        for v in &self.tensor_description {
645            if !v.is_initialized() {
646                return false;
647            }
648        };
649        true
650    }
651
652    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
653        while !is.eof()? {
654            let (field_number, wire_type) = is.read_tag_unpack()?;
655            match field_number {
656                1 => {
657                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
658                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
659                    }
660                    let tmp = is.read_int32()?;
661                    self.slot = tmp;
662                },
663                3 => {
664                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.tensor_description)?;
665                },
666                _ => {
667                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
668                },
669            };
670        }
671        ::std::result::Result::Ok(())
672    }
673
674    // Compute sizes of nested messages
675    #[allow(unused_variables)]
676    fn compute_size(&self) -> u32 {
677        let mut my_size = 0;
678        if self.slot != 0 {
679            my_size += ::protobuf::rt::value_size(1, self.slot, ::protobuf::wire_format::WireTypeVarint);
680        }
681        if let Some(ref v) = self.tensor_description.as_ref() {
682            let len = v.compute_size();
683            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
684        }
685        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
686        self.cached_size.set(my_size);
687        my_size
688    }
689
690    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
691        if self.slot != 0 {
692            os.write_int32(1, self.slot)?;
693        }
694        if let Some(ref v) = self.tensor_description.as_ref() {
695            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
696            os.write_raw_varint32(v.get_cached_size())?;
697            v.write_to_with_cached_sizes(os)?;
698        }
699        os.write_unknown_fields(self.get_unknown_fields())?;
700        ::std::result::Result::Ok(())
701    }
702
703    fn get_cached_size(&self) -> u32 {
704        self.cached_size.get()
705    }
706
707    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
708        &self.unknown_fields
709    }
710
711    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
712        &mut self.unknown_fields
713    }
714
715    fn as_any(&self) -> &dyn (::std::any::Any) {
716        self as &dyn (::std::any::Any)
717    }
718    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
719        self as &mut dyn (::std::any::Any)
720    }
721    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
722        self
723    }
724
725    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
726        Self::descriptor_static()
727    }
728
729    fn new() -> NodeOutput {
730        NodeOutput::new()
731    }
732
733    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
734        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
735        unsafe {
736            descriptor.get(|| {
737                let mut fields = ::std::vec::Vec::new();
738                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
739                    "slot",
740                    |m: &NodeOutput| { &m.slot },
741                    |m: &mut NodeOutput| { &mut m.slot },
742                ));
743                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::tensor_description::TensorDescription>>(
744                    "tensor_description",
745                    |m: &NodeOutput| { &m.tensor_description },
746                    |m: &mut NodeOutput| { &mut m.tensor_description },
747                ));
748                ::protobuf::reflect::MessageDescriptor::new_pb_name::<NodeOutput>(
749                    "NodeOutput",
750                    fields,
751                    file_descriptor_proto()
752                )
753            })
754        }
755    }
756
757    fn default_instance() -> &'static NodeOutput {
758        static mut instance: ::protobuf::lazy::Lazy<NodeOutput> = ::protobuf::lazy::Lazy::INIT;
759        unsafe {
760            instance.get(NodeOutput::new)
761        }
762    }
763}
764
765impl ::protobuf::Clear for NodeOutput {
766    fn clear(&mut self) {
767        self.slot = 0;
768        self.tensor_description.clear();
769        self.unknown_fields.clear();
770    }
771}
772
773impl ::std::fmt::Debug for NodeOutput {
774    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
775        ::protobuf::text_format::fmt(self, f)
776    }
777}
778
779impl ::protobuf::reflect::ProtobufValue for NodeOutput {
780    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
781        ::protobuf::reflect::ReflectValueRef::Message(self)
782    }
783}
784
785#[derive(PartialEq,Clone,Default)]
786pub struct MemoryStats {
787    // message fields
788    pub temp_memory_size: i64,
789    pub persistent_memory_size: i64,
790    pub persistent_tensor_alloc_ids: ::std::vec::Vec<i64>,
791    pub device_temp_memory_size: i64,
792    pub device_persistent_memory_size: i64,
793    pub device_persistent_tensor_alloc_ids: ::std::vec::Vec<i64>,
794    // special fields
795    pub unknown_fields: ::protobuf::UnknownFields,
796    pub cached_size: ::protobuf::CachedSize,
797}
798
799impl<'a> ::std::default::Default for &'a MemoryStats {
800    fn default() -> &'a MemoryStats {
801        <MemoryStats as ::protobuf::Message>::default_instance()
802    }
803}
804
805impl MemoryStats {
806    pub fn new() -> MemoryStats {
807        ::std::default::Default::default()
808    }
809
810    // int64 temp_memory_size = 1;
811
812
813    pub fn get_temp_memory_size(&self) -> i64 {
814        self.temp_memory_size
815    }
816    pub fn clear_temp_memory_size(&mut self) {
817        self.temp_memory_size = 0;
818    }
819
820    // Param is passed by value, moved
821    pub fn set_temp_memory_size(&mut self, v: i64) {
822        self.temp_memory_size = v;
823    }
824
825    // int64 persistent_memory_size = 3;
826
827
828    pub fn get_persistent_memory_size(&self) -> i64 {
829        self.persistent_memory_size
830    }
831    pub fn clear_persistent_memory_size(&mut self) {
832        self.persistent_memory_size = 0;
833    }
834
835    // Param is passed by value, moved
836    pub fn set_persistent_memory_size(&mut self, v: i64) {
837        self.persistent_memory_size = v;
838    }
839
840    // repeated int64 persistent_tensor_alloc_ids = 5;
841
842
843    pub fn get_persistent_tensor_alloc_ids(&self) -> &[i64] {
844        &self.persistent_tensor_alloc_ids
845    }
846    pub fn clear_persistent_tensor_alloc_ids(&mut self) {
847        self.persistent_tensor_alloc_ids.clear();
848    }
849
850    // Param is passed by value, moved
851    pub fn set_persistent_tensor_alloc_ids(&mut self, v: ::std::vec::Vec<i64>) {
852        self.persistent_tensor_alloc_ids = v;
853    }
854
855    // Mutable pointer to the field.
856    pub fn mut_persistent_tensor_alloc_ids(&mut self) -> &mut ::std::vec::Vec<i64> {
857        &mut self.persistent_tensor_alloc_ids
858    }
859
860    // Take field
861    pub fn take_persistent_tensor_alloc_ids(&mut self) -> ::std::vec::Vec<i64> {
862        ::std::mem::replace(&mut self.persistent_tensor_alloc_ids, ::std::vec::Vec::new())
863    }
864
865    // int64 device_temp_memory_size = 2;
866
867
868    pub fn get_device_temp_memory_size(&self) -> i64 {
869        self.device_temp_memory_size
870    }
871    pub fn clear_device_temp_memory_size(&mut self) {
872        self.device_temp_memory_size = 0;
873    }
874
875    // Param is passed by value, moved
876    pub fn set_device_temp_memory_size(&mut self, v: i64) {
877        self.device_temp_memory_size = v;
878    }
879
880    // int64 device_persistent_memory_size = 4;
881
882
883    pub fn get_device_persistent_memory_size(&self) -> i64 {
884        self.device_persistent_memory_size
885    }
886    pub fn clear_device_persistent_memory_size(&mut self) {
887        self.device_persistent_memory_size = 0;
888    }
889
890    // Param is passed by value, moved
891    pub fn set_device_persistent_memory_size(&mut self, v: i64) {
892        self.device_persistent_memory_size = v;
893    }
894
895    // repeated int64 device_persistent_tensor_alloc_ids = 6;
896
897
898    pub fn get_device_persistent_tensor_alloc_ids(&self) -> &[i64] {
899        &self.device_persistent_tensor_alloc_ids
900    }
901    pub fn clear_device_persistent_tensor_alloc_ids(&mut self) {
902        self.device_persistent_tensor_alloc_ids.clear();
903    }
904
905    // Param is passed by value, moved
906    pub fn set_device_persistent_tensor_alloc_ids(&mut self, v: ::std::vec::Vec<i64>) {
907        self.device_persistent_tensor_alloc_ids = v;
908    }
909
910    // Mutable pointer to the field.
911    pub fn mut_device_persistent_tensor_alloc_ids(&mut self) -> &mut ::std::vec::Vec<i64> {
912        &mut self.device_persistent_tensor_alloc_ids
913    }
914
915    // Take field
916    pub fn take_device_persistent_tensor_alloc_ids(&mut self) -> ::std::vec::Vec<i64> {
917        ::std::mem::replace(&mut self.device_persistent_tensor_alloc_ids, ::std::vec::Vec::new())
918    }
919}
920
921impl ::protobuf::Message for MemoryStats {
922    fn is_initialized(&self) -> bool {
923        true
924    }
925
926    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
927        while !is.eof()? {
928            let (field_number, wire_type) = is.read_tag_unpack()?;
929            match field_number {
930                1 => {
931                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
932                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
933                    }
934                    let tmp = is.read_int64()?;
935                    self.temp_memory_size = tmp;
936                },
937                3 => {
938                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
939                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
940                    }
941                    let tmp = is.read_int64()?;
942                    self.persistent_memory_size = tmp;
943                },
944                5 => {
945                    ::protobuf::rt::read_repeated_int64_into(wire_type, is, &mut self.persistent_tensor_alloc_ids)?;
946                },
947                2 => {
948                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
949                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
950                    }
951                    let tmp = is.read_int64()?;
952                    self.device_temp_memory_size = tmp;
953                },
954                4 => {
955                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
956                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
957                    }
958                    let tmp = is.read_int64()?;
959                    self.device_persistent_memory_size = tmp;
960                },
961                6 => {
962                    ::protobuf::rt::read_repeated_int64_into(wire_type, is, &mut self.device_persistent_tensor_alloc_ids)?;
963                },
964                _ => {
965                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
966                },
967            };
968        }
969        ::std::result::Result::Ok(())
970    }
971
972    // Compute sizes of nested messages
973    #[allow(unused_variables)]
974    fn compute_size(&self) -> u32 {
975        let mut my_size = 0;
976        if self.temp_memory_size != 0 {
977            my_size += ::protobuf::rt::value_size(1, self.temp_memory_size, ::protobuf::wire_format::WireTypeVarint);
978        }
979        if self.persistent_memory_size != 0 {
980            my_size += ::protobuf::rt::value_size(3, self.persistent_memory_size, ::protobuf::wire_format::WireTypeVarint);
981        }
982        for value in &self.persistent_tensor_alloc_ids {
983            my_size += ::protobuf::rt::value_size(5, *value, ::protobuf::wire_format::WireTypeVarint);
984        };
985        if self.device_temp_memory_size != 0 {
986            my_size += ::protobuf::rt::value_size(2, self.device_temp_memory_size, ::protobuf::wire_format::WireTypeVarint);
987        }
988        if self.device_persistent_memory_size != 0 {
989            my_size += ::protobuf::rt::value_size(4, self.device_persistent_memory_size, ::protobuf::wire_format::WireTypeVarint);
990        }
991        for value in &self.device_persistent_tensor_alloc_ids {
992            my_size += ::protobuf::rt::value_size(6, *value, ::protobuf::wire_format::WireTypeVarint);
993        };
994        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
995        self.cached_size.set(my_size);
996        my_size
997    }
998
999    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1000        if self.temp_memory_size != 0 {
1001            os.write_int64(1, self.temp_memory_size)?;
1002        }
1003        if self.persistent_memory_size != 0 {
1004            os.write_int64(3, self.persistent_memory_size)?;
1005        }
1006        for v in &self.persistent_tensor_alloc_ids {
1007            os.write_int64(5, *v)?;
1008        };
1009        if self.device_temp_memory_size != 0 {
1010            os.write_int64(2, self.device_temp_memory_size)?;
1011        }
1012        if self.device_persistent_memory_size != 0 {
1013            os.write_int64(4, self.device_persistent_memory_size)?;
1014        }
1015        for v in &self.device_persistent_tensor_alloc_ids {
1016            os.write_int64(6, *v)?;
1017        };
1018        os.write_unknown_fields(self.get_unknown_fields())?;
1019        ::std::result::Result::Ok(())
1020    }
1021
1022    fn get_cached_size(&self) -> u32 {
1023        self.cached_size.get()
1024    }
1025
1026    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1027        &self.unknown_fields
1028    }
1029
1030    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1031        &mut self.unknown_fields
1032    }
1033
1034    fn as_any(&self) -> &dyn (::std::any::Any) {
1035        self as &dyn (::std::any::Any)
1036    }
1037    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1038        self as &mut dyn (::std::any::Any)
1039    }
1040    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1041        self
1042    }
1043
1044    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1045        Self::descriptor_static()
1046    }
1047
1048    fn new() -> MemoryStats {
1049        MemoryStats::new()
1050    }
1051
1052    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1053        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
1054        unsafe {
1055            descriptor.get(|| {
1056                let mut fields = ::std::vec::Vec::new();
1057                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1058                    "temp_memory_size",
1059                    |m: &MemoryStats| { &m.temp_memory_size },
1060                    |m: &mut MemoryStats| { &mut m.temp_memory_size },
1061                ));
1062                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1063                    "persistent_memory_size",
1064                    |m: &MemoryStats| { &m.persistent_memory_size },
1065                    |m: &mut MemoryStats| { &mut m.persistent_memory_size },
1066                ));
1067                fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1068                    "persistent_tensor_alloc_ids",
1069                    |m: &MemoryStats| { &m.persistent_tensor_alloc_ids },
1070                    |m: &mut MemoryStats| { &mut m.persistent_tensor_alloc_ids },
1071                ));
1072                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1073                    "device_temp_memory_size",
1074                    |m: &MemoryStats| { &m.device_temp_memory_size },
1075                    |m: &mut MemoryStats| { &mut m.device_temp_memory_size },
1076                ));
1077                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1078                    "device_persistent_memory_size",
1079                    |m: &MemoryStats| { &m.device_persistent_memory_size },
1080                    |m: &mut MemoryStats| { &mut m.device_persistent_memory_size },
1081                ));
1082                fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1083                    "device_persistent_tensor_alloc_ids",
1084                    |m: &MemoryStats| { &m.device_persistent_tensor_alloc_ids },
1085                    |m: &mut MemoryStats| { &mut m.device_persistent_tensor_alloc_ids },
1086                ));
1087                ::protobuf::reflect::MessageDescriptor::new_pb_name::<MemoryStats>(
1088                    "MemoryStats",
1089                    fields,
1090                    file_descriptor_proto()
1091                )
1092            })
1093        }
1094    }
1095
1096    fn default_instance() -> &'static MemoryStats {
1097        static mut instance: ::protobuf::lazy::Lazy<MemoryStats> = ::protobuf::lazy::Lazy::INIT;
1098        unsafe {
1099            instance.get(MemoryStats::new)
1100        }
1101    }
1102}
1103
1104impl ::protobuf::Clear for MemoryStats {
1105    fn clear(&mut self) {
1106        self.temp_memory_size = 0;
1107        self.persistent_memory_size = 0;
1108        self.persistent_tensor_alloc_ids.clear();
1109        self.device_temp_memory_size = 0;
1110        self.device_persistent_memory_size = 0;
1111        self.device_persistent_tensor_alloc_ids.clear();
1112        self.unknown_fields.clear();
1113    }
1114}
1115
1116impl ::std::fmt::Debug for MemoryStats {
1117    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1118        ::protobuf::text_format::fmt(self, f)
1119    }
1120}
1121
1122impl ::protobuf::reflect::ProtobufValue for MemoryStats {
1123    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1124        ::protobuf::reflect::ReflectValueRef::Message(self)
1125    }
1126}
1127
1128#[derive(PartialEq,Clone,Default)]
1129pub struct NodeExecStats {
1130    // message fields
1131    pub node_name: ::std::string::String,
1132    pub all_start_micros: i64,
1133    pub op_start_rel_micros: i64,
1134    pub op_end_rel_micros: i64,
1135    pub all_end_rel_micros: i64,
1136    pub memory: ::protobuf::RepeatedField<AllocatorMemoryUsed>,
1137    pub output: ::protobuf::RepeatedField<NodeOutput>,
1138    pub timeline_label: ::std::string::String,
1139    pub scheduled_micros: i64,
1140    pub thread_id: u32,
1141    pub referenced_tensor: ::protobuf::RepeatedField<super::allocation_description::AllocationDescription>,
1142    pub memory_stats: ::protobuf::SingularPtrField<MemoryStats>,
1143    pub all_start_nanos: i64,
1144    pub op_start_rel_nanos: i64,
1145    pub op_end_rel_nanos: i64,
1146    pub all_end_rel_nanos: i64,
1147    pub scheduled_nanos: i64,
1148    // special fields
1149    pub unknown_fields: ::protobuf::UnknownFields,
1150    pub cached_size: ::protobuf::CachedSize,
1151}
1152
1153impl<'a> ::std::default::Default for &'a NodeExecStats {
1154    fn default() -> &'a NodeExecStats {
1155        <NodeExecStats as ::protobuf::Message>::default_instance()
1156    }
1157}
1158
1159impl NodeExecStats {
1160    pub fn new() -> NodeExecStats {
1161        ::std::default::Default::default()
1162    }
1163
1164    // string node_name = 1;
1165
1166
1167    pub fn get_node_name(&self) -> &str {
1168        &self.node_name
1169    }
1170    pub fn clear_node_name(&mut self) {
1171        self.node_name.clear();
1172    }
1173
1174    // Param is passed by value, moved
1175    pub fn set_node_name(&mut self, v: ::std::string::String) {
1176        self.node_name = v;
1177    }
1178
1179    // Mutable pointer to the field.
1180    // If field is not initialized, it is initialized with default value first.
1181    pub fn mut_node_name(&mut self) -> &mut ::std::string::String {
1182        &mut self.node_name
1183    }
1184
1185    // Take field
1186    pub fn take_node_name(&mut self) -> ::std::string::String {
1187        ::std::mem::replace(&mut self.node_name, ::std::string::String::new())
1188    }
1189
1190    // int64 all_start_micros = 2;
1191
1192
1193    pub fn get_all_start_micros(&self) -> i64 {
1194        self.all_start_micros
1195    }
1196    pub fn clear_all_start_micros(&mut self) {
1197        self.all_start_micros = 0;
1198    }
1199
1200    // Param is passed by value, moved
1201    pub fn set_all_start_micros(&mut self, v: i64) {
1202        self.all_start_micros = v;
1203    }
1204
1205    // int64 op_start_rel_micros = 3;
1206
1207
1208    pub fn get_op_start_rel_micros(&self) -> i64 {
1209        self.op_start_rel_micros
1210    }
1211    pub fn clear_op_start_rel_micros(&mut self) {
1212        self.op_start_rel_micros = 0;
1213    }
1214
1215    // Param is passed by value, moved
1216    pub fn set_op_start_rel_micros(&mut self, v: i64) {
1217        self.op_start_rel_micros = v;
1218    }
1219
1220    // int64 op_end_rel_micros = 4;
1221
1222
1223    pub fn get_op_end_rel_micros(&self) -> i64 {
1224        self.op_end_rel_micros
1225    }
1226    pub fn clear_op_end_rel_micros(&mut self) {
1227        self.op_end_rel_micros = 0;
1228    }
1229
1230    // Param is passed by value, moved
1231    pub fn set_op_end_rel_micros(&mut self, v: i64) {
1232        self.op_end_rel_micros = v;
1233    }
1234
1235    // int64 all_end_rel_micros = 5;
1236
1237
1238    pub fn get_all_end_rel_micros(&self) -> i64 {
1239        self.all_end_rel_micros
1240    }
1241    pub fn clear_all_end_rel_micros(&mut self) {
1242        self.all_end_rel_micros = 0;
1243    }
1244
1245    // Param is passed by value, moved
1246    pub fn set_all_end_rel_micros(&mut self, v: i64) {
1247        self.all_end_rel_micros = v;
1248    }
1249
1250    // repeated .tensorflow.AllocatorMemoryUsed memory = 6;
1251
1252
1253    pub fn get_memory(&self) -> &[AllocatorMemoryUsed] {
1254        &self.memory
1255    }
1256    pub fn clear_memory(&mut self) {
1257        self.memory.clear();
1258    }
1259
1260    // Param is passed by value, moved
1261    pub fn set_memory(&mut self, v: ::protobuf::RepeatedField<AllocatorMemoryUsed>) {
1262        self.memory = v;
1263    }
1264
1265    // Mutable pointer to the field.
1266    pub fn mut_memory(&mut self) -> &mut ::protobuf::RepeatedField<AllocatorMemoryUsed> {
1267        &mut self.memory
1268    }
1269
1270    // Take field
1271    pub fn take_memory(&mut self) -> ::protobuf::RepeatedField<AllocatorMemoryUsed> {
1272        ::std::mem::replace(&mut self.memory, ::protobuf::RepeatedField::new())
1273    }
1274
1275    // repeated .tensorflow.NodeOutput output = 7;
1276
1277
1278    pub fn get_output(&self) -> &[NodeOutput] {
1279        &self.output
1280    }
1281    pub fn clear_output(&mut self) {
1282        self.output.clear();
1283    }
1284
1285    // Param is passed by value, moved
1286    pub fn set_output(&mut self, v: ::protobuf::RepeatedField<NodeOutput>) {
1287        self.output = v;
1288    }
1289
1290    // Mutable pointer to the field.
1291    pub fn mut_output(&mut self) -> &mut ::protobuf::RepeatedField<NodeOutput> {
1292        &mut self.output
1293    }
1294
1295    // Take field
1296    pub fn take_output(&mut self) -> ::protobuf::RepeatedField<NodeOutput> {
1297        ::std::mem::replace(&mut self.output, ::protobuf::RepeatedField::new())
1298    }
1299
1300    // string timeline_label = 8;
1301
1302
1303    pub fn get_timeline_label(&self) -> &str {
1304        &self.timeline_label
1305    }
1306    pub fn clear_timeline_label(&mut self) {
1307        self.timeline_label.clear();
1308    }
1309
1310    // Param is passed by value, moved
1311    pub fn set_timeline_label(&mut self, v: ::std::string::String) {
1312        self.timeline_label = v;
1313    }
1314
1315    // Mutable pointer to the field.
1316    // If field is not initialized, it is initialized with default value first.
1317    pub fn mut_timeline_label(&mut self) -> &mut ::std::string::String {
1318        &mut self.timeline_label
1319    }
1320
1321    // Take field
1322    pub fn take_timeline_label(&mut self) -> ::std::string::String {
1323        ::std::mem::replace(&mut self.timeline_label, ::std::string::String::new())
1324    }
1325
1326    // int64 scheduled_micros = 9;
1327
1328
1329    pub fn get_scheduled_micros(&self) -> i64 {
1330        self.scheduled_micros
1331    }
1332    pub fn clear_scheduled_micros(&mut self) {
1333        self.scheduled_micros = 0;
1334    }
1335
1336    // Param is passed by value, moved
1337    pub fn set_scheduled_micros(&mut self, v: i64) {
1338        self.scheduled_micros = v;
1339    }
1340
1341    // uint32 thread_id = 10;
1342
1343
1344    pub fn get_thread_id(&self) -> u32 {
1345        self.thread_id
1346    }
1347    pub fn clear_thread_id(&mut self) {
1348        self.thread_id = 0;
1349    }
1350
1351    // Param is passed by value, moved
1352    pub fn set_thread_id(&mut self, v: u32) {
1353        self.thread_id = v;
1354    }
1355
1356    // repeated .tensorflow.AllocationDescription referenced_tensor = 11;
1357
1358
1359    pub fn get_referenced_tensor(&self) -> &[super::allocation_description::AllocationDescription] {
1360        &self.referenced_tensor
1361    }
1362    pub fn clear_referenced_tensor(&mut self) {
1363        self.referenced_tensor.clear();
1364    }
1365
1366    // Param is passed by value, moved
1367    pub fn set_referenced_tensor(&mut self, v: ::protobuf::RepeatedField<super::allocation_description::AllocationDescription>) {
1368        self.referenced_tensor = v;
1369    }
1370
1371    // Mutable pointer to the field.
1372    pub fn mut_referenced_tensor(&mut self) -> &mut ::protobuf::RepeatedField<super::allocation_description::AllocationDescription> {
1373        &mut self.referenced_tensor
1374    }
1375
1376    // Take field
1377    pub fn take_referenced_tensor(&mut self) -> ::protobuf::RepeatedField<super::allocation_description::AllocationDescription> {
1378        ::std::mem::replace(&mut self.referenced_tensor, ::protobuf::RepeatedField::new())
1379    }
1380
1381    // .tensorflow.MemoryStats memory_stats = 12;
1382
1383
1384    pub fn get_memory_stats(&self) -> &MemoryStats {
1385        self.memory_stats.as_ref().unwrap_or_else(|| MemoryStats::default_instance())
1386    }
1387    pub fn clear_memory_stats(&mut self) {
1388        self.memory_stats.clear();
1389    }
1390
1391    pub fn has_memory_stats(&self) -> bool {
1392        self.memory_stats.is_some()
1393    }
1394
1395    // Param is passed by value, moved
1396    pub fn set_memory_stats(&mut self, v: MemoryStats) {
1397        self.memory_stats = ::protobuf::SingularPtrField::some(v);
1398    }
1399
1400    // Mutable pointer to the field.
1401    // If field is not initialized, it is initialized with default value first.
1402    pub fn mut_memory_stats(&mut self) -> &mut MemoryStats {
1403        if self.memory_stats.is_none() {
1404            self.memory_stats.set_default();
1405        }
1406        self.memory_stats.as_mut().unwrap()
1407    }
1408
1409    // Take field
1410    pub fn take_memory_stats(&mut self) -> MemoryStats {
1411        self.memory_stats.take().unwrap_or_else(|| MemoryStats::new())
1412    }
1413
1414    // int64 all_start_nanos = 13;
1415
1416
1417    pub fn get_all_start_nanos(&self) -> i64 {
1418        self.all_start_nanos
1419    }
1420    pub fn clear_all_start_nanos(&mut self) {
1421        self.all_start_nanos = 0;
1422    }
1423
1424    // Param is passed by value, moved
1425    pub fn set_all_start_nanos(&mut self, v: i64) {
1426        self.all_start_nanos = v;
1427    }
1428
1429    // int64 op_start_rel_nanos = 14;
1430
1431
1432    pub fn get_op_start_rel_nanos(&self) -> i64 {
1433        self.op_start_rel_nanos
1434    }
1435    pub fn clear_op_start_rel_nanos(&mut self) {
1436        self.op_start_rel_nanos = 0;
1437    }
1438
1439    // Param is passed by value, moved
1440    pub fn set_op_start_rel_nanos(&mut self, v: i64) {
1441        self.op_start_rel_nanos = v;
1442    }
1443
1444    // int64 op_end_rel_nanos = 15;
1445
1446
1447    pub fn get_op_end_rel_nanos(&self) -> i64 {
1448        self.op_end_rel_nanos
1449    }
1450    pub fn clear_op_end_rel_nanos(&mut self) {
1451        self.op_end_rel_nanos = 0;
1452    }
1453
1454    // Param is passed by value, moved
1455    pub fn set_op_end_rel_nanos(&mut self, v: i64) {
1456        self.op_end_rel_nanos = v;
1457    }
1458
1459    // int64 all_end_rel_nanos = 16;
1460
1461
1462    pub fn get_all_end_rel_nanos(&self) -> i64 {
1463        self.all_end_rel_nanos
1464    }
1465    pub fn clear_all_end_rel_nanos(&mut self) {
1466        self.all_end_rel_nanos = 0;
1467    }
1468
1469    // Param is passed by value, moved
1470    pub fn set_all_end_rel_nanos(&mut self, v: i64) {
1471        self.all_end_rel_nanos = v;
1472    }
1473
1474    // int64 scheduled_nanos = 17;
1475
1476
1477    pub fn get_scheduled_nanos(&self) -> i64 {
1478        self.scheduled_nanos
1479    }
1480    pub fn clear_scheduled_nanos(&mut self) {
1481        self.scheduled_nanos = 0;
1482    }
1483
1484    // Param is passed by value, moved
1485    pub fn set_scheduled_nanos(&mut self, v: i64) {
1486        self.scheduled_nanos = v;
1487    }
1488}
1489
1490impl ::protobuf::Message for NodeExecStats {
1491    fn is_initialized(&self) -> bool {
1492        for v in &self.memory {
1493            if !v.is_initialized() {
1494                return false;
1495            }
1496        };
1497        for v in &self.output {
1498            if !v.is_initialized() {
1499                return false;
1500            }
1501        };
1502        for v in &self.referenced_tensor {
1503            if !v.is_initialized() {
1504                return false;
1505            }
1506        };
1507        for v in &self.memory_stats {
1508            if !v.is_initialized() {
1509                return false;
1510            }
1511        };
1512        true
1513    }
1514
1515    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1516        while !is.eof()? {
1517            let (field_number, wire_type) = is.read_tag_unpack()?;
1518            match field_number {
1519                1 => {
1520                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.node_name)?;
1521                },
1522                2 => {
1523                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1524                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1525                    }
1526                    let tmp = is.read_int64()?;
1527                    self.all_start_micros = tmp;
1528                },
1529                3 => {
1530                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1531                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1532                    }
1533                    let tmp = is.read_int64()?;
1534                    self.op_start_rel_micros = tmp;
1535                },
1536                4 => {
1537                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1538                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1539                    }
1540                    let tmp = is.read_int64()?;
1541                    self.op_end_rel_micros = tmp;
1542                },
1543                5 => {
1544                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1545                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1546                    }
1547                    let tmp = is.read_int64()?;
1548                    self.all_end_rel_micros = tmp;
1549                },
1550                6 => {
1551                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.memory)?;
1552                },
1553                7 => {
1554                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.output)?;
1555                },
1556                8 => {
1557                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.timeline_label)?;
1558                },
1559                9 => {
1560                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1561                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1562                    }
1563                    let tmp = is.read_int64()?;
1564                    self.scheduled_micros = tmp;
1565                },
1566                10 => {
1567                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1568                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1569                    }
1570                    let tmp = is.read_uint32()?;
1571                    self.thread_id = tmp;
1572                },
1573                11 => {
1574                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.referenced_tensor)?;
1575                },
1576                12 => {
1577                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.memory_stats)?;
1578                },
1579                13 => {
1580                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1581                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1582                    }
1583                    let tmp = is.read_int64()?;
1584                    self.all_start_nanos = tmp;
1585                },
1586                14 => {
1587                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1588                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1589                    }
1590                    let tmp = is.read_int64()?;
1591                    self.op_start_rel_nanos = tmp;
1592                },
1593                15 => {
1594                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1595                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1596                    }
1597                    let tmp = is.read_int64()?;
1598                    self.op_end_rel_nanos = tmp;
1599                },
1600                16 => {
1601                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1602                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1603                    }
1604                    let tmp = is.read_int64()?;
1605                    self.all_end_rel_nanos = tmp;
1606                },
1607                17 => {
1608                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1609                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1610                    }
1611                    let tmp = is.read_int64()?;
1612                    self.scheduled_nanos = tmp;
1613                },
1614                _ => {
1615                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1616                },
1617            };
1618        }
1619        ::std::result::Result::Ok(())
1620    }
1621
1622    // Compute sizes of nested messages
1623    #[allow(unused_variables)]
1624    fn compute_size(&self) -> u32 {
1625        let mut my_size = 0;
1626        if !self.node_name.is_empty() {
1627            my_size += ::protobuf::rt::string_size(1, &self.node_name);
1628        }
1629        if self.all_start_micros != 0 {
1630            my_size += ::protobuf::rt::value_size(2, self.all_start_micros, ::protobuf::wire_format::WireTypeVarint);
1631        }
1632        if self.op_start_rel_micros != 0 {
1633            my_size += ::protobuf::rt::value_size(3, self.op_start_rel_micros, ::protobuf::wire_format::WireTypeVarint);
1634        }
1635        if self.op_end_rel_micros != 0 {
1636            my_size += ::protobuf::rt::value_size(4, self.op_end_rel_micros, ::protobuf::wire_format::WireTypeVarint);
1637        }
1638        if self.all_end_rel_micros != 0 {
1639            my_size += ::protobuf::rt::value_size(5, self.all_end_rel_micros, ::protobuf::wire_format::WireTypeVarint);
1640        }
1641        for value in &self.memory {
1642            let len = value.compute_size();
1643            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1644        };
1645        for value in &self.output {
1646            let len = value.compute_size();
1647            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1648        };
1649        if !self.timeline_label.is_empty() {
1650            my_size += ::protobuf::rt::string_size(8, &self.timeline_label);
1651        }
1652        if self.scheduled_micros != 0 {
1653            my_size += ::protobuf::rt::value_size(9, self.scheduled_micros, ::protobuf::wire_format::WireTypeVarint);
1654        }
1655        if self.thread_id != 0 {
1656            my_size += ::protobuf::rt::value_size(10, self.thread_id, ::protobuf::wire_format::WireTypeVarint);
1657        }
1658        for value in &self.referenced_tensor {
1659            let len = value.compute_size();
1660            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1661        };
1662        if let Some(ref v) = self.memory_stats.as_ref() {
1663            let len = v.compute_size();
1664            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1665        }
1666        if self.all_start_nanos != 0 {
1667            my_size += ::protobuf::rt::value_size(13, self.all_start_nanos, ::protobuf::wire_format::WireTypeVarint);
1668        }
1669        if self.op_start_rel_nanos != 0 {
1670            my_size += ::protobuf::rt::value_size(14, self.op_start_rel_nanos, ::protobuf::wire_format::WireTypeVarint);
1671        }
1672        if self.op_end_rel_nanos != 0 {
1673            my_size += ::protobuf::rt::value_size(15, self.op_end_rel_nanos, ::protobuf::wire_format::WireTypeVarint);
1674        }
1675        if self.all_end_rel_nanos != 0 {
1676            my_size += ::protobuf::rt::value_size(16, self.all_end_rel_nanos, ::protobuf::wire_format::WireTypeVarint);
1677        }
1678        if self.scheduled_nanos != 0 {
1679            my_size += ::protobuf::rt::value_size(17, self.scheduled_nanos, ::protobuf::wire_format::WireTypeVarint);
1680        }
1681        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1682        self.cached_size.set(my_size);
1683        my_size
1684    }
1685
1686    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1687        if !self.node_name.is_empty() {
1688            os.write_string(1, &self.node_name)?;
1689        }
1690        if self.all_start_micros != 0 {
1691            os.write_int64(2, self.all_start_micros)?;
1692        }
1693        if self.op_start_rel_micros != 0 {
1694            os.write_int64(3, self.op_start_rel_micros)?;
1695        }
1696        if self.op_end_rel_micros != 0 {
1697            os.write_int64(4, self.op_end_rel_micros)?;
1698        }
1699        if self.all_end_rel_micros != 0 {
1700            os.write_int64(5, self.all_end_rel_micros)?;
1701        }
1702        for v in &self.memory {
1703            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1704            os.write_raw_varint32(v.get_cached_size())?;
1705            v.write_to_with_cached_sizes(os)?;
1706        };
1707        for v in &self.output {
1708            os.write_tag(7, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1709            os.write_raw_varint32(v.get_cached_size())?;
1710            v.write_to_with_cached_sizes(os)?;
1711        };
1712        if !self.timeline_label.is_empty() {
1713            os.write_string(8, &self.timeline_label)?;
1714        }
1715        if self.scheduled_micros != 0 {
1716            os.write_int64(9, self.scheduled_micros)?;
1717        }
1718        if self.thread_id != 0 {
1719            os.write_uint32(10, self.thread_id)?;
1720        }
1721        for v in &self.referenced_tensor {
1722            os.write_tag(11, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1723            os.write_raw_varint32(v.get_cached_size())?;
1724            v.write_to_with_cached_sizes(os)?;
1725        };
1726        if let Some(ref v) = self.memory_stats.as_ref() {
1727            os.write_tag(12, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1728            os.write_raw_varint32(v.get_cached_size())?;
1729            v.write_to_with_cached_sizes(os)?;
1730        }
1731        if self.all_start_nanos != 0 {
1732            os.write_int64(13, self.all_start_nanos)?;
1733        }
1734        if self.op_start_rel_nanos != 0 {
1735            os.write_int64(14, self.op_start_rel_nanos)?;
1736        }
1737        if self.op_end_rel_nanos != 0 {
1738            os.write_int64(15, self.op_end_rel_nanos)?;
1739        }
1740        if self.all_end_rel_nanos != 0 {
1741            os.write_int64(16, self.all_end_rel_nanos)?;
1742        }
1743        if self.scheduled_nanos != 0 {
1744            os.write_int64(17, self.scheduled_nanos)?;
1745        }
1746        os.write_unknown_fields(self.get_unknown_fields())?;
1747        ::std::result::Result::Ok(())
1748    }
1749
1750    fn get_cached_size(&self) -> u32 {
1751        self.cached_size.get()
1752    }
1753
1754    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1755        &self.unknown_fields
1756    }
1757
1758    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1759        &mut self.unknown_fields
1760    }
1761
1762    fn as_any(&self) -> &dyn (::std::any::Any) {
1763        self as &dyn (::std::any::Any)
1764    }
1765    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1766        self as &mut dyn (::std::any::Any)
1767    }
1768    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1769        self
1770    }
1771
1772    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1773        Self::descriptor_static()
1774    }
1775
1776    fn new() -> NodeExecStats {
1777        NodeExecStats::new()
1778    }
1779
1780    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1781        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
1782        unsafe {
1783            descriptor.get(|| {
1784                let mut fields = ::std::vec::Vec::new();
1785                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1786                    "node_name",
1787                    |m: &NodeExecStats| { &m.node_name },
1788                    |m: &mut NodeExecStats| { &mut m.node_name },
1789                ));
1790                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1791                    "all_start_micros",
1792                    |m: &NodeExecStats| { &m.all_start_micros },
1793                    |m: &mut NodeExecStats| { &mut m.all_start_micros },
1794                ));
1795                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1796                    "op_start_rel_micros",
1797                    |m: &NodeExecStats| { &m.op_start_rel_micros },
1798                    |m: &mut NodeExecStats| { &mut m.op_start_rel_micros },
1799                ));
1800                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1801                    "op_end_rel_micros",
1802                    |m: &NodeExecStats| { &m.op_end_rel_micros },
1803                    |m: &mut NodeExecStats| { &mut m.op_end_rel_micros },
1804                ));
1805                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1806                    "all_end_rel_micros",
1807                    |m: &NodeExecStats| { &m.all_end_rel_micros },
1808                    |m: &mut NodeExecStats| { &mut m.all_end_rel_micros },
1809                ));
1810                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<AllocatorMemoryUsed>>(
1811                    "memory",
1812                    |m: &NodeExecStats| { &m.memory },
1813                    |m: &mut NodeExecStats| { &mut m.memory },
1814                ));
1815                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<NodeOutput>>(
1816                    "output",
1817                    |m: &NodeExecStats| { &m.output },
1818                    |m: &mut NodeExecStats| { &mut m.output },
1819                ));
1820                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1821                    "timeline_label",
1822                    |m: &NodeExecStats| { &m.timeline_label },
1823                    |m: &mut NodeExecStats| { &mut m.timeline_label },
1824                ));
1825                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1826                    "scheduled_micros",
1827                    |m: &NodeExecStats| { &m.scheduled_micros },
1828                    |m: &mut NodeExecStats| { &mut m.scheduled_micros },
1829                ));
1830                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeUint32>(
1831                    "thread_id",
1832                    |m: &NodeExecStats| { &m.thread_id },
1833                    |m: &mut NodeExecStats| { &mut m.thread_id },
1834                ));
1835                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::allocation_description::AllocationDescription>>(
1836                    "referenced_tensor",
1837                    |m: &NodeExecStats| { &m.referenced_tensor },
1838                    |m: &mut NodeExecStats| { &mut m.referenced_tensor },
1839                ));
1840                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<MemoryStats>>(
1841                    "memory_stats",
1842                    |m: &NodeExecStats| { &m.memory_stats },
1843                    |m: &mut NodeExecStats| { &mut m.memory_stats },
1844                ));
1845                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1846                    "all_start_nanos",
1847                    |m: &NodeExecStats| { &m.all_start_nanos },
1848                    |m: &mut NodeExecStats| { &mut m.all_start_nanos },
1849                ));
1850                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1851                    "op_start_rel_nanos",
1852                    |m: &NodeExecStats| { &m.op_start_rel_nanos },
1853                    |m: &mut NodeExecStats| { &mut m.op_start_rel_nanos },
1854                ));
1855                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1856                    "op_end_rel_nanos",
1857                    |m: &NodeExecStats| { &m.op_end_rel_nanos },
1858                    |m: &mut NodeExecStats| { &mut m.op_end_rel_nanos },
1859                ));
1860                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1861                    "all_end_rel_nanos",
1862                    |m: &NodeExecStats| { &m.all_end_rel_nanos },
1863                    |m: &mut NodeExecStats| { &mut m.all_end_rel_nanos },
1864                ));
1865                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1866                    "scheduled_nanos",
1867                    |m: &NodeExecStats| { &m.scheduled_nanos },
1868                    |m: &mut NodeExecStats| { &mut m.scheduled_nanos },
1869                ));
1870                ::protobuf::reflect::MessageDescriptor::new_pb_name::<NodeExecStats>(
1871                    "NodeExecStats",
1872                    fields,
1873                    file_descriptor_proto()
1874                )
1875            })
1876        }
1877    }
1878
1879    fn default_instance() -> &'static NodeExecStats {
1880        static mut instance: ::protobuf::lazy::Lazy<NodeExecStats> = ::protobuf::lazy::Lazy::INIT;
1881        unsafe {
1882            instance.get(NodeExecStats::new)
1883        }
1884    }
1885}
1886
1887impl ::protobuf::Clear for NodeExecStats {
1888    fn clear(&mut self) {
1889        self.node_name.clear();
1890        self.all_start_micros = 0;
1891        self.op_start_rel_micros = 0;
1892        self.op_end_rel_micros = 0;
1893        self.all_end_rel_micros = 0;
1894        self.memory.clear();
1895        self.output.clear();
1896        self.timeline_label.clear();
1897        self.scheduled_micros = 0;
1898        self.thread_id = 0;
1899        self.referenced_tensor.clear();
1900        self.memory_stats.clear();
1901        self.all_start_nanos = 0;
1902        self.op_start_rel_nanos = 0;
1903        self.op_end_rel_nanos = 0;
1904        self.all_end_rel_nanos = 0;
1905        self.scheduled_nanos = 0;
1906        self.unknown_fields.clear();
1907    }
1908}
1909
1910impl ::std::fmt::Debug for NodeExecStats {
1911    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1912        ::protobuf::text_format::fmt(self, f)
1913    }
1914}
1915
1916impl ::protobuf::reflect::ProtobufValue for NodeExecStats {
1917    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1918        ::protobuf::reflect::ReflectValueRef::Message(self)
1919    }
1920}
1921
1922#[derive(PartialEq,Clone,Default)]
1923pub struct DeviceStepStats {
1924    // message fields
1925    pub device: ::std::string::String,
1926    pub node_stats: ::protobuf::RepeatedField<NodeExecStats>,
1927    pub thread_names: ::std::collections::HashMap<u32, ::std::string::String>,
1928    // special fields
1929    pub unknown_fields: ::protobuf::UnknownFields,
1930    pub cached_size: ::protobuf::CachedSize,
1931}
1932
1933impl<'a> ::std::default::Default for &'a DeviceStepStats {
1934    fn default() -> &'a DeviceStepStats {
1935        <DeviceStepStats as ::protobuf::Message>::default_instance()
1936    }
1937}
1938
1939impl DeviceStepStats {
1940    pub fn new() -> DeviceStepStats {
1941        ::std::default::Default::default()
1942    }
1943
1944    // string device = 1;
1945
1946
1947    pub fn get_device(&self) -> &str {
1948        &self.device
1949    }
1950    pub fn clear_device(&mut self) {
1951        self.device.clear();
1952    }
1953
1954    // Param is passed by value, moved
1955    pub fn set_device(&mut self, v: ::std::string::String) {
1956        self.device = v;
1957    }
1958
1959    // Mutable pointer to the field.
1960    // If field is not initialized, it is initialized with default value first.
1961    pub fn mut_device(&mut self) -> &mut ::std::string::String {
1962        &mut self.device
1963    }
1964
1965    // Take field
1966    pub fn take_device(&mut self) -> ::std::string::String {
1967        ::std::mem::replace(&mut self.device, ::std::string::String::new())
1968    }
1969
1970    // repeated .tensorflow.NodeExecStats node_stats = 2;
1971
1972
1973    pub fn get_node_stats(&self) -> &[NodeExecStats] {
1974        &self.node_stats
1975    }
1976    pub fn clear_node_stats(&mut self) {
1977        self.node_stats.clear();
1978    }
1979
1980    // Param is passed by value, moved
1981    pub fn set_node_stats(&mut self, v: ::protobuf::RepeatedField<NodeExecStats>) {
1982        self.node_stats = v;
1983    }
1984
1985    // Mutable pointer to the field.
1986    pub fn mut_node_stats(&mut self) -> &mut ::protobuf::RepeatedField<NodeExecStats> {
1987        &mut self.node_stats
1988    }
1989
1990    // Take field
1991    pub fn take_node_stats(&mut self) -> ::protobuf::RepeatedField<NodeExecStats> {
1992        ::std::mem::replace(&mut self.node_stats, ::protobuf::RepeatedField::new())
1993    }
1994
1995    // repeated .tensorflow.DeviceStepStats.ThreadNamesEntry thread_names = 3;
1996
1997
1998    pub fn get_thread_names(&self) -> &::std::collections::HashMap<u32, ::std::string::String> {
1999        &self.thread_names
2000    }
2001    pub fn clear_thread_names(&mut self) {
2002        self.thread_names.clear();
2003    }
2004
2005    // Param is passed by value, moved
2006    pub fn set_thread_names(&mut self, v: ::std::collections::HashMap<u32, ::std::string::String>) {
2007        self.thread_names = v;
2008    }
2009
2010    // Mutable pointer to the field.
2011    pub fn mut_thread_names(&mut self) -> &mut ::std::collections::HashMap<u32, ::std::string::String> {
2012        &mut self.thread_names
2013    }
2014
2015    // Take field
2016    pub fn take_thread_names(&mut self) -> ::std::collections::HashMap<u32, ::std::string::String> {
2017        ::std::mem::replace(&mut self.thread_names, ::std::collections::HashMap::new())
2018    }
2019}
2020
2021impl ::protobuf::Message for DeviceStepStats {
2022    fn is_initialized(&self) -> bool {
2023        for v in &self.node_stats {
2024            if !v.is_initialized() {
2025                return false;
2026            }
2027        };
2028        true
2029    }
2030
2031    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2032        while !is.eof()? {
2033            let (field_number, wire_type) = is.read_tag_unpack()?;
2034            match field_number {
2035                1 => {
2036                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.device)?;
2037                },
2038                2 => {
2039                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.node_stats)?;
2040                },
2041                3 => {
2042                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeUint32, ::protobuf::types::ProtobufTypeString>(wire_type, is, &mut self.thread_names)?;
2043                },
2044                _ => {
2045                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
2046                },
2047            };
2048        }
2049        ::std::result::Result::Ok(())
2050    }
2051
2052    // Compute sizes of nested messages
2053    #[allow(unused_variables)]
2054    fn compute_size(&self) -> u32 {
2055        let mut my_size = 0;
2056        if !self.device.is_empty() {
2057            my_size += ::protobuf::rt::string_size(1, &self.device);
2058        }
2059        for value in &self.node_stats {
2060            let len = value.compute_size();
2061            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
2062        };
2063        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeUint32, ::protobuf::types::ProtobufTypeString>(3, &self.thread_names);
2064        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2065        self.cached_size.set(my_size);
2066        my_size
2067    }
2068
2069    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2070        if !self.device.is_empty() {
2071            os.write_string(1, &self.device)?;
2072        }
2073        for v in &self.node_stats {
2074            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
2075            os.write_raw_varint32(v.get_cached_size())?;
2076            v.write_to_with_cached_sizes(os)?;
2077        };
2078        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeUint32, ::protobuf::types::ProtobufTypeString>(3, &self.thread_names, os)?;
2079        os.write_unknown_fields(self.get_unknown_fields())?;
2080        ::std::result::Result::Ok(())
2081    }
2082
2083    fn get_cached_size(&self) -> u32 {
2084        self.cached_size.get()
2085    }
2086
2087    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2088        &self.unknown_fields
2089    }
2090
2091    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2092        &mut self.unknown_fields
2093    }
2094
2095    fn as_any(&self) -> &dyn (::std::any::Any) {
2096        self as &dyn (::std::any::Any)
2097    }
2098    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
2099        self as &mut dyn (::std::any::Any)
2100    }
2101    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
2102        self
2103    }
2104
2105    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
2106        Self::descriptor_static()
2107    }
2108
2109    fn new() -> DeviceStepStats {
2110        DeviceStepStats::new()
2111    }
2112
2113    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
2114        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
2115        unsafe {
2116            descriptor.get(|| {
2117                let mut fields = ::std::vec::Vec::new();
2118                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2119                    "device",
2120                    |m: &DeviceStepStats| { &m.device },
2121                    |m: &mut DeviceStepStats| { &mut m.device },
2122                ));
2123                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<NodeExecStats>>(
2124                    "node_stats",
2125                    |m: &DeviceStepStats| { &m.node_stats },
2126                    |m: &mut DeviceStepStats| { &mut m.node_stats },
2127                ));
2128                fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeUint32, ::protobuf::types::ProtobufTypeString>(
2129                    "thread_names",
2130                    |m: &DeviceStepStats| { &m.thread_names },
2131                    |m: &mut DeviceStepStats| { &mut m.thread_names },
2132                ));
2133                ::protobuf::reflect::MessageDescriptor::new_pb_name::<DeviceStepStats>(
2134                    "DeviceStepStats",
2135                    fields,
2136                    file_descriptor_proto()
2137                )
2138            })
2139        }
2140    }
2141
2142    fn default_instance() -> &'static DeviceStepStats {
2143        static mut instance: ::protobuf::lazy::Lazy<DeviceStepStats> = ::protobuf::lazy::Lazy::INIT;
2144        unsafe {
2145            instance.get(DeviceStepStats::new)
2146        }
2147    }
2148}
2149
2150impl ::protobuf::Clear for DeviceStepStats {
2151    fn clear(&mut self) {
2152        self.device.clear();
2153        self.node_stats.clear();
2154        self.thread_names.clear();
2155        self.unknown_fields.clear();
2156    }
2157}
2158
2159impl ::std::fmt::Debug for DeviceStepStats {
2160    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2161        ::protobuf::text_format::fmt(self, f)
2162    }
2163}
2164
2165impl ::protobuf::reflect::ProtobufValue for DeviceStepStats {
2166    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2167        ::protobuf::reflect::ReflectValueRef::Message(self)
2168    }
2169}
2170
2171#[derive(PartialEq,Clone,Default)]
2172pub struct StepStats {
2173    // message fields
2174    pub dev_stats: ::protobuf::RepeatedField<DeviceStepStats>,
2175    // special fields
2176    pub unknown_fields: ::protobuf::UnknownFields,
2177    pub cached_size: ::protobuf::CachedSize,
2178}
2179
2180impl<'a> ::std::default::Default for &'a StepStats {
2181    fn default() -> &'a StepStats {
2182        <StepStats as ::protobuf::Message>::default_instance()
2183    }
2184}
2185
2186impl StepStats {
2187    pub fn new() -> StepStats {
2188        ::std::default::Default::default()
2189    }
2190
2191    // repeated .tensorflow.DeviceStepStats dev_stats = 1;
2192
2193
2194    pub fn get_dev_stats(&self) -> &[DeviceStepStats] {
2195        &self.dev_stats
2196    }
2197    pub fn clear_dev_stats(&mut self) {
2198        self.dev_stats.clear();
2199    }
2200
2201    // Param is passed by value, moved
2202    pub fn set_dev_stats(&mut self, v: ::protobuf::RepeatedField<DeviceStepStats>) {
2203        self.dev_stats = v;
2204    }
2205
2206    // Mutable pointer to the field.
2207    pub fn mut_dev_stats(&mut self) -> &mut ::protobuf::RepeatedField<DeviceStepStats> {
2208        &mut self.dev_stats
2209    }
2210
2211    // Take field
2212    pub fn take_dev_stats(&mut self) -> ::protobuf::RepeatedField<DeviceStepStats> {
2213        ::std::mem::replace(&mut self.dev_stats, ::protobuf::RepeatedField::new())
2214    }
2215}
2216
2217impl ::protobuf::Message for StepStats {
2218    fn is_initialized(&self) -> bool {
2219        for v in &self.dev_stats {
2220            if !v.is_initialized() {
2221                return false;
2222            }
2223        };
2224        true
2225    }
2226
2227    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2228        while !is.eof()? {
2229            let (field_number, wire_type) = is.read_tag_unpack()?;
2230            match field_number {
2231                1 => {
2232                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.dev_stats)?;
2233                },
2234                _ => {
2235                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
2236                },
2237            };
2238        }
2239        ::std::result::Result::Ok(())
2240    }
2241
2242    // Compute sizes of nested messages
2243    #[allow(unused_variables)]
2244    fn compute_size(&self) -> u32 {
2245        let mut my_size = 0;
2246        for value in &self.dev_stats {
2247            let len = value.compute_size();
2248            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
2249        };
2250        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2251        self.cached_size.set(my_size);
2252        my_size
2253    }
2254
2255    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2256        for v in &self.dev_stats {
2257            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
2258            os.write_raw_varint32(v.get_cached_size())?;
2259            v.write_to_with_cached_sizes(os)?;
2260        };
2261        os.write_unknown_fields(self.get_unknown_fields())?;
2262        ::std::result::Result::Ok(())
2263    }
2264
2265    fn get_cached_size(&self) -> u32 {
2266        self.cached_size.get()
2267    }
2268
2269    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2270        &self.unknown_fields
2271    }
2272
2273    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2274        &mut self.unknown_fields
2275    }
2276
2277    fn as_any(&self) -> &dyn (::std::any::Any) {
2278        self as &dyn (::std::any::Any)
2279    }
2280    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
2281        self as &mut dyn (::std::any::Any)
2282    }
2283    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
2284        self
2285    }
2286
2287    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
2288        Self::descriptor_static()
2289    }
2290
2291    fn new() -> StepStats {
2292        StepStats::new()
2293    }
2294
2295    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
2296        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
2297        unsafe {
2298            descriptor.get(|| {
2299                let mut fields = ::std::vec::Vec::new();
2300                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<DeviceStepStats>>(
2301                    "dev_stats",
2302                    |m: &StepStats| { &m.dev_stats },
2303                    |m: &mut StepStats| { &mut m.dev_stats },
2304                ));
2305                ::protobuf::reflect::MessageDescriptor::new_pb_name::<StepStats>(
2306                    "StepStats",
2307                    fields,
2308                    file_descriptor_proto()
2309                )
2310            })
2311        }
2312    }
2313
2314    fn default_instance() -> &'static StepStats {
2315        static mut instance: ::protobuf::lazy::Lazy<StepStats> = ::protobuf::lazy::Lazy::INIT;
2316        unsafe {
2317            instance.get(StepStats::new)
2318        }
2319    }
2320}
2321
2322impl ::protobuf::Clear for StepStats {
2323    fn clear(&mut self) {
2324        self.dev_stats.clear();
2325        self.unknown_fields.clear();
2326    }
2327}
2328
2329impl ::std::fmt::Debug for StepStats {
2330    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2331        ::protobuf::text_format::fmt(self, f)
2332    }
2333}
2334
2335impl ::protobuf::reflect::ProtobufValue for StepStats {
2336    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2337        ::protobuf::reflect::ReflectValueRef::Message(self)
2338    }
2339}
2340
2341static file_descriptor_proto_data: &'static [u8] = b"\
2342    \n*tensorflow/core/framework/step_stats.proto\x12\ntensorflow\x1a6tensor\
2343    flow/core/framework/allocation_description.proto\x1a2tensorflow/core/fra\
2344    mework/tensor_description.proto\"V\n\x10AllocationRecord\x12!\n\x0calloc\
2345    _micros\x18\x01\x20\x01(\x03R\x0ballocMicros\x12\x1f\n\x0balloc_bytes\
2346    \x18\x02\x20\x01(\x03R\nallocBytes\"\x9d\x02\n\x13AllocatorMemoryUsed\
2347    \x12%\n\x0eallocator_name\x18\x01\x20\x01(\tR\rallocatorName\x12\x1f\n\
2348    \x0btotal_bytes\x18\x02\x20\x01(\x03R\ntotalBytes\x12\x1d\n\npeak_bytes\
2349    \x18\x03\x20\x01(\x03R\tpeakBytes\x12\x1d\n\nlive_bytes\x18\x04\x20\x01(\
2350    \x03R\tliveBytes\x12K\n\x12allocation_records\x18\x06\x20\x03(\x0b2\x1c.\
2351    tensorflow.AllocationRecordR\x11allocationRecords\x123\n\x16allocator_by\
2352    tes_in_use\x18\x05\x20\x01(\x03R\x13allocatorBytesInUse\"n\n\nNodeOutput\
2353    \x12\x12\n\x04slot\x18\x01\x20\x01(\x05R\x04slot\x12L\n\x12tensor_descri\
2354    ption\x18\x03\x20\x01(\x0b2\x1d.tensorflow.TensorDescriptionR\x11tensorD\
2355    escription\"\xfe\x02\n\x0bMemoryStats\x12(\n\x10temp_memory_size\x18\x01\
2356    \x20\x01(\x03R\x0etempMemorySize\x124\n\x16persistent_memory_size\x18\
2357    \x03\x20\x01(\x03R\x14persistentMemorySize\x12=\n\x1bpersistent_tensor_a\
2358    lloc_ids\x18\x05\x20\x03(\x03R\x18persistentTensorAllocIds\x129\n\x17dev\
2359    ice_temp_memory_size\x18\x02\x20\x01(\x03R\x14deviceTempMemorySizeB\x02\
2360    \x18\x01\x12E\n\x1ddevice_persistent_memory_size\x18\x04\x20\x01(\x03R\
2361    \x1adevicePersistentMemorySizeB\x02\x18\x01\x12N\n\"device_persistent_te\
2362    nsor_alloc_ids\x18\x06\x20\x03(\x03R\x1edevicePersistentTensorAllocIdsB\
2363    \x02\x18\x01\"\x93\x06\n\rNodeExecStats\x12\x1b\n\tnode_name\x18\x01\x20\
2364    \x01(\tR\x08nodeName\x12(\n\x10all_start_micros\x18\x02\x20\x01(\x03R\
2365    \x0eallStartMicros\x12-\n\x13op_start_rel_micros\x18\x03\x20\x01(\x03R\
2366    \x10opStartRelMicros\x12)\n\x11op_end_rel_micros\x18\x04\x20\x01(\x03R\
2367    \x0eopEndRelMicros\x12+\n\x12all_end_rel_micros\x18\x05\x20\x01(\x03R\
2368    \x0fallEndRelMicros\x127\n\x06memory\x18\x06\x20\x03(\x0b2\x1f.tensorflo\
2369    w.AllocatorMemoryUsedR\x06memory\x12.\n\x06output\x18\x07\x20\x03(\x0b2\
2370    \x16.tensorflow.NodeOutputR\x06output\x12%\n\x0etimeline_label\x18\x08\
2371    \x20\x01(\tR\rtimelineLabel\x12)\n\x10scheduled_micros\x18\t\x20\x01(\
2372    \x03R\x0fscheduledMicros\x12\x1b\n\tthread_id\x18\n\x20\x01(\rR\x08threa\
2373    dId\x12N\n\x11referenced_tensor\x18\x0b\x20\x03(\x0b2!.tensorflow.Alloca\
2374    tionDescriptionR\x10referencedTensor\x12:\n\x0cmemory_stats\x18\x0c\x20\
2375    \x01(\x0b2\x17.tensorflow.MemoryStatsR\x0bmemoryStats\x12&\n\x0fall_star\
2376    t_nanos\x18\r\x20\x01(\x03R\rallStartNanos\x12+\n\x12op_start_rel_nanos\
2377    \x18\x0e\x20\x01(\x03R\x0fopStartRelNanos\x12'\n\x10op_end_rel_nanos\x18\
2378    \x0f\x20\x01(\x03R\ropEndRelNanos\x12)\n\x11all_end_rel_nanos\x18\x10\
2379    \x20\x01(\x03R\x0eallEndRelNanos\x12'\n\x0fscheduled_nanos\x18\x11\x20\
2380    \x01(\x03R\x0escheduledNanos\"\xf4\x01\n\x0fDeviceStepStats\x12\x16\n\
2381    \x06device\x18\x01\x20\x01(\tR\x06device\x128\n\nnode_stats\x18\x02\x20\
2382    \x03(\x0b2\x19.tensorflow.NodeExecStatsR\tnodeStats\x12O\n\x0cthread_nam\
2383    es\x18\x03\x20\x03(\x0b2,.tensorflow.DeviceStepStats.ThreadNamesEntryR\
2384    \x0bthreadNames\x1a>\n\x10ThreadNamesEntry\x12\x10\n\x03key\x18\x01\x20\
2385    \x01(\rR\x03key\x12\x14\n\x05value\x18\x02\x20\x01(\tR\x05value:\x028\
2386    \x01\"E\n\tStepStats\x128\n\tdev_stats\x18\x01\x20\x03(\x0b2\x1b.tensorf\
2387    low.DeviceStepStatsR\x08devStatsB\x83\x01\n\x18org.tensorflow.frameworkB\
2388    \x0fStepStatsProtosP\x01ZQgithub.com/tensorflow/tensorflow/tensorflow/go\
2389    /core/framework/step_stats_go_proto\xf8\x01\x01J\xa5\x1a\n\x06\x12\x04\0\
2390    \0W\x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\x08\n\x01\x02\x12\x03\x02\0\
2391    \x13\n\t\n\x02\x03\0\x12\x03\x04\0@\n\t\n\x02\x03\x01\x12\x03\x05\0<\n\
2392    \x08\n\x01\x08\x12\x03\x07\0\x1f\n\t\n\x02\x08\x1f\x12\x03\x07\0\x1f\n\
2393    \x08\n\x01\x08\x12\x03\x08\00\n\t\n\x02\x08\x08\x12\x03\x08\00\n\x08\n\
2394    \x01\x08\x12\x03\t\0\"\n\t\n\x02\x08\n\x12\x03\t\0\"\n\x08\n\x01\x08\x12\
2395    \x03\n\01\n\t\n\x02\x08\x01\x12\x03\n\01\n\x08\n\x01\x08\x12\x03\x0b\0h\
2396    \n\t\n\x02\x08\x0b\x12\x03\x0b\0h\nO\n\x02\x04\0\x12\x04\x0e\0\x13\x01\
2397    \x1aC\x20An\x20allocation/de-allocation\x20operation\x20performed\x20by\
2398    \x20the\x20allocator.\n\n\n\n\x03\x04\0\x01\x12\x03\x0e\x08\x18\n.\n\x04\
2399    \x04\0\x02\0\x12\x03\x10\x02\x19\x1a!\x20The\x20timestamp\x20of\x20the\
2400    \x20operation.\n\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03\x10\x02\x07\n\x0c\n\
2401    \x05\x04\0\x02\0\x01\x12\x03\x10\x08\x14\n\x0c\n\x05\x04\0\x02\0\x03\x12\
2402    \x03\x10\x17\x18\nF\n\x04\x04\0\x02\x01\x12\x03\x12\x02\x18\x1a9\x20Numb\
2403    er\x20of\x20bytes\x20allocated,\x20or\x20de-allocated\x20if\x20negative.\
2404    \n\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x12\x02\x07\n\x0c\n\x05\x04\0\
2405    \x02\x01\x01\x12\x03\x12\x08\x13\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\
2406    \x12\x16\x17\n\n\n\x02\x04\x01\x12\x04\x15\0\"\x01\n\n\n\x03\x04\x01\x01\
2407    \x12\x03\x15\x08\x1b\n\x0b\n\x04\x04\x01\x02\0\x12\x03\x16\x02\x1c\n\x0c\
2408    \n\x05\x04\x01\x02\0\x05\x12\x03\x16\x02\x08\n\x0c\n\x05\x04\x01\x02\0\
2409    \x01\x12\x03\x16\t\x17\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03\x16\x1a\x1b\
2410    \n9\n\x04\x04\x01\x02\x01\x12\x03\x18\x02\x18\x1a,\x20These\x20are\x20pe\
2411    r-node\x20allocator\x20memory\x20stats.\n\n\x0c\n\x05\x04\x01\x02\x01\
2412    \x05\x12\x03\x18\x02\x07\n\x0c\n\x05\x04\x01\x02\x01\x01\x12\x03\x18\x08\
2413    \x13\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03\x18\x16\x17\n\x0b\n\x04\x04\
2414    \x01\x02\x02\x12\x03\x19\x02\x17\n\x0c\n\x05\x04\x01\x02\x02\x05\x12\x03\
2415    \x19\x02\x07\n\x0c\n\x05\x04\x01\x02\x02\x01\x12\x03\x19\x08\x12\n\x0c\n\
2416    \x05\x04\x01\x02\x02\x03\x12\x03\x19\x15\x16\n2\n\x04\x04\x01\x02\x03\
2417    \x12\x03\x1b\x02\x17\x1a%\x20The\x20bytes\x20that\x20are\x20not\x20deall\
2418    ocated.\n\n\x0c\n\x05\x04\x01\x02\x03\x05\x12\x03\x1b\x02\x07\n\x0c\n\
2419    \x05\x04\x01\x02\x03\x01\x12\x03\x1b\x08\x12\n\x0c\n\x05\x04\x01\x02\x03\
2420    \x03\x12\x03\x1b\x15\x16\n8\n\x04\x04\x01\x02\x04\x12\x03\x1d\x023\x1a+\
2421    \x20The\x20allocation\x20and\x20deallocation\x20timeline.\n\n\x0c\n\x05\
2422    \x04\x01\x02\x04\x04\x12\x03\x1d\x02\n\n\x0c\n\x05\x04\x01\x02\x04\x06\
2423    \x12\x03\x1d\x0b\x1b\n\x0c\n\x05\x04\x01\x02\x04\x01\x12\x03\x1d\x1c.\n\
2424    \x0c\n\x05\x04\x01\x02\x04\x03\x12\x03\x1d12\n\x89\x01\n\x04\x04\x01\x02\
2425    \x05\x12\x03!\x02#\x1a|\x20These\x20are\x20snapshots\x20of\x20the\x20ove\
2426    rall\x20allocator\x20memory\x20stats.\n\x20The\x20number\x20of\x20live\
2427    \x20bytes\x20currently\x20allocated\x20by\x20the\x20allocator.\n\n\x0c\n\
2428    \x05\x04\x01\x02\x05\x05\x12\x03!\x02\x07\n\x0c\n\x05\x04\x01\x02\x05\
2429    \x01\x12\x03!\x08\x1e\n\x0c\n\x05\x04\x01\x02\x05\x03\x12\x03!!\"\nK\n\
2430    \x02\x04\x02\x12\x04%\0(\x01\x1a?\x20Output\x20sizes\x20recorded\x20for\
2431    \x20a\x20single\x20execution\x20of\x20a\x20graph\x20node.\n\n\n\n\x03\
2432    \x04\x02\x01\x12\x03%\x08\x12\n\x0b\n\x04\x04\x02\x02\0\x12\x03&\x02\x11\
2433    \n\x0c\n\x05\x04\x02\x02\0\x05\x12\x03&\x02\x07\n\x0c\n\x05\x04\x02\x02\
2434    \0\x01\x12\x03&\x08\x0c\n\x0c\n\x05\x04\x02\x02\0\x03\x12\x03&\x0f\x10\n\
2435    \x0b\n\x04\x04\x02\x02\x01\x12\x03'\x02+\n\x0c\n\x05\x04\x02\x02\x01\x06\
2436    \x12\x03'\x02\x13\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\x03'\x14&\n\x0c\n\
2437    \x05\x04\x02\x02\x01\x03\x12\x03')*\n\"\n\x02\x04\x03\x12\x04+\03\x01\
2438    \x1a\x16\x20For\x20memory\x20tracking.\n\n\n\n\x03\x04\x03\x01\x12\x03+\
2439    \x08\x13\n\x0b\n\x04\x04\x03\x02\0\x12\x03,\x02\x1d\n\x0c\n\x05\x04\x03\
2440    \x02\0\x05\x12\x03,\x02\x07\n\x0c\n\x05\x04\x03\x02\0\x01\x12\x03,\x08\
2441    \x18\n\x0c\n\x05\x04\x03\x02\0\x03\x12\x03,\x1b\x1c\n\x0b\n\x04\x04\x03\
2442    \x02\x01\x12\x03-\x02#\n\x0c\n\x05\x04\x03\x02\x01\x05\x12\x03-\x02\x07\
2443    \n\x0c\n\x05\x04\x03\x02\x01\x01\x12\x03-\x08\x1e\n\x0c\n\x05\x04\x03\
2444    \x02\x01\x03\x12\x03-!\"\n\x0b\n\x04\x04\x03\x02\x02\x12\x03.\x021\n\x0c\
2445    \n\x05\x04\x03\x02\x02\x04\x12\x03.\x02\n\n\x0c\n\x05\x04\x03\x02\x02\
2446    \x05\x12\x03.\x0b\x10\n\x0c\n\x05\x04\x03\x02\x02\x01\x12\x03.\x11,\n\
2447    \x0c\n\x05\x04\x03\x02\x02\x03\x12\x03./0\n\x0b\n\x04\x04\x03\x02\x03\
2448    \x12\x030\x028\n\x0c\n\x05\x04\x03\x02\x03\x05\x12\x030\x02\x07\n\x0c\n\
2449    \x05\x04\x03\x02\x03\x01\x12\x030\x08\x1f\n\x0c\n\x05\x04\x03\x02\x03\
2450    \x03\x12\x030\"#\n\x0c\n\x05\x04\x03\x02\x03\x08\x12\x030$7\n\r\n\x06\
2451    \x04\x03\x02\x03\x08\x03\x12\x030%6\n\x0b\n\x04\x04\x03\x02\x04\x12\x031\
2452    \x02>\n\x0c\n\x05\x04\x03\x02\x04\x05\x12\x031\x02\x07\n\x0c\n\x05\x04\
2453    \x03\x02\x04\x01\x12\x031\x08%\n\x0c\n\x05\x04\x03\x02\x04\x03\x12\x031(\
2454    )\n\x0c\n\x05\x04\x03\x02\x04\x08\x12\x031*=\n\r\n\x06\x04\x03\x02\x04\
2455    \x08\x03\x12\x031+<\n\x0b\n\x04\x04\x03\x02\x05\x12\x032\x02L\n\x0c\n\
2456    \x05\x04\x03\x02\x05\x04\x12\x032\x02\n\n\x0c\n\x05\x04\x03\x02\x05\x05\
2457    \x12\x032\x0b\x10\n\x0c\n\x05\x04\x03\x02\x05\x01\x12\x032\x113\n\x0c\n\
2458    \x05\x04\x03\x02\x05\x03\x12\x03267\n\x0c\n\x05\x04\x03\x02\x05\x08\x12\
2459    \x0328K\n\r\n\x06\x04\x03\x02\x05\x08\x03\x12\x0329J\nN\n\x02\x04\x04\
2460    \x12\x046\0L\x01\x1aB\x20Time/size\x20stats\x20recorded\x20for\x20a\x20s\
2461    ingle\x20execution\x20of\x20a\x20graph\x20node.\n\n\n\n\x03\x04\x04\x01\
2462    \x12\x036\x08\x15\n\xd8\x01\n\x04\x04\x04\x02\0\x12\x03;\x02\x17\x1a\xca\
2463    \x01\x20TODO(tucker):\x20Use\x20some\x20more\x20compact\x20form\x20of\
2464    \x20node\x20identity\x20than\n\x20the\x20full\x20string\x20name.\x20\x20\
2465    Either\x20all\x20processes\x20should\x20agree\x20on\x20a\n\x20global\x20\
2466    id\x20(cost_id?)\x20for\x20each\x20node,\x20or\x20we\x20should\x20use\
2467    \x20a\x20hash\x20of\n\x20the\x20name.\n\n\x0c\n\x05\x04\x04\x02\0\x05\
2468    \x12\x03;\x02\x08\n\x0c\n\x05\x04\x04\x02\0\x01\x12\x03;\t\x12\n\x0c\n\
2469    \x05\x04\x04\x02\0\x03\x12\x03;\x15\x16\n\x0b\n\x04\x04\x04\x02\x01\x12\
2470    \x03<\x02\x1d\n\x0c\n\x05\x04\x04\x02\x01\x05\x12\x03<\x02\x07\n\x0c\n\
2471    \x05\x04\x04\x02\x01\x01\x12\x03<\x08\x18\n\x0c\n\x05\x04\x04\x02\x01\
2472    \x03\x12\x03<\x1b\x1c\n\x0b\n\x04\x04\x04\x02\x02\x12\x03=\x02\x20\n\x0c\
2473    \n\x05\x04\x04\x02\x02\x05\x12\x03=\x02\x07\n\x0c\n\x05\x04\x04\x02\x02\
2474    \x01\x12\x03=\x08\x1b\n\x0c\n\x05\x04\x04\x02\x02\x03\x12\x03=\x1e\x1f\n\
2475    \x0b\n\x04\x04\x04\x02\x03\x12\x03>\x02\x1e\n\x0c\n\x05\x04\x04\x02\x03\
2476    \x05\x12\x03>\x02\x07\n\x0c\n\x05\x04\x04\x02\x03\x01\x12\x03>\x08\x19\n\
2477    \x0c\n\x05\x04\x04\x02\x03\x03\x12\x03>\x1c\x1d\n\x0b\n\x04\x04\x04\x02\
2478    \x04\x12\x03?\x02\x1f\n\x0c\n\x05\x04\x04\x02\x04\x05\x12\x03?\x02\x07\n\
2479    \x0c\n\x05\x04\x04\x02\x04\x01\x12\x03?\x08\x1a\n\x0c\n\x05\x04\x04\x02\
2480    \x04\x03\x12\x03?\x1d\x1e\n\x0b\n\x04\x04\x04\x02\x05\x12\x03@\x02*\n\
2481    \x0c\n\x05\x04\x04\x02\x05\x04\x12\x03@\x02\n\n\x0c\n\x05\x04\x04\x02\
2482    \x05\x06\x12\x03@\x0b\x1e\n\x0c\n\x05\x04\x04\x02\x05\x01\x12\x03@\x1f%\
2483    \n\x0c\n\x05\x04\x04\x02\x05\x03\x12\x03@()\n\x0b\n\x04\x04\x04\x02\x06\
2484    \x12\x03A\x02!\n\x0c\n\x05\x04\x04\x02\x06\x04\x12\x03A\x02\n\n\x0c\n\
2485    \x05\x04\x04\x02\x06\x06\x12\x03A\x0b\x15\n\x0c\n\x05\x04\x04\x02\x06\
2486    \x01\x12\x03A\x16\x1c\n\x0c\n\x05\x04\x04\x02\x06\x03\x12\x03A\x1f\x20\n\
2487    \x0b\n\x04\x04\x04\x02\x07\x12\x03B\x02\x1c\n\x0c\n\x05\x04\x04\x02\x07\
2488    \x05\x12\x03B\x02\x08\n\x0c\n\x05\x04\x04\x02\x07\x01\x12\x03B\t\x17\n\
2489    \x0c\n\x05\x04\x04\x02\x07\x03\x12\x03B\x1a\x1b\n\x0b\n\x04\x04\x04\x02\
2490    \x08\x12\x03C\x02\x1d\n\x0c\n\x05\x04\x04\x02\x08\x05\x12\x03C\x02\x07\n\
2491    \x0c\n\x05\x04\x04\x02\x08\x01\x12\x03C\x08\x18\n\x0c\n\x05\x04\x04\x02\
2492    \x08\x03\x12\x03C\x1b\x1c\n\x0b\n\x04\x04\x04\x02\t\x12\x03D\x02\x18\n\
2493    \x0c\n\x05\x04\x04\x02\t\x05\x12\x03D\x02\x08\n\x0c\n\x05\x04\x04\x02\t\
2494    \x01\x12\x03D\t\x12\n\x0c\n\x05\x04\x04\x02\t\x03\x12\x03D\x15\x17\n\x0b\
2495    \n\x04\x04\x04\x02\n\x12\x03E\x028\n\x0c\n\x05\x04\x04\x02\n\x04\x12\x03\
2496    E\x02\n\n\x0c\n\x05\x04\x04\x02\n\x06\x12\x03E\x0b\x20\n\x0c\n\x05\x04\
2497    \x04\x02\n\x01\x12\x03E!2\n\x0c\n\x05\x04\x04\x02\n\x03\x12\x03E57\n\x0b\
2498    \n\x04\x04\x04\x02\x0b\x12\x03F\x02\x20\n\x0c\n\x05\x04\x04\x02\x0b\x06\
2499    \x12\x03F\x02\r\n\x0c\n\x05\x04\x04\x02\x0b\x01\x12\x03F\x0e\x1a\n\x0c\n\
2500    \x05\x04\x04\x02\x0b\x03\x12\x03F\x1d\x1f\n\x0b\n\x04\x04\x04\x02\x0c\
2501    \x12\x03G\x02\x1d\n\x0c\n\x05\x04\x04\x02\x0c\x05\x12\x03G\x02\x07\n\x0c\
2502    \n\x05\x04\x04\x02\x0c\x01\x12\x03G\x08\x17\n\x0c\n\x05\x04\x04\x02\x0c\
2503    \x03\x12\x03G\x1a\x1c\n\x0b\n\x04\x04\x04\x02\r\x12\x03H\x02\x20\n\x0c\n\
2504    \x05\x04\x04\x02\r\x05\x12\x03H\x02\x07\n\x0c\n\x05\x04\x04\x02\r\x01\
2505    \x12\x03H\x08\x1a\n\x0c\n\x05\x04\x04\x02\r\x03\x12\x03H\x1d\x1f\n\x0b\n\
2506    \x04\x04\x04\x02\x0e\x12\x03I\x02\x1e\n\x0c\n\x05\x04\x04\x02\x0e\x05\
2507    \x12\x03I\x02\x07\n\x0c\n\x05\x04\x04\x02\x0e\x01\x12\x03I\x08\x18\n\x0c\
2508    \n\x05\x04\x04\x02\x0e\x03\x12\x03I\x1b\x1d\n\x0b\n\x04\x04\x04\x02\x0f\
2509    \x12\x03J\x02\x1f\n\x0c\n\x05\x04\x04\x02\x0f\x05\x12\x03J\x02\x07\n\x0c\
2510    \n\x05\x04\x04\x02\x0f\x01\x12\x03J\x08\x19\n\x0c\n\x05\x04\x04\x02\x0f\
2511    \x03\x12\x03J\x1c\x1e\n\x0b\n\x04\x04\x04\x02\x10\x12\x03K\x02\x1d\n\x0c\
2512    \n\x05\x04\x04\x02\x10\x05\x12\x03K\x02\x07\n\x0c\n\x05\x04\x04\x02\x10\
2513    \x01\x12\x03K\x08\x17\n\x0c\n\x05\x04\x04\x02\x10\x03\x12\x03K\x1a\x1c\n\
2514    \n\n\x02\x04\x05\x12\x04N\0S\x01\n\n\n\x03\x04\x05\x01\x12\x03N\x08\x17\
2515    \n\x0b\n\x04\x04\x05\x02\0\x12\x03O\x02\x14\n\x0c\n\x05\x04\x05\x02\0\
2516    \x05\x12\x03O\x02\x08\n\x0c\n\x05\x04\x05\x02\0\x01\x12\x03O\t\x0f\n\x0c\
2517    \n\x05\x04\x05\x02\0\x03\x12\x03O\x12\x13\n\x0b\n\x04\x04\x05\x02\x01\
2518    \x12\x03P\x02(\n\x0c\n\x05\x04\x05\x02\x01\x04\x12\x03P\x02\n\n\x0c\n\
2519    \x05\x04\x05\x02\x01\x06\x12\x03P\x0b\x18\n\x0c\n\x05\x04\x05\x02\x01\
2520    \x01\x12\x03P\x19#\n\x0c\n\x05\x04\x05\x02\x01\x03\x12\x03P&'\n$\n\x04\
2521    \x04\x05\x02\x02\x12\x03R\x02'\x1a\x17\x20Its\x20key\x20is\x20thread\x20\
2522    id.\n\n\x0c\n\x05\x04\x05\x02\x02\x06\x12\x03R\x02\x15\n\x0c\n\x05\x04\
2523    \x05\x02\x02\x01\x12\x03R\x16\"\n\x0c\n\x05\x04\x05\x02\x02\x03\x12\x03R\
2524    %&\n\n\n\x02\x04\x06\x12\x04U\0W\x01\n\n\n\x03\x04\x06\x01\x12\x03U\x08\
2525    \x11\n\x0b\n\x04\x04\x06\x02\0\x12\x03V\x02)\n\x0c\n\x05\x04\x06\x02\0\
2526    \x04\x12\x03V\x02\n\n\x0c\n\x05\x04\x06\x02\0\x06\x12\x03V\x0b\x1a\n\x0c\
2527    \n\x05\x04\x06\x02\0\x01\x12\x03V\x1b$\n\x0c\n\x05\x04\x06\x02\0\x03\x12\
2528    \x03V'(b\x06proto3\
2529";
2530
2531static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy::INIT;
2532
2533fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
2534    ::protobuf::parse_from_bytes(file_descriptor_proto_data).unwrap()
2535}
2536
2537pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
2538    unsafe {
2539        file_descriptor_proto_lazy.get(|| {
2540            parse_descriptor_proto()
2541        })
2542    }
2543}