tensorflow_serving_client/
config.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/protobuf/config.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 GPUOptions {
31    // message fields
32    pub per_process_gpu_memory_fraction: f64,
33    pub allow_growth: bool,
34    pub allocator_type: ::std::string::String,
35    pub deferred_deletion_bytes: i64,
36    pub visible_device_list: ::std::string::String,
37    pub polling_active_delay_usecs: i32,
38    pub polling_inactive_delay_msecs: i32,
39    pub force_gpu_compatible: bool,
40    pub experimental: ::protobuf::SingularPtrField<GPUOptions_Experimental>,
41    // special fields
42    pub unknown_fields: ::protobuf::UnknownFields,
43    pub cached_size: ::protobuf::CachedSize,
44}
45
46impl<'a> ::std::default::Default for &'a GPUOptions {
47    fn default() -> &'a GPUOptions {
48        <GPUOptions as ::protobuf::Message>::default_instance()
49    }
50}
51
52impl GPUOptions {
53    pub fn new() -> GPUOptions {
54        ::std::default::Default::default()
55    }
56
57    // double per_process_gpu_memory_fraction = 1;
58
59
60    pub fn get_per_process_gpu_memory_fraction(&self) -> f64 {
61        self.per_process_gpu_memory_fraction
62    }
63    pub fn clear_per_process_gpu_memory_fraction(&mut self) {
64        self.per_process_gpu_memory_fraction = 0.;
65    }
66
67    // Param is passed by value, moved
68    pub fn set_per_process_gpu_memory_fraction(&mut self, v: f64) {
69        self.per_process_gpu_memory_fraction = v;
70    }
71
72    // bool allow_growth = 4;
73
74
75    pub fn get_allow_growth(&self) -> bool {
76        self.allow_growth
77    }
78    pub fn clear_allow_growth(&mut self) {
79        self.allow_growth = false;
80    }
81
82    // Param is passed by value, moved
83    pub fn set_allow_growth(&mut self, v: bool) {
84        self.allow_growth = v;
85    }
86
87    // string allocator_type = 2;
88
89
90    pub fn get_allocator_type(&self) -> &str {
91        &self.allocator_type
92    }
93    pub fn clear_allocator_type(&mut self) {
94        self.allocator_type.clear();
95    }
96
97    // Param is passed by value, moved
98    pub fn set_allocator_type(&mut self, v: ::std::string::String) {
99        self.allocator_type = v;
100    }
101
102    // Mutable pointer to the field.
103    // If field is not initialized, it is initialized with default value first.
104    pub fn mut_allocator_type(&mut self) -> &mut ::std::string::String {
105        &mut self.allocator_type
106    }
107
108    // Take field
109    pub fn take_allocator_type(&mut self) -> ::std::string::String {
110        ::std::mem::replace(&mut self.allocator_type, ::std::string::String::new())
111    }
112
113    // int64 deferred_deletion_bytes = 3;
114
115
116    pub fn get_deferred_deletion_bytes(&self) -> i64 {
117        self.deferred_deletion_bytes
118    }
119    pub fn clear_deferred_deletion_bytes(&mut self) {
120        self.deferred_deletion_bytes = 0;
121    }
122
123    // Param is passed by value, moved
124    pub fn set_deferred_deletion_bytes(&mut self, v: i64) {
125        self.deferred_deletion_bytes = v;
126    }
127
128    // string visible_device_list = 5;
129
130
131    pub fn get_visible_device_list(&self) -> &str {
132        &self.visible_device_list
133    }
134    pub fn clear_visible_device_list(&mut self) {
135        self.visible_device_list.clear();
136    }
137
138    // Param is passed by value, moved
139    pub fn set_visible_device_list(&mut self, v: ::std::string::String) {
140        self.visible_device_list = v;
141    }
142
143    // Mutable pointer to the field.
144    // If field is not initialized, it is initialized with default value first.
145    pub fn mut_visible_device_list(&mut self) -> &mut ::std::string::String {
146        &mut self.visible_device_list
147    }
148
149    // Take field
150    pub fn take_visible_device_list(&mut self) -> ::std::string::String {
151        ::std::mem::replace(&mut self.visible_device_list, ::std::string::String::new())
152    }
153
154    // int32 polling_active_delay_usecs = 6;
155
156
157    pub fn get_polling_active_delay_usecs(&self) -> i32 {
158        self.polling_active_delay_usecs
159    }
160    pub fn clear_polling_active_delay_usecs(&mut self) {
161        self.polling_active_delay_usecs = 0;
162    }
163
164    // Param is passed by value, moved
165    pub fn set_polling_active_delay_usecs(&mut self, v: i32) {
166        self.polling_active_delay_usecs = v;
167    }
168
169    // int32 polling_inactive_delay_msecs = 7;
170
171
172    pub fn get_polling_inactive_delay_msecs(&self) -> i32 {
173        self.polling_inactive_delay_msecs
174    }
175    pub fn clear_polling_inactive_delay_msecs(&mut self) {
176        self.polling_inactive_delay_msecs = 0;
177    }
178
179    // Param is passed by value, moved
180    pub fn set_polling_inactive_delay_msecs(&mut self, v: i32) {
181        self.polling_inactive_delay_msecs = v;
182    }
183
184    // bool force_gpu_compatible = 8;
185
186
187    pub fn get_force_gpu_compatible(&self) -> bool {
188        self.force_gpu_compatible
189    }
190    pub fn clear_force_gpu_compatible(&mut self) {
191        self.force_gpu_compatible = false;
192    }
193
194    // Param is passed by value, moved
195    pub fn set_force_gpu_compatible(&mut self, v: bool) {
196        self.force_gpu_compatible = v;
197    }
198
199    // .tensorflow.GPUOptions.Experimental experimental = 9;
200
201
202    pub fn get_experimental(&self) -> &GPUOptions_Experimental {
203        self.experimental.as_ref().unwrap_or_else(|| GPUOptions_Experimental::default_instance())
204    }
205    pub fn clear_experimental(&mut self) {
206        self.experimental.clear();
207    }
208
209    pub fn has_experimental(&self) -> bool {
210        self.experimental.is_some()
211    }
212
213    // Param is passed by value, moved
214    pub fn set_experimental(&mut self, v: GPUOptions_Experimental) {
215        self.experimental = ::protobuf::SingularPtrField::some(v);
216    }
217
218    // Mutable pointer to the field.
219    // If field is not initialized, it is initialized with default value first.
220    pub fn mut_experimental(&mut self) -> &mut GPUOptions_Experimental {
221        if self.experimental.is_none() {
222            self.experimental.set_default();
223        }
224        self.experimental.as_mut().unwrap()
225    }
226
227    // Take field
228    pub fn take_experimental(&mut self) -> GPUOptions_Experimental {
229        self.experimental.take().unwrap_or_else(|| GPUOptions_Experimental::new())
230    }
231}
232
233impl ::protobuf::Message for GPUOptions {
234    fn is_initialized(&self) -> bool {
235        for v in &self.experimental {
236            if !v.is_initialized() {
237                return false;
238            }
239        };
240        true
241    }
242
243    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
244        while !is.eof()? {
245            let (field_number, wire_type) = is.read_tag_unpack()?;
246            match field_number {
247                1 => {
248                    if wire_type != ::protobuf::wire_format::WireTypeFixed64 {
249                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
250                    }
251                    let tmp = is.read_double()?;
252                    self.per_process_gpu_memory_fraction = tmp;
253                },
254                4 => {
255                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
256                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
257                    }
258                    let tmp = is.read_bool()?;
259                    self.allow_growth = tmp;
260                },
261                2 => {
262                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.allocator_type)?;
263                },
264                3 => {
265                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
266                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
267                    }
268                    let tmp = is.read_int64()?;
269                    self.deferred_deletion_bytes = tmp;
270                },
271                5 => {
272                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.visible_device_list)?;
273                },
274                6 => {
275                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
276                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
277                    }
278                    let tmp = is.read_int32()?;
279                    self.polling_active_delay_usecs = tmp;
280                },
281                7 => {
282                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
283                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
284                    }
285                    let tmp = is.read_int32()?;
286                    self.polling_inactive_delay_msecs = tmp;
287                },
288                8 => {
289                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
290                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
291                    }
292                    let tmp = is.read_bool()?;
293                    self.force_gpu_compatible = tmp;
294                },
295                9 => {
296                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.experimental)?;
297                },
298                _ => {
299                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
300                },
301            };
302        }
303        ::std::result::Result::Ok(())
304    }
305
306    // Compute sizes of nested messages
307    #[allow(unused_variables)]
308    fn compute_size(&self) -> u32 {
309        let mut my_size = 0;
310        if self.per_process_gpu_memory_fraction != 0. {
311            my_size += 9;
312        }
313        if self.allow_growth != false {
314            my_size += 2;
315        }
316        if !self.allocator_type.is_empty() {
317            my_size += ::protobuf::rt::string_size(2, &self.allocator_type);
318        }
319        if self.deferred_deletion_bytes != 0 {
320            my_size += ::protobuf::rt::value_size(3, self.deferred_deletion_bytes, ::protobuf::wire_format::WireTypeVarint);
321        }
322        if !self.visible_device_list.is_empty() {
323            my_size += ::protobuf::rt::string_size(5, &self.visible_device_list);
324        }
325        if self.polling_active_delay_usecs != 0 {
326            my_size += ::protobuf::rt::value_size(6, self.polling_active_delay_usecs, ::protobuf::wire_format::WireTypeVarint);
327        }
328        if self.polling_inactive_delay_msecs != 0 {
329            my_size += ::protobuf::rt::value_size(7, self.polling_inactive_delay_msecs, ::protobuf::wire_format::WireTypeVarint);
330        }
331        if self.force_gpu_compatible != false {
332            my_size += 2;
333        }
334        if let Some(ref v) = self.experimental.as_ref() {
335            let len = v.compute_size();
336            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
337        }
338        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
339        self.cached_size.set(my_size);
340        my_size
341    }
342
343    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
344        if self.per_process_gpu_memory_fraction != 0. {
345            os.write_double(1, self.per_process_gpu_memory_fraction)?;
346        }
347        if self.allow_growth != false {
348            os.write_bool(4, self.allow_growth)?;
349        }
350        if !self.allocator_type.is_empty() {
351            os.write_string(2, &self.allocator_type)?;
352        }
353        if self.deferred_deletion_bytes != 0 {
354            os.write_int64(3, self.deferred_deletion_bytes)?;
355        }
356        if !self.visible_device_list.is_empty() {
357            os.write_string(5, &self.visible_device_list)?;
358        }
359        if self.polling_active_delay_usecs != 0 {
360            os.write_int32(6, self.polling_active_delay_usecs)?;
361        }
362        if self.polling_inactive_delay_msecs != 0 {
363            os.write_int32(7, self.polling_inactive_delay_msecs)?;
364        }
365        if self.force_gpu_compatible != false {
366            os.write_bool(8, self.force_gpu_compatible)?;
367        }
368        if let Some(ref v) = self.experimental.as_ref() {
369            os.write_tag(9, ::protobuf::wire_format::WireTypeLengthDelimited)?;
370            os.write_raw_varint32(v.get_cached_size())?;
371            v.write_to_with_cached_sizes(os)?;
372        }
373        os.write_unknown_fields(self.get_unknown_fields())?;
374        ::std::result::Result::Ok(())
375    }
376
377    fn get_cached_size(&self) -> u32 {
378        self.cached_size.get()
379    }
380
381    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
382        &self.unknown_fields
383    }
384
385    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
386        &mut self.unknown_fields
387    }
388
389    fn as_any(&self) -> &dyn (::std::any::Any) {
390        self as &dyn (::std::any::Any)
391    }
392    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
393        self as &mut dyn (::std::any::Any)
394    }
395    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
396        self
397    }
398
399    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
400        Self::descriptor_static()
401    }
402
403    fn new() -> GPUOptions {
404        GPUOptions::new()
405    }
406
407    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
408        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
409        unsafe {
410            descriptor.get(|| {
411                let mut fields = ::std::vec::Vec::new();
412                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeDouble>(
413                    "per_process_gpu_memory_fraction",
414                    |m: &GPUOptions| { &m.per_process_gpu_memory_fraction },
415                    |m: &mut GPUOptions| { &mut m.per_process_gpu_memory_fraction },
416                ));
417                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
418                    "allow_growth",
419                    |m: &GPUOptions| { &m.allow_growth },
420                    |m: &mut GPUOptions| { &mut m.allow_growth },
421                ));
422                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
423                    "allocator_type",
424                    |m: &GPUOptions| { &m.allocator_type },
425                    |m: &mut GPUOptions| { &mut m.allocator_type },
426                ));
427                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
428                    "deferred_deletion_bytes",
429                    |m: &GPUOptions| { &m.deferred_deletion_bytes },
430                    |m: &mut GPUOptions| { &mut m.deferred_deletion_bytes },
431                ));
432                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
433                    "visible_device_list",
434                    |m: &GPUOptions| { &m.visible_device_list },
435                    |m: &mut GPUOptions| { &mut m.visible_device_list },
436                ));
437                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
438                    "polling_active_delay_usecs",
439                    |m: &GPUOptions| { &m.polling_active_delay_usecs },
440                    |m: &mut GPUOptions| { &mut m.polling_active_delay_usecs },
441                ));
442                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
443                    "polling_inactive_delay_msecs",
444                    |m: &GPUOptions| { &m.polling_inactive_delay_msecs },
445                    |m: &mut GPUOptions| { &mut m.polling_inactive_delay_msecs },
446                ));
447                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
448                    "force_gpu_compatible",
449                    |m: &GPUOptions| { &m.force_gpu_compatible },
450                    |m: &mut GPUOptions| { &mut m.force_gpu_compatible },
451                ));
452                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<GPUOptions_Experimental>>(
453                    "experimental",
454                    |m: &GPUOptions| { &m.experimental },
455                    |m: &mut GPUOptions| { &mut m.experimental },
456                ));
457                ::protobuf::reflect::MessageDescriptor::new_pb_name::<GPUOptions>(
458                    "GPUOptions",
459                    fields,
460                    file_descriptor_proto()
461                )
462            })
463        }
464    }
465
466    fn default_instance() -> &'static GPUOptions {
467        static mut instance: ::protobuf::lazy::Lazy<GPUOptions> = ::protobuf::lazy::Lazy::INIT;
468        unsafe {
469            instance.get(GPUOptions::new)
470        }
471    }
472}
473
474impl ::protobuf::Clear for GPUOptions {
475    fn clear(&mut self) {
476        self.per_process_gpu_memory_fraction = 0.;
477        self.allow_growth = false;
478        self.allocator_type.clear();
479        self.deferred_deletion_bytes = 0;
480        self.visible_device_list.clear();
481        self.polling_active_delay_usecs = 0;
482        self.polling_inactive_delay_msecs = 0;
483        self.force_gpu_compatible = false;
484        self.experimental.clear();
485        self.unknown_fields.clear();
486    }
487}
488
489impl ::std::fmt::Debug for GPUOptions {
490    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
491        ::protobuf::text_format::fmt(self, f)
492    }
493}
494
495impl ::protobuf::reflect::ProtobufValue for GPUOptions {
496    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
497        ::protobuf::reflect::ReflectValueRef::Message(self)
498    }
499}
500
501#[derive(PartialEq,Clone,Default)]
502pub struct GPUOptions_Experimental {
503    // message fields
504    pub virtual_devices: ::protobuf::RepeatedField<GPUOptions_Experimental_VirtualDevices>,
505    pub use_unified_memory: bool,
506    pub num_dev_to_dev_copy_streams: i32,
507    pub collective_ring_order: ::std::string::String,
508    pub timestamped_allocator: bool,
509    pub kernel_tracker_max_interval: i32,
510    pub kernel_tracker_max_bytes: i32,
511    pub kernel_tracker_max_pending: i32,
512    // special fields
513    pub unknown_fields: ::protobuf::UnknownFields,
514    pub cached_size: ::protobuf::CachedSize,
515}
516
517impl<'a> ::std::default::Default for &'a GPUOptions_Experimental {
518    fn default() -> &'a GPUOptions_Experimental {
519        <GPUOptions_Experimental as ::protobuf::Message>::default_instance()
520    }
521}
522
523impl GPUOptions_Experimental {
524    pub fn new() -> GPUOptions_Experimental {
525        ::std::default::Default::default()
526    }
527
528    // repeated .tensorflow.GPUOptions.Experimental.VirtualDevices virtual_devices = 1;
529
530
531    pub fn get_virtual_devices(&self) -> &[GPUOptions_Experimental_VirtualDevices] {
532        &self.virtual_devices
533    }
534    pub fn clear_virtual_devices(&mut self) {
535        self.virtual_devices.clear();
536    }
537
538    // Param is passed by value, moved
539    pub fn set_virtual_devices(&mut self, v: ::protobuf::RepeatedField<GPUOptions_Experimental_VirtualDevices>) {
540        self.virtual_devices = v;
541    }
542
543    // Mutable pointer to the field.
544    pub fn mut_virtual_devices(&mut self) -> &mut ::protobuf::RepeatedField<GPUOptions_Experimental_VirtualDevices> {
545        &mut self.virtual_devices
546    }
547
548    // Take field
549    pub fn take_virtual_devices(&mut self) -> ::protobuf::RepeatedField<GPUOptions_Experimental_VirtualDevices> {
550        ::std::mem::replace(&mut self.virtual_devices, ::protobuf::RepeatedField::new())
551    }
552
553    // bool use_unified_memory = 2;
554
555
556    pub fn get_use_unified_memory(&self) -> bool {
557        self.use_unified_memory
558    }
559    pub fn clear_use_unified_memory(&mut self) {
560        self.use_unified_memory = false;
561    }
562
563    // Param is passed by value, moved
564    pub fn set_use_unified_memory(&mut self, v: bool) {
565        self.use_unified_memory = v;
566    }
567
568    // int32 num_dev_to_dev_copy_streams = 3;
569
570
571    pub fn get_num_dev_to_dev_copy_streams(&self) -> i32 {
572        self.num_dev_to_dev_copy_streams
573    }
574    pub fn clear_num_dev_to_dev_copy_streams(&mut self) {
575        self.num_dev_to_dev_copy_streams = 0;
576    }
577
578    // Param is passed by value, moved
579    pub fn set_num_dev_to_dev_copy_streams(&mut self, v: i32) {
580        self.num_dev_to_dev_copy_streams = v;
581    }
582
583    // string collective_ring_order = 4;
584
585
586    pub fn get_collective_ring_order(&self) -> &str {
587        &self.collective_ring_order
588    }
589    pub fn clear_collective_ring_order(&mut self) {
590        self.collective_ring_order.clear();
591    }
592
593    // Param is passed by value, moved
594    pub fn set_collective_ring_order(&mut self, v: ::std::string::String) {
595        self.collective_ring_order = v;
596    }
597
598    // Mutable pointer to the field.
599    // If field is not initialized, it is initialized with default value first.
600    pub fn mut_collective_ring_order(&mut self) -> &mut ::std::string::String {
601        &mut self.collective_ring_order
602    }
603
604    // Take field
605    pub fn take_collective_ring_order(&mut self) -> ::std::string::String {
606        ::std::mem::replace(&mut self.collective_ring_order, ::std::string::String::new())
607    }
608
609    // bool timestamped_allocator = 5;
610
611
612    pub fn get_timestamped_allocator(&self) -> bool {
613        self.timestamped_allocator
614    }
615    pub fn clear_timestamped_allocator(&mut self) {
616        self.timestamped_allocator = false;
617    }
618
619    // Param is passed by value, moved
620    pub fn set_timestamped_allocator(&mut self, v: bool) {
621        self.timestamped_allocator = v;
622    }
623
624    // int32 kernel_tracker_max_interval = 7;
625
626
627    pub fn get_kernel_tracker_max_interval(&self) -> i32 {
628        self.kernel_tracker_max_interval
629    }
630    pub fn clear_kernel_tracker_max_interval(&mut self) {
631        self.kernel_tracker_max_interval = 0;
632    }
633
634    // Param is passed by value, moved
635    pub fn set_kernel_tracker_max_interval(&mut self, v: i32) {
636        self.kernel_tracker_max_interval = v;
637    }
638
639    // int32 kernel_tracker_max_bytes = 8;
640
641
642    pub fn get_kernel_tracker_max_bytes(&self) -> i32 {
643        self.kernel_tracker_max_bytes
644    }
645    pub fn clear_kernel_tracker_max_bytes(&mut self) {
646        self.kernel_tracker_max_bytes = 0;
647    }
648
649    // Param is passed by value, moved
650    pub fn set_kernel_tracker_max_bytes(&mut self, v: i32) {
651        self.kernel_tracker_max_bytes = v;
652    }
653
654    // int32 kernel_tracker_max_pending = 9;
655
656
657    pub fn get_kernel_tracker_max_pending(&self) -> i32 {
658        self.kernel_tracker_max_pending
659    }
660    pub fn clear_kernel_tracker_max_pending(&mut self) {
661        self.kernel_tracker_max_pending = 0;
662    }
663
664    // Param is passed by value, moved
665    pub fn set_kernel_tracker_max_pending(&mut self, v: i32) {
666        self.kernel_tracker_max_pending = v;
667    }
668}
669
670impl ::protobuf::Message for GPUOptions_Experimental {
671    fn is_initialized(&self) -> bool {
672        for v in &self.virtual_devices {
673            if !v.is_initialized() {
674                return false;
675            }
676        };
677        true
678    }
679
680    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
681        while !is.eof()? {
682            let (field_number, wire_type) = is.read_tag_unpack()?;
683            match field_number {
684                1 => {
685                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.virtual_devices)?;
686                },
687                2 => {
688                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
689                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
690                    }
691                    let tmp = is.read_bool()?;
692                    self.use_unified_memory = tmp;
693                },
694                3 => {
695                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
696                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
697                    }
698                    let tmp = is.read_int32()?;
699                    self.num_dev_to_dev_copy_streams = tmp;
700                },
701                4 => {
702                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.collective_ring_order)?;
703                },
704                5 => {
705                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
706                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
707                    }
708                    let tmp = is.read_bool()?;
709                    self.timestamped_allocator = tmp;
710                },
711                7 => {
712                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
713                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
714                    }
715                    let tmp = is.read_int32()?;
716                    self.kernel_tracker_max_interval = tmp;
717                },
718                8 => {
719                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
720                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
721                    }
722                    let tmp = is.read_int32()?;
723                    self.kernel_tracker_max_bytes = tmp;
724                },
725                9 => {
726                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
727                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
728                    }
729                    let tmp = is.read_int32()?;
730                    self.kernel_tracker_max_pending = tmp;
731                },
732                _ => {
733                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
734                },
735            };
736        }
737        ::std::result::Result::Ok(())
738    }
739
740    // Compute sizes of nested messages
741    #[allow(unused_variables)]
742    fn compute_size(&self) -> u32 {
743        let mut my_size = 0;
744        for value in &self.virtual_devices {
745            let len = value.compute_size();
746            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
747        };
748        if self.use_unified_memory != false {
749            my_size += 2;
750        }
751        if self.num_dev_to_dev_copy_streams != 0 {
752            my_size += ::protobuf::rt::value_size(3, self.num_dev_to_dev_copy_streams, ::protobuf::wire_format::WireTypeVarint);
753        }
754        if !self.collective_ring_order.is_empty() {
755            my_size += ::protobuf::rt::string_size(4, &self.collective_ring_order);
756        }
757        if self.timestamped_allocator != false {
758            my_size += 2;
759        }
760        if self.kernel_tracker_max_interval != 0 {
761            my_size += ::protobuf::rt::value_size(7, self.kernel_tracker_max_interval, ::protobuf::wire_format::WireTypeVarint);
762        }
763        if self.kernel_tracker_max_bytes != 0 {
764            my_size += ::protobuf::rt::value_size(8, self.kernel_tracker_max_bytes, ::protobuf::wire_format::WireTypeVarint);
765        }
766        if self.kernel_tracker_max_pending != 0 {
767            my_size += ::protobuf::rt::value_size(9, self.kernel_tracker_max_pending, ::protobuf::wire_format::WireTypeVarint);
768        }
769        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
770        self.cached_size.set(my_size);
771        my_size
772    }
773
774    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
775        for v in &self.virtual_devices {
776            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
777            os.write_raw_varint32(v.get_cached_size())?;
778            v.write_to_with_cached_sizes(os)?;
779        };
780        if self.use_unified_memory != false {
781            os.write_bool(2, self.use_unified_memory)?;
782        }
783        if self.num_dev_to_dev_copy_streams != 0 {
784            os.write_int32(3, self.num_dev_to_dev_copy_streams)?;
785        }
786        if !self.collective_ring_order.is_empty() {
787            os.write_string(4, &self.collective_ring_order)?;
788        }
789        if self.timestamped_allocator != false {
790            os.write_bool(5, self.timestamped_allocator)?;
791        }
792        if self.kernel_tracker_max_interval != 0 {
793            os.write_int32(7, self.kernel_tracker_max_interval)?;
794        }
795        if self.kernel_tracker_max_bytes != 0 {
796            os.write_int32(8, self.kernel_tracker_max_bytes)?;
797        }
798        if self.kernel_tracker_max_pending != 0 {
799            os.write_int32(9, self.kernel_tracker_max_pending)?;
800        }
801        os.write_unknown_fields(self.get_unknown_fields())?;
802        ::std::result::Result::Ok(())
803    }
804
805    fn get_cached_size(&self) -> u32 {
806        self.cached_size.get()
807    }
808
809    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
810        &self.unknown_fields
811    }
812
813    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
814        &mut self.unknown_fields
815    }
816
817    fn as_any(&self) -> &dyn (::std::any::Any) {
818        self as &dyn (::std::any::Any)
819    }
820    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
821        self as &mut dyn (::std::any::Any)
822    }
823    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
824        self
825    }
826
827    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
828        Self::descriptor_static()
829    }
830
831    fn new() -> GPUOptions_Experimental {
832        GPUOptions_Experimental::new()
833    }
834
835    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
836        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
837        unsafe {
838            descriptor.get(|| {
839                let mut fields = ::std::vec::Vec::new();
840                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<GPUOptions_Experimental_VirtualDevices>>(
841                    "virtual_devices",
842                    |m: &GPUOptions_Experimental| { &m.virtual_devices },
843                    |m: &mut GPUOptions_Experimental| { &mut m.virtual_devices },
844                ));
845                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
846                    "use_unified_memory",
847                    |m: &GPUOptions_Experimental| { &m.use_unified_memory },
848                    |m: &mut GPUOptions_Experimental| { &mut m.use_unified_memory },
849                ));
850                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
851                    "num_dev_to_dev_copy_streams",
852                    |m: &GPUOptions_Experimental| { &m.num_dev_to_dev_copy_streams },
853                    |m: &mut GPUOptions_Experimental| { &mut m.num_dev_to_dev_copy_streams },
854                ));
855                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
856                    "collective_ring_order",
857                    |m: &GPUOptions_Experimental| { &m.collective_ring_order },
858                    |m: &mut GPUOptions_Experimental| { &mut m.collective_ring_order },
859                ));
860                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
861                    "timestamped_allocator",
862                    |m: &GPUOptions_Experimental| { &m.timestamped_allocator },
863                    |m: &mut GPUOptions_Experimental| { &mut m.timestamped_allocator },
864                ));
865                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
866                    "kernel_tracker_max_interval",
867                    |m: &GPUOptions_Experimental| { &m.kernel_tracker_max_interval },
868                    |m: &mut GPUOptions_Experimental| { &mut m.kernel_tracker_max_interval },
869                ));
870                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
871                    "kernel_tracker_max_bytes",
872                    |m: &GPUOptions_Experimental| { &m.kernel_tracker_max_bytes },
873                    |m: &mut GPUOptions_Experimental| { &mut m.kernel_tracker_max_bytes },
874                ));
875                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
876                    "kernel_tracker_max_pending",
877                    |m: &GPUOptions_Experimental| { &m.kernel_tracker_max_pending },
878                    |m: &mut GPUOptions_Experimental| { &mut m.kernel_tracker_max_pending },
879                ));
880                ::protobuf::reflect::MessageDescriptor::new_pb_name::<GPUOptions_Experimental>(
881                    "GPUOptions.Experimental",
882                    fields,
883                    file_descriptor_proto()
884                )
885            })
886        }
887    }
888
889    fn default_instance() -> &'static GPUOptions_Experimental {
890        static mut instance: ::protobuf::lazy::Lazy<GPUOptions_Experimental> = ::protobuf::lazy::Lazy::INIT;
891        unsafe {
892            instance.get(GPUOptions_Experimental::new)
893        }
894    }
895}
896
897impl ::protobuf::Clear for GPUOptions_Experimental {
898    fn clear(&mut self) {
899        self.virtual_devices.clear();
900        self.use_unified_memory = false;
901        self.num_dev_to_dev_copy_streams = 0;
902        self.collective_ring_order.clear();
903        self.timestamped_allocator = false;
904        self.kernel_tracker_max_interval = 0;
905        self.kernel_tracker_max_bytes = 0;
906        self.kernel_tracker_max_pending = 0;
907        self.unknown_fields.clear();
908    }
909}
910
911impl ::std::fmt::Debug for GPUOptions_Experimental {
912    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
913        ::protobuf::text_format::fmt(self, f)
914    }
915}
916
917impl ::protobuf::reflect::ProtobufValue for GPUOptions_Experimental {
918    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
919        ::protobuf::reflect::ReflectValueRef::Message(self)
920    }
921}
922
923#[derive(PartialEq,Clone,Default)]
924pub struct GPUOptions_Experimental_VirtualDevices {
925    // message fields
926    pub memory_limit_mb: ::std::vec::Vec<f32>,
927    pub priority: ::std::vec::Vec<i32>,
928    // special fields
929    pub unknown_fields: ::protobuf::UnknownFields,
930    pub cached_size: ::protobuf::CachedSize,
931}
932
933impl<'a> ::std::default::Default for &'a GPUOptions_Experimental_VirtualDevices {
934    fn default() -> &'a GPUOptions_Experimental_VirtualDevices {
935        <GPUOptions_Experimental_VirtualDevices as ::protobuf::Message>::default_instance()
936    }
937}
938
939impl GPUOptions_Experimental_VirtualDevices {
940    pub fn new() -> GPUOptions_Experimental_VirtualDevices {
941        ::std::default::Default::default()
942    }
943
944    // repeated float memory_limit_mb = 1;
945
946
947    pub fn get_memory_limit_mb(&self) -> &[f32] {
948        &self.memory_limit_mb
949    }
950    pub fn clear_memory_limit_mb(&mut self) {
951        self.memory_limit_mb.clear();
952    }
953
954    // Param is passed by value, moved
955    pub fn set_memory_limit_mb(&mut self, v: ::std::vec::Vec<f32>) {
956        self.memory_limit_mb = v;
957    }
958
959    // Mutable pointer to the field.
960    pub fn mut_memory_limit_mb(&mut self) -> &mut ::std::vec::Vec<f32> {
961        &mut self.memory_limit_mb
962    }
963
964    // Take field
965    pub fn take_memory_limit_mb(&mut self) -> ::std::vec::Vec<f32> {
966        ::std::mem::replace(&mut self.memory_limit_mb, ::std::vec::Vec::new())
967    }
968
969    // repeated int32 priority = 2;
970
971
972    pub fn get_priority(&self) -> &[i32] {
973        &self.priority
974    }
975    pub fn clear_priority(&mut self) {
976        self.priority.clear();
977    }
978
979    // Param is passed by value, moved
980    pub fn set_priority(&mut self, v: ::std::vec::Vec<i32>) {
981        self.priority = v;
982    }
983
984    // Mutable pointer to the field.
985    pub fn mut_priority(&mut self) -> &mut ::std::vec::Vec<i32> {
986        &mut self.priority
987    }
988
989    // Take field
990    pub fn take_priority(&mut self) -> ::std::vec::Vec<i32> {
991        ::std::mem::replace(&mut self.priority, ::std::vec::Vec::new())
992    }
993}
994
995impl ::protobuf::Message for GPUOptions_Experimental_VirtualDevices {
996    fn is_initialized(&self) -> bool {
997        true
998    }
999
1000    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1001        while !is.eof()? {
1002            let (field_number, wire_type) = is.read_tag_unpack()?;
1003            match field_number {
1004                1 => {
1005                    ::protobuf::rt::read_repeated_float_into(wire_type, is, &mut self.memory_limit_mb)?;
1006                },
1007                2 => {
1008                    ::protobuf::rt::read_repeated_int32_into(wire_type, is, &mut self.priority)?;
1009                },
1010                _ => {
1011                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1012                },
1013            };
1014        }
1015        ::std::result::Result::Ok(())
1016    }
1017
1018    // Compute sizes of nested messages
1019    #[allow(unused_variables)]
1020    fn compute_size(&self) -> u32 {
1021        let mut my_size = 0;
1022        my_size += 5 * self.memory_limit_mb.len() as u32;
1023        for value in &self.priority {
1024            my_size += ::protobuf::rt::value_size(2, *value, ::protobuf::wire_format::WireTypeVarint);
1025        };
1026        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1027        self.cached_size.set(my_size);
1028        my_size
1029    }
1030
1031    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1032        for v in &self.memory_limit_mb {
1033            os.write_float(1, *v)?;
1034        };
1035        for v in &self.priority {
1036            os.write_int32(2, *v)?;
1037        };
1038        os.write_unknown_fields(self.get_unknown_fields())?;
1039        ::std::result::Result::Ok(())
1040    }
1041
1042    fn get_cached_size(&self) -> u32 {
1043        self.cached_size.get()
1044    }
1045
1046    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1047        &self.unknown_fields
1048    }
1049
1050    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1051        &mut self.unknown_fields
1052    }
1053
1054    fn as_any(&self) -> &dyn (::std::any::Any) {
1055        self as &dyn (::std::any::Any)
1056    }
1057    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1058        self as &mut dyn (::std::any::Any)
1059    }
1060    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1061        self
1062    }
1063
1064    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1065        Self::descriptor_static()
1066    }
1067
1068    fn new() -> GPUOptions_Experimental_VirtualDevices {
1069        GPUOptions_Experimental_VirtualDevices::new()
1070    }
1071
1072    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1073        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
1074        unsafe {
1075            descriptor.get(|| {
1076                let mut fields = ::std::vec::Vec::new();
1077                fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeFloat>(
1078                    "memory_limit_mb",
1079                    |m: &GPUOptions_Experimental_VirtualDevices| { &m.memory_limit_mb },
1080                    |m: &mut GPUOptions_Experimental_VirtualDevices| { &mut m.memory_limit_mb },
1081                ));
1082                fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
1083                    "priority",
1084                    |m: &GPUOptions_Experimental_VirtualDevices| { &m.priority },
1085                    |m: &mut GPUOptions_Experimental_VirtualDevices| { &mut m.priority },
1086                ));
1087                ::protobuf::reflect::MessageDescriptor::new_pb_name::<GPUOptions_Experimental_VirtualDevices>(
1088                    "GPUOptions.Experimental.VirtualDevices",
1089                    fields,
1090                    file_descriptor_proto()
1091                )
1092            })
1093        }
1094    }
1095
1096    fn default_instance() -> &'static GPUOptions_Experimental_VirtualDevices {
1097        static mut instance: ::protobuf::lazy::Lazy<GPUOptions_Experimental_VirtualDevices> = ::protobuf::lazy::Lazy::INIT;
1098        unsafe {
1099            instance.get(GPUOptions_Experimental_VirtualDevices::new)
1100        }
1101    }
1102}
1103
1104impl ::protobuf::Clear for GPUOptions_Experimental_VirtualDevices {
1105    fn clear(&mut self) {
1106        self.memory_limit_mb.clear();
1107        self.priority.clear();
1108        self.unknown_fields.clear();
1109    }
1110}
1111
1112impl ::std::fmt::Debug for GPUOptions_Experimental_VirtualDevices {
1113    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1114        ::protobuf::text_format::fmt(self, f)
1115    }
1116}
1117
1118impl ::protobuf::reflect::ProtobufValue for GPUOptions_Experimental_VirtualDevices {
1119    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1120        ::protobuf::reflect::ReflectValueRef::Message(self)
1121    }
1122}
1123
1124#[derive(PartialEq,Clone,Default)]
1125pub struct OptimizerOptions {
1126    // message fields
1127    pub do_common_subexpression_elimination: bool,
1128    pub do_constant_folding: bool,
1129    pub max_folded_constant_in_bytes: i64,
1130    pub do_function_inlining: bool,
1131    pub opt_level: OptimizerOptions_Level,
1132    pub global_jit_level: OptimizerOptions_GlobalJitLevel,
1133    // special fields
1134    pub unknown_fields: ::protobuf::UnknownFields,
1135    pub cached_size: ::protobuf::CachedSize,
1136}
1137
1138impl<'a> ::std::default::Default for &'a OptimizerOptions {
1139    fn default() -> &'a OptimizerOptions {
1140        <OptimizerOptions as ::protobuf::Message>::default_instance()
1141    }
1142}
1143
1144impl OptimizerOptions {
1145    pub fn new() -> OptimizerOptions {
1146        ::std::default::Default::default()
1147    }
1148
1149    // bool do_common_subexpression_elimination = 1;
1150
1151
1152    pub fn get_do_common_subexpression_elimination(&self) -> bool {
1153        self.do_common_subexpression_elimination
1154    }
1155    pub fn clear_do_common_subexpression_elimination(&mut self) {
1156        self.do_common_subexpression_elimination = false;
1157    }
1158
1159    // Param is passed by value, moved
1160    pub fn set_do_common_subexpression_elimination(&mut self, v: bool) {
1161        self.do_common_subexpression_elimination = v;
1162    }
1163
1164    // bool do_constant_folding = 2;
1165
1166
1167    pub fn get_do_constant_folding(&self) -> bool {
1168        self.do_constant_folding
1169    }
1170    pub fn clear_do_constant_folding(&mut self) {
1171        self.do_constant_folding = false;
1172    }
1173
1174    // Param is passed by value, moved
1175    pub fn set_do_constant_folding(&mut self, v: bool) {
1176        self.do_constant_folding = v;
1177    }
1178
1179    // int64 max_folded_constant_in_bytes = 6;
1180
1181
1182    pub fn get_max_folded_constant_in_bytes(&self) -> i64 {
1183        self.max_folded_constant_in_bytes
1184    }
1185    pub fn clear_max_folded_constant_in_bytes(&mut self) {
1186        self.max_folded_constant_in_bytes = 0;
1187    }
1188
1189    // Param is passed by value, moved
1190    pub fn set_max_folded_constant_in_bytes(&mut self, v: i64) {
1191        self.max_folded_constant_in_bytes = v;
1192    }
1193
1194    // bool do_function_inlining = 4;
1195
1196
1197    pub fn get_do_function_inlining(&self) -> bool {
1198        self.do_function_inlining
1199    }
1200    pub fn clear_do_function_inlining(&mut self) {
1201        self.do_function_inlining = false;
1202    }
1203
1204    // Param is passed by value, moved
1205    pub fn set_do_function_inlining(&mut self, v: bool) {
1206        self.do_function_inlining = v;
1207    }
1208
1209    // .tensorflow.OptimizerOptions.Level opt_level = 3;
1210
1211
1212    pub fn get_opt_level(&self) -> OptimizerOptions_Level {
1213        self.opt_level
1214    }
1215    pub fn clear_opt_level(&mut self) {
1216        self.opt_level = OptimizerOptions_Level::L1;
1217    }
1218
1219    // Param is passed by value, moved
1220    pub fn set_opt_level(&mut self, v: OptimizerOptions_Level) {
1221        self.opt_level = v;
1222    }
1223
1224    // .tensorflow.OptimizerOptions.GlobalJitLevel global_jit_level = 5;
1225
1226
1227    pub fn get_global_jit_level(&self) -> OptimizerOptions_GlobalJitLevel {
1228        self.global_jit_level
1229    }
1230    pub fn clear_global_jit_level(&mut self) {
1231        self.global_jit_level = OptimizerOptions_GlobalJitLevel::DEFAULT;
1232    }
1233
1234    // Param is passed by value, moved
1235    pub fn set_global_jit_level(&mut self, v: OptimizerOptions_GlobalJitLevel) {
1236        self.global_jit_level = v;
1237    }
1238}
1239
1240impl ::protobuf::Message for OptimizerOptions {
1241    fn is_initialized(&self) -> bool {
1242        true
1243    }
1244
1245    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1246        while !is.eof()? {
1247            let (field_number, wire_type) = is.read_tag_unpack()?;
1248            match field_number {
1249                1 => {
1250                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1251                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1252                    }
1253                    let tmp = is.read_bool()?;
1254                    self.do_common_subexpression_elimination = tmp;
1255                },
1256                2 => {
1257                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1258                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1259                    }
1260                    let tmp = is.read_bool()?;
1261                    self.do_constant_folding = tmp;
1262                },
1263                6 => {
1264                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1265                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1266                    }
1267                    let tmp = is.read_int64()?;
1268                    self.max_folded_constant_in_bytes = tmp;
1269                },
1270                4 => {
1271                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1272                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1273                    }
1274                    let tmp = is.read_bool()?;
1275                    self.do_function_inlining = tmp;
1276                },
1277                3 => {
1278                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.opt_level, 3, &mut self.unknown_fields)?
1279                },
1280                5 => {
1281                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.global_jit_level, 5, &mut self.unknown_fields)?
1282                },
1283                _ => {
1284                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1285                },
1286            };
1287        }
1288        ::std::result::Result::Ok(())
1289    }
1290
1291    // Compute sizes of nested messages
1292    #[allow(unused_variables)]
1293    fn compute_size(&self) -> u32 {
1294        let mut my_size = 0;
1295        if self.do_common_subexpression_elimination != false {
1296            my_size += 2;
1297        }
1298        if self.do_constant_folding != false {
1299            my_size += 2;
1300        }
1301        if self.max_folded_constant_in_bytes != 0 {
1302            my_size += ::protobuf::rt::value_size(6, self.max_folded_constant_in_bytes, ::protobuf::wire_format::WireTypeVarint);
1303        }
1304        if self.do_function_inlining != false {
1305            my_size += 2;
1306        }
1307        if self.opt_level != OptimizerOptions_Level::L1 {
1308            my_size += ::protobuf::rt::enum_size(3, self.opt_level);
1309        }
1310        if self.global_jit_level != OptimizerOptions_GlobalJitLevel::DEFAULT {
1311            my_size += ::protobuf::rt::enum_size(5, self.global_jit_level);
1312        }
1313        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1314        self.cached_size.set(my_size);
1315        my_size
1316    }
1317
1318    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1319        if self.do_common_subexpression_elimination != false {
1320            os.write_bool(1, self.do_common_subexpression_elimination)?;
1321        }
1322        if self.do_constant_folding != false {
1323            os.write_bool(2, self.do_constant_folding)?;
1324        }
1325        if self.max_folded_constant_in_bytes != 0 {
1326            os.write_int64(6, self.max_folded_constant_in_bytes)?;
1327        }
1328        if self.do_function_inlining != false {
1329            os.write_bool(4, self.do_function_inlining)?;
1330        }
1331        if self.opt_level != OptimizerOptions_Level::L1 {
1332            os.write_enum(3, self.opt_level.value())?;
1333        }
1334        if self.global_jit_level != OptimizerOptions_GlobalJitLevel::DEFAULT {
1335            os.write_enum(5, self.global_jit_level.value())?;
1336        }
1337        os.write_unknown_fields(self.get_unknown_fields())?;
1338        ::std::result::Result::Ok(())
1339    }
1340
1341    fn get_cached_size(&self) -> u32 {
1342        self.cached_size.get()
1343    }
1344
1345    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1346        &self.unknown_fields
1347    }
1348
1349    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1350        &mut self.unknown_fields
1351    }
1352
1353    fn as_any(&self) -> &dyn (::std::any::Any) {
1354        self as &dyn (::std::any::Any)
1355    }
1356    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1357        self as &mut dyn (::std::any::Any)
1358    }
1359    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1360        self
1361    }
1362
1363    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1364        Self::descriptor_static()
1365    }
1366
1367    fn new() -> OptimizerOptions {
1368        OptimizerOptions::new()
1369    }
1370
1371    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1372        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
1373        unsafe {
1374            descriptor.get(|| {
1375                let mut fields = ::std::vec::Vec::new();
1376                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1377                    "do_common_subexpression_elimination",
1378                    |m: &OptimizerOptions| { &m.do_common_subexpression_elimination },
1379                    |m: &mut OptimizerOptions| { &mut m.do_common_subexpression_elimination },
1380                ));
1381                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1382                    "do_constant_folding",
1383                    |m: &OptimizerOptions| { &m.do_constant_folding },
1384                    |m: &mut OptimizerOptions| { &mut m.do_constant_folding },
1385                ));
1386                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1387                    "max_folded_constant_in_bytes",
1388                    |m: &OptimizerOptions| { &m.max_folded_constant_in_bytes },
1389                    |m: &mut OptimizerOptions| { &mut m.max_folded_constant_in_bytes },
1390                ));
1391                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1392                    "do_function_inlining",
1393                    |m: &OptimizerOptions| { &m.do_function_inlining },
1394                    |m: &mut OptimizerOptions| { &mut m.do_function_inlining },
1395                ));
1396                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<OptimizerOptions_Level>>(
1397                    "opt_level",
1398                    |m: &OptimizerOptions| { &m.opt_level },
1399                    |m: &mut OptimizerOptions| { &mut m.opt_level },
1400                ));
1401                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<OptimizerOptions_GlobalJitLevel>>(
1402                    "global_jit_level",
1403                    |m: &OptimizerOptions| { &m.global_jit_level },
1404                    |m: &mut OptimizerOptions| { &mut m.global_jit_level },
1405                ));
1406                ::protobuf::reflect::MessageDescriptor::new_pb_name::<OptimizerOptions>(
1407                    "OptimizerOptions",
1408                    fields,
1409                    file_descriptor_proto()
1410                )
1411            })
1412        }
1413    }
1414
1415    fn default_instance() -> &'static OptimizerOptions {
1416        static mut instance: ::protobuf::lazy::Lazy<OptimizerOptions> = ::protobuf::lazy::Lazy::INIT;
1417        unsafe {
1418            instance.get(OptimizerOptions::new)
1419        }
1420    }
1421}
1422
1423impl ::protobuf::Clear for OptimizerOptions {
1424    fn clear(&mut self) {
1425        self.do_common_subexpression_elimination = false;
1426        self.do_constant_folding = false;
1427        self.max_folded_constant_in_bytes = 0;
1428        self.do_function_inlining = false;
1429        self.opt_level = OptimizerOptions_Level::L1;
1430        self.global_jit_level = OptimizerOptions_GlobalJitLevel::DEFAULT;
1431        self.unknown_fields.clear();
1432    }
1433}
1434
1435impl ::std::fmt::Debug for OptimizerOptions {
1436    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1437        ::protobuf::text_format::fmt(self, f)
1438    }
1439}
1440
1441impl ::protobuf::reflect::ProtobufValue for OptimizerOptions {
1442    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1443        ::protobuf::reflect::ReflectValueRef::Message(self)
1444    }
1445}
1446
1447#[derive(Clone,PartialEq,Eq,Debug,Hash)]
1448pub enum OptimizerOptions_Level {
1449    L1 = 0,
1450    L0 = -1,
1451}
1452
1453impl ::protobuf::ProtobufEnum for OptimizerOptions_Level {
1454    fn value(&self) -> i32 {
1455        *self as i32
1456    }
1457
1458    fn from_i32(value: i32) -> ::std::option::Option<OptimizerOptions_Level> {
1459        match value {
1460            0 => ::std::option::Option::Some(OptimizerOptions_Level::L1),
1461            -1 => ::std::option::Option::Some(OptimizerOptions_Level::L0),
1462            _ => ::std::option::Option::None
1463        }
1464    }
1465
1466    fn values() -> &'static [Self] {
1467        static values: &'static [OptimizerOptions_Level] = &[
1468            OptimizerOptions_Level::L1,
1469            OptimizerOptions_Level::L0,
1470        ];
1471        values
1472    }
1473
1474    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
1475        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy::INIT;
1476        unsafe {
1477            descriptor.get(|| {
1478                ::protobuf::reflect::EnumDescriptor::new_pb_name::<OptimizerOptions_Level>("OptimizerOptions.Level", file_descriptor_proto())
1479            })
1480        }
1481    }
1482}
1483
1484impl ::std::marker::Copy for OptimizerOptions_Level {
1485}
1486
1487impl ::std::default::Default for OptimizerOptions_Level {
1488    fn default() -> Self {
1489        OptimizerOptions_Level::L1
1490    }
1491}
1492
1493impl ::protobuf::reflect::ProtobufValue for OptimizerOptions_Level {
1494    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1495        ::protobuf::reflect::ReflectValueRef::Enum(self.descriptor())
1496    }
1497}
1498
1499#[derive(Clone,PartialEq,Eq,Debug,Hash)]
1500pub enum OptimizerOptions_GlobalJitLevel {
1501    DEFAULT = 0,
1502    OFF = -1,
1503    ON_1 = 1,
1504    ON_2 = 2,
1505}
1506
1507impl ::protobuf::ProtobufEnum for OptimizerOptions_GlobalJitLevel {
1508    fn value(&self) -> i32 {
1509        *self as i32
1510    }
1511
1512    fn from_i32(value: i32) -> ::std::option::Option<OptimizerOptions_GlobalJitLevel> {
1513        match value {
1514            0 => ::std::option::Option::Some(OptimizerOptions_GlobalJitLevel::DEFAULT),
1515            -1 => ::std::option::Option::Some(OptimizerOptions_GlobalJitLevel::OFF),
1516            1 => ::std::option::Option::Some(OptimizerOptions_GlobalJitLevel::ON_1),
1517            2 => ::std::option::Option::Some(OptimizerOptions_GlobalJitLevel::ON_2),
1518            _ => ::std::option::Option::None
1519        }
1520    }
1521
1522    fn values() -> &'static [Self] {
1523        static values: &'static [OptimizerOptions_GlobalJitLevel] = &[
1524            OptimizerOptions_GlobalJitLevel::DEFAULT,
1525            OptimizerOptions_GlobalJitLevel::OFF,
1526            OptimizerOptions_GlobalJitLevel::ON_1,
1527            OptimizerOptions_GlobalJitLevel::ON_2,
1528        ];
1529        values
1530    }
1531
1532    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
1533        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy::INIT;
1534        unsafe {
1535            descriptor.get(|| {
1536                ::protobuf::reflect::EnumDescriptor::new_pb_name::<OptimizerOptions_GlobalJitLevel>("OptimizerOptions.GlobalJitLevel", file_descriptor_proto())
1537            })
1538        }
1539    }
1540}
1541
1542impl ::std::marker::Copy for OptimizerOptions_GlobalJitLevel {
1543}
1544
1545impl ::std::default::Default for OptimizerOptions_GlobalJitLevel {
1546    fn default() -> Self {
1547        OptimizerOptions_GlobalJitLevel::DEFAULT
1548    }
1549}
1550
1551impl ::protobuf::reflect::ProtobufValue for OptimizerOptions_GlobalJitLevel {
1552    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1553        ::protobuf::reflect::ReflectValueRef::Enum(self.descriptor())
1554    }
1555}
1556
1557#[derive(PartialEq,Clone,Default)]
1558pub struct GraphOptions {
1559    // message fields
1560    pub enable_recv_scheduling: bool,
1561    pub optimizer_options: ::protobuf::SingularPtrField<OptimizerOptions>,
1562    pub build_cost_model: i64,
1563    pub build_cost_model_after: i64,
1564    pub infer_shapes: bool,
1565    pub place_pruned_graph: bool,
1566    pub enable_bfloat16_sendrecv: bool,
1567    pub timeline_step: i32,
1568    pub rewrite_options: ::protobuf::SingularPtrField<super::rewriter_config::RewriterConfig>,
1569    // special fields
1570    pub unknown_fields: ::protobuf::UnknownFields,
1571    pub cached_size: ::protobuf::CachedSize,
1572}
1573
1574impl<'a> ::std::default::Default for &'a GraphOptions {
1575    fn default() -> &'a GraphOptions {
1576        <GraphOptions as ::protobuf::Message>::default_instance()
1577    }
1578}
1579
1580impl GraphOptions {
1581    pub fn new() -> GraphOptions {
1582        ::std::default::Default::default()
1583    }
1584
1585    // bool enable_recv_scheduling = 2;
1586
1587
1588    pub fn get_enable_recv_scheduling(&self) -> bool {
1589        self.enable_recv_scheduling
1590    }
1591    pub fn clear_enable_recv_scheduling(&mut self) {
1592        self.enable_recv_scheduling = false;
1593    }
1594
1595    // Param is passed by value, moved
1596    pub fn set_enable_recv_scheduling(&mut self, v: bool) {
1597        self.enable_recv_scheduling = v;
1598    }
1599
1600    // .tensorflow.OptimizerOptions optimizer_options = 3;
1601
1602
1603    pub fn get_optimizer_options(&self) -> &OptimizerOptions {
1604        self.optimizer_options.as_ref().unwrap_or_else(|| OptimizerOptions::default_instance())
1605    }
1606    pub fn clear_optimizer_options(&mut self) {
1607        self.optimizer_options.clear();
1608    }
1609
1610    pub fn has_optimizer_options(&self) -> bool {
1611        self.optimizer_options.is_some()
1612    }
1613
1614    // Param is passed by value, moved
1615    pub fn set_optimizer_options(&mut self, v: OptimizerOptions) {
1616        self.optimizer_options = ::protobuf::SingularPtrField::some(v);
1617    }
1618
1619    // Mutable pointer to the field.
1620    // If field is not initialized, it is initialized with default value first.
1621    pub fn mut_optimizer_options(&mut self) -> &mut OptimizerOptions {
1622        if self.optimizer_options.is_none() {
1623            self.optimizer_options.set_default();
1624        }
1625        self.optimizer_options.as_mut().unwrap()
1626    }
1627
1628    // Take field
1629    pub fn take_optimizer_options(&mut self) -> OptimizerOptions {
1630        self.optimizer_options.take().unwrap_or_else(|| OptimizerOptions::new())
1631    }
1632
1633    // int64 build_cost_model = 4;
1634
1635
1636    pub fn get_build_cost_model(&self) -> i64 {
1637        self.build_cost_model
1638    }
1639    pub fn clear_build_cost_model(&mut self) {
1640        self.build_cost_model = 0;
1641    }
1642
1643    // Param is passed by value, moved
1644    pub fn set_build_cost_model(&mut self, v: i64) {
1645        self.build_cost_model = v;
1646    }
1647
1648    // int64 build_cost_model_after = 9;
1649
1650
1651    pub fn get_build_cost_model_after(&self) -> i64 {
1652        self.build_cost_model_after
1653    }
1654    pub fn clear_build_cost_model_after(&mut self) {
1655        self.build_cost_model_after = 0;
1656    }
1657
1658    // Param is passed by value, moved
1659    pub fn set_build_cost_model_after(&mut self, v: i64) {
1660        self.build_cost_model_after = v;
1661    }
1662
1663    // bool infer_shapes = 5;
1664
1665
1666    pub fn get_infer_shapes(&self) -> bool {
1667        self.infer_shapes
1668    }
1669    pub fn clear_infer_shapes(&mut self) {
1670        self.infer_shapes = false;
1671    }
1672
1673    // Param is passed by value, moved
1674    pub fn set_infer_shapes(&mut self, v: bool) {
1675        self.infer_shapes = v;
1676    }
1677
1678    // bool place_pruned_graph = 6;
1679
1680
1681    pub fn get_place_pruned_graph(&self) -> bool {
1682        self.place_pruned_graph
1683    }
1684    pub fn clear_place_pruned_graph(&mut self) {
1685        self.place_pruned_graph = false;
1686    }
1687
1688    // Param is passed by value, moved
1689    pub fn set_place_pruned_graph(&mut self, v: bool) {
1690        self.place_pruned_graph = v;
1691    }
1692
1693    // bool enable_bfloat16_sendrecv = 7;
1694
1695
1696    pub fn get_enable_bfloat16_sendrecv(&self) -> bool {
1697        self.enable_bfloat16_sendrecv
1698    }
1699    pub fn clear_enable_bfloat16_sendrecv(&mut self) {
1700        self.enable_bfloat16_sendrecv = false;
1701    }
1702
1703    // Param is passed by value, moved
1704    pub fn set_enable_bfloat16_sendrecv(&mut self, v: bool) {
1705        self.enable_bfloat16_sendrecv = v;
1706    }
1707
1708    // int32 timeline_step = 8;
1709
1710
1711    pub fn get_timeline_step(&self) -> i32 {
1712        self.timeline_step
1713    }
1714    pub fn clear_timeline_step(&mut self) {
1715        self.timeline_step = 0;
1716    }
1717
1718    // Param is passed by value, moved
1719    pub fn set_timeline_step(&mut self, v: i32) {
1720        self.timeline_step = v;
1721    }
1722
1723    // .tensorflow.RewriterConfig rewrite_options = 10;
1724
1725
1726    pub fn get_rewrite_options(&self) -> &super::rewriter_config::RewriterConfig {
1727        self.rewrite_options.as_ref().unwrap_or_else(|| super::rewriter_config::RewriterConfig::default_instance())
1728    }
1729    pub fn clear_rewrite_options(&mut self) {
1730        self.rewrite_options.clear();
1731    }
1732
1733    pub fn has_rewrite_options(&self) -> bool {
1734        self.rewrite_options.is_some()
1735    }
1736
1737    // Param is passed by value, moved
1738    pub fn set_rewrite_options(&mut self, v: super::rewriter_config::RewriterConfig) {
1739        self.rewrite_options = ::protobuf::SingularPtrField::some(v);
1740    }
1741
1742    // Mutable pointer to the field.
1743    // If field is not initialized, it is initialized with default value first.
1744    pub fn mut_rewrite_options(&mut self) -> &mut super::rewriter_config::RewriterConfig {
1745        if self.rewrite_options.is_none() {
1746            self.rewrite_options.set_default();
1747        }
1748        self.rewrite_options.as_mut().unwrap()
1749    }
1750
1751    // Take field
1752    pub fn take_rewrite_options(&mut self) -> super::rewriter_config::RewriterConfig {
1753        self.rewrite_options.take().unwrap_or_else(|| super::rewriter_config::RewriterConfig::new())
1754    }
1755}
1756
1757impl ::protobuf::Message for GraphOptions {
1758    fn is_initialized(&self) -> bool {
1759        for v in &self.optimizer_options {
1760            if !v.is_initialized() {
1761                return false;
1762            }
1763        };
1764        for v in &self.rewrite_options {
1765            if !v.is_initialized() {
1766                return false;
1767            }
1768        };
1769        true
1770    }
1771
1772    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1773        while !is.eof()? {
1774            let (field_number, wire_type) = is.read_tag_unpack()?;
1775            match field_number {
1776                2 => {
1777                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1778                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1779                    }
1780                    let tmp = is.read_bool()?;
1781                    self.enable_recv_scheduling = tmp;
1782                },
1783                3 => {
1784                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.optimizer_options)?;
1785                },
1786                4 => {
1787                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1788                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1789                    }
1790                    let tmp = is.read_int64()?;
1791                    self.build_cost_model = tmp;
1792                },
1793                9 => {
1794                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1795                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1796                    }
1797                    let tmp = is.read_int64()?;
1798                    self.build_cost_model_after = tmp;
1799                },
1800                5 => {
1801                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1802                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1803                    }
1804                    let tmp = is.read_bool()?;
1805                    self.infer_shapes = tmp;
1806                },
1807                6 => {
1808                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1809                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1810                    }
1811                    let tmp = is.read_bool()?;
1812                    self.place_pruned_graph = tmp;
1813                },
1814                7 => {
1815                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1816                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1817                    }
1818                    let tmp = is.read_bool()?;
1819                    self.enable_bfloat16_sendrecv = tmp;
1820                },
1821                8 => {
1822                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1823                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1824                    }
1825                    let tmp = is.read_int32()?;
1826                    self.timeline_step = tmp;
1827                },
1828                10 => {
1829                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.rewrite_options)?;
1830                },
1831                _ => {
1832                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1833                },
1834            };
1835        }
1836        ::std::result::Result::Ok(())
1837    }
1838
1839    // Compute sizes of nested messages
1840    #[allow(unused_variables)]
1841    fn compute_size(&self) -> u32 {
1842        let mut my_size = 0;
1843        if self.enable_recv_scheduling != false {
1844            my_size += 2;
1845        }
1846        if let Some(ref v) = self.optimizer_options.as_ref() {
1847            let len = v.compute_size();
1848            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1849        }
1850        if self.build_cost_model != 0 {
1851            my_size += ::protobuf::rt::value_size(4, self.build_cost_model, ::protobuf::wire_format::WireTypeVarint);
1852        }
1853        if self.build_cost_model_after != 0 {
1854            my_size += ::protobuf::rt::value_size(9, self.build_cost_model_after, ::protobuf::wire_format::WireTypeVarint);
1855        }
1856        if self.infer_shapes != false {
1857            my_size += 2;
1858        }
1859        if self.place_pruned_graph != false {
1860            my_size += 2;
1861        }
1862        if self.enable_bfloat16_sendrecv != false {
1863            my_size += 2;
1864        }
1865        if self.timeline_step != 0 {
1866            my_size += ::protobuf::rt::value_size(8, self.timeline_step, ::protobuf::wire_format::WireTypeVarint);
1867        }
1868        if let Some(ref v) = self.rewrite_options.as_ref() {
1869            let len = v.compute_size();
1870            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1871        }
1872        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1873        self.cached_size.set(my_size);
1874        my_size
1875    }
1876
1877    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1878        if self.enable_recv_scheduling != false {
1879            os.write_bool(2, self.enable_recv_scheduling)?;
1880        }
1881        if let Some(ref v) = self.optimizer_options.as_ref() {
1882            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1883            os.write_raw_varint32(v.get_cached_size())?;
1884            v.write_to_with_cached_sizes(os)?;
1885        }
1886        if self.build_cost_model != 0 {
1887            os.write_int64(4, self.build_cost_model)?;
1888        }
1889        if self.build_cost_model_after != 0 {
1890            os.write_int64(9, self.build_cost_model_after)?;
1891        }
1892        if self.infer_shapes != false {
1893            os.write_bool(5, self.infer_shapes)?;
1894        }
1895        if self.place_pruned_graph != false {
1896            os.write_bool(6, self.place_pruned_graph)?;
1897        }
1898        if self.enable_bfloat16_sendrecv != false {
1899            os.write_bool(7, self.enable_bfloat16_sendrecv)?;
1900        }
1901        if self.timeline_step != 0 {
1902            os.write_int32(8, self.timeline_step)?;
1903        }
1904        if let Some(ref v) = self.rewrite_options.as_ref() {
1905            os.write_tag(10, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1906            os.write_raw_varint32(v.get_cached_size())?;
1907            v.write_to_with_cached_sizes(os)?;
1908        }
1909        os.write_unknown_fields(self.get_unknown_fields())?;
1910        ::std::result::Result::Ok(())
1911    }
1912
1913    fn get_cached_size(&self) -> u32 {
1914        self.cached_size.get()
1915    }
1916
1917    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1918        &self.unknown_fields
1919    }
1920
1921    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1922        &mut self.unknown_fields
1923    }
1924
1925    fn as_any(&self) -> &dyn (::std::any::Any) {
1926        self as &dyn (::std::any::Any)
1927    }
1928    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1929        self as &mut dyn (::std::any::Any)
1930    }
1931    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1932        self
1933    }
1934
1935    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1936        Self::descriptor_static()
1937    }
1938
1939    fn new() -> GraphOptions {
1940        GraphOptions::new()
1941    }
1942
1943    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1944        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
1945        unsafe {
1946            descriptor.get(|| {
1947                let mut fields = ::std::vec::Vec::new();
1948                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1949                    "enable_recv_scheduling",
1950                    |m: &GraphOptions| { &m.enable_recv_scheduling },
1951                    |m: &mut GraphOptions| { &mut m.enable_recv_scheduling },
1952                ));
1953                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<OptimizerOptions>>(
1954                    "optimizer_options",
1955                    |m: &GraphOptions| { &m.optimizer_options },
1956                    |m: &mut GraphOptions| { &mut m.optimizer_options },
1957                ));
1958                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1959                    "build_cost_model",
1960                    |m: &GraphOptions| { &m.build_cost_model },
1961                    |m: &mut GraphOptions| { &mut m.build_cost_model },
1962                ));
1963                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
1964                    "build_cost_model_after",
1965                    |m: &GraphOptions| { &m.build_cost_model_after },
1966                    |m: &mut GraphOptions| { &mut m.build_cost_model_after },
1967                ));
1968                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1969                    "infer_shapes",
1970                    |m: &GraphOptions| { &m.infer_shapes },
1971                    |m: &mut GraphOptions| { &mut m.infer_shapes },
1972                ));
1973                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1974                    "place_pruned_graph",
1975                    |m: &GraphOptions| { &m.place_pruned_graph },
1976                    |m: &mut GraphOptions| { &mut m.place_pruned_graph },
1977                ));
1978                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
1979                    "enable_bfloat16_sendrecv",
1980                    |m: &GraphOptions| { &m.enable_bfloat16_sendrecv },
1981                    |m: &mut GraphOptions| { &mut m.enable_bfloat16_sendrecv },
1982                ));
1983                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
1984                    "timeline_step",
1985                    |m: &GraphOptions| { &m.timeline_step },
1986                    |m: &mut GraphOptions| { &mut m.timeline_step },
1987                ));
1988                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::rewriter_config::RewriterConfig>>(
1989                    "rewrite_options",
1990                    |m: &GraphOptions| { &m.rewrite_options },
1991                    |m: &mut GraphOptions| { &mut m.rewrite_options },
1992                ));
1993                ::protobuf::reflect::MessageDescriptor::new_pb_name::<GraphOptions>(
1994                    "GraphOptions",
1995                    fields,
1996                    file_descriptor_proto()
1997                )
1998            })
1999        }
2000    }
2001
2002    fn default_instance() -> &'static GraphOptions {
2003        static mut instance: ::protobuf::lazy::Lazy<GraphOptions> = ::protobuf::lazy::Lazy::INIT;
2004        unsafe {
2005            instance.get(GraphOptions::new)
2006        }
2007    }
2008}
2009
2010impl ::protobuf::Clear for GraphOptions {
2011    fn clear(&mut self) {
2012        self.enable_recv_scheduling = false;
2013        self.optimizer_options.clear();
2014        self.build_cost_model = 0;
2015        self.build_cost_model_after = 0;
2016        self.infer_shapes = false;
2017        self.place_pruned_graph = false;
2018        self.enable_bfloat16_sendrecv = false;
2019        self.timeline_step = 0;
2020        self.rewrite_options.clear();
2021        self.unknown_fields.clear();
2022    }
2023}
2024
2025impl ::std::fmt::Debug for GraphOptions {
2026    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2027        ::protobuf::text_format::fmt(self, f)
2028    }
2029}
2030
2031impl ::protobuf::reflect::ProtobufValue for GraphOptions {
2032    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2033        ::protobuf::reflect::ReflectValueRef::Message(self)
2034    }
2035}
2036
2037#[derive(PartialEq,Clone,Default)]
2038pub struct ThreadPoolOptionProto {
2039    // message fields
2040    pub num_threads: i32,
2041    pub global_name: ::std::string::String,
2042    // special fields
2043    pub unknown_fields: ::protobuf::UnknownFields,
2044    pub cached_size: ::protobuf::CachedSize,
2045}
2046
2047impl<'a> ::std::default::Default for &'a ThreadPoolOptionProto {
2048    fn default() -> &'a ThreadPoolOptionProto {
2049        <ThreadPoolOptionProto as ::protobuf::Message>::default_instance()
2050    }
2051}
2052
2053impl ThreadPoolOptionProto {
2054    pub fn new() -> ThreadPoolOptionProto {
2055        ::std::default::Default::default()
2056    }
2057
2058    // int32 num_threads = 1;
2059
2060
2061    pub fn get_num_threads(&self) -> i32 {
2062        self.num_threads
2063    }
2064    pub fn clear_num_threads(&mut self) {
2065        self.num_threads = 0;
2066    }
2067
2068    // Param is passed by value, moved
2069    pub fn set_num_threads(&mut self, v: i32) {
2070        self.num_threads = v;
2071    }
2072
2073    // string global_name = 2;
2074
2075
2076    pub fn get_global_name(&self) -> &str {
2077        &self.global_name
2078    }
2079    pub fn clear_global_name(&mut self) {
2080        self.global_name.clear();
2081    }
2082
2083    // Param is passed by value, moved
2084    pub fn set_global_name(&mut self, v: ::std::string::String) {
2085        self.global_name = v;
2086    }
2087
2088    // Mutable pointer to the field.
2089    // If field is not initialized, it is initialized with default value first.
2090    pub fn mut_global_name(&mut self) -> &mut ::std::string::String {
2091        &mut self.global_name
2092    }
2093
2094    // Take field
2095    pub fn take_global_name(&mut self) -> ::std::string::String {
2096        ::std::mem::replace(&mut self.global_name, ::std::string::String::new())
2097    }
2098}
2099
2100impl ::protobuf::Message for ThreadPoolOptionProto {
2101    fn is_initialized(&self) -> bool {
2102        true
2103    }
2104
2105    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2106        while !is.eof()? {
2107            let (field_number, wire_type) = is.read_tag_unpack()?;
2108            match field_number {
2109                1 => {
2110                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
2111                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2112                    }
2113                    let tmp = is.read_int32()?;
2114                    self.num_threads = tmp;
2115                },
2116                2 => {
2117                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.global_name)?;
2118                },
2119                _ => {
2120                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
2121                },
2122            };
2123        }
2124        ::std::result::Result::Ok(())
2125    }
2126
2127    // Compute sizes of nested messages
2128    #[allow(unused_variables)]
2129    fn compute_size(&self) -> u32 {
2130        let mut my_size = 0;
2131        if self.num_threads != 0 {
2132            my_size += ::protobuf::rt::value_size(1, self.num_threads, ::protobuf::wire_format::WireTypeVarint);
2133        }
2134        if !self.global_name.is_empty() {
2135            my_size += ::protobuf::rt::string_size(2, &self.global_name);
2136        }
2137        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2138        self.cached_size.set(my_size);
2139        my_size
2140    }
2141
2142    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2143        if self.num_threads != 0 {
2144            os.write_int32(1, self.num_threads)?;
2145        }
2146        if !self.global_name.is_empty() {
2147            os.write_string(2, &self.global_name)?;
2148        }
2149        os.write_unknown_fields(self.get_unknown_fields())?;
2150        ::std::result::Result::Ok(())
2151    }
2152
2153    fn get_cached_size(&self) -> u32 {
2154        self.cached_size.get()
2155    }
2156
2157    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2158        &self.unknown_fields
2159    }
2160
2161    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2162        &mut self.unknown_fields
2163    }
2164
2165    fn as_any(&self) -> &dyn (::std::any::Any) {
2166        self as &dyn (::std::any::Any)
2167    }
2168    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
2169        self as &mut dyn (::std::any::Any)
2170    }
2171    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
2172        self
2173    }
2174
2175    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
2176        Self::descriptor_static()
2177    }
2178
2179    fn new() -> ThreadPoolOptionProto {
2180        ThreadPoolOptionProto::new()
2181    }
2182
2183    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
2184        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
2185        unsafe {
2186            descriptor.get(|| {
2187                let mut fields = ::std::vec::Vec::new();
2188                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
2189                    "num_threads",
2190                    |m: &ThreadPoolOptionProto| { &m.num_threads },
2191                    |m: &mut ThreadPoolOptionProto| { &mut m.num_threads },
2192                ));
2193                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2194                    "global_name",
2195                    |m: &ThreadPoolOptionProto| { &m.global_name },
2196                    |m: &mut ThreadPoolOptionProto| { &mut m.global_name },
2197                ));
2198                ::protobuf::reflect::MessageDescriptor::new_pb_name::<ThreadPoolOptionProto>(
2199                    "ThreadPoolOptionProto",
2200                    fields,
2201                    file_descriptor_proto()
2202                )
2203            })
2204        }
2205    }
2206
2207    fn default_instance() -> &'static ThreadPoolOptionProto {
2208        static mut instance: ::protobuf::lazy::Lazy<ThreadPoolOptionProto> = ::protobuf::lazy::Lazy::INIT;
2209        unsafe {
2210            instance.get(ThreadPoolOptionProto::new)
2211        }
2212    }
2213}
2214
2215impl ::protobuf::Clear for ThreadPoolOptionProto {
2216    fn clear(&mut self) {
2217        self.num_threads = 0;
2218        self.global_name.clear();
2219        self.unknown_fields.clear();
2220    }
2221}
2222
2223impl ::std::fmt::Debug for ThreadPoolOptionProto {
2224    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2225        ::protobuf::text_format::fmt(self, f)
2226    }
2227}
2228
2229impl ::protobuf::reflect::ProtobufValue for ThreadPoolOptionProto {
2230    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2231        ::protobuf::reflect::ReflectValueRef::Message(self)
2232    }
2233}
2234
2235#[derive(PartialEq,Clone,Default)]
2236pub struct RPCOptions {
2237    // message fields
2238    pub use_rpc_for_inprocess_master: bool,
2239    pub compression_algorithm: ::std::string::String,
2240    pub compression_level: i32,
2241    pub cache_rpc_response: bool,
2242    pub disable_session_connection_sharing: bool,
2243    // special fields
2244    pub unknown_fields: ::protobuf::UnknownFields,
2245    pub cached_size: ::protobuf::CachedSize,
2246}
2247
2248impl<'a> ::std::default::Default for &'a RPCOptions {
2249    fn default() -> &'a RPCOptions {
2250        <RPCOptions as ::protobuf::Message>::default_instance()
2251    }
2252}
2253
2254impl RPCOptions {
2255    pub fn new() -> RPCOptions {
2256        ::std::default::Default::default()
2257    }
2258
2259    // bool use_rpc_for_inprocess_master = 1;
2260
2261
2262    pub fn get_use_rpc_for_inprocess_master(&self) -> bool {
2263        self.use_rpc_for_inprocess_master
2264    }
2265    pub fn clear_use_rpc_for_inprocess_master(&mut self) {
2266        self.use_rpc_for_inprocess_master = false;
2267    }
2268
2269    // Param is passed by value, moved
2270    pub fn set_use_rpc_for_inprocess_master(&mut self, v: bool) {
2271        self.use_rpc_for_inprocess_master = v;
2272    }
2273
2274    // string compression_algorithm = 2;
2275
2276
2277    pub fn get_compression_algorithm(&self) -> &str {
2278        &self.compression_algorithm
2279    }
2280    pub fn clear_compression_algorithm(&mut self) {
2281        self.compression_algorithm.clear();
2282    }
2283
2284    // Param is passed by value, moved
2285    pub fn set_compression_algorithm(&mut self, v: ::std::string::String) {
2286        self.compression_algorithm = v;
2287    }
2288
2289    // Mutable pointer to the field.
2290    // If field is not initialized, it is initialized with default value first.
2291    pub fn mut_compression_algorithm(&mut self) -> &mut ::std::string::String {
2292        &mut self.compression_algorithm
2293    }
2294
2295    // Take field
2296    pub fn take_compression_algorithm(&mut self) -> ::std::string::String {
2297        ::std::mem::replace(&mut self.compression_algorithm, ::std::string::String::new())
2298    }
2299
2300    // int32 compression_level = 3;
2301
2302
2303    pub fn get_compression_level(&self) -> i32 {
2304        self.compression_level
2305    }
2306    pub fn clear_compression_level(&mut self) {
2307        self.compression_level = 0;
2308    }
2309
2310    // Param is passed by value, moved
2311    pub fn set_compression_level(&mut self, v: i32) {
2312        self.compression_level = v;
2313    }
2314
2315    // bool cache_rpc_response = 4;
2316
2317
2318    pub fn get_cache_rpc_response(&self) -> bool {
2319        self.cache_rpc_response
2320    }
2321    pub fn clear_cache_rpc_response(&mut self) {
2322        self.cache_rpc_response = false;
2323    }
2324
2325    // Param is passed by value, moved
2326    pub fn set_cache_rpc_response(&mut self, v: bool) {
2327        self.cache_rpc_response = v;
2328    }
2329
2330    // bool disable_session_connection_sharing = 5;
2331
2332
2333    pub fn get_disable_session_connection_sharing(&self) -> bool {
2334        self.disable_session_connection_sharing
2335    }
2336    pub fn clear_disable_session_connection_sharing(&mut self) {
2337        self.disable_session_connection_sharing = false;
2338    }
2339
2340    // Param is passed by value, moved
2341    pub fn set_disable_session_connection_sharing(&mut self, v: bool) {
2342        self.disable_session_connection_sharing = v;
2343    }
2344}
2345
2346impl ::protobuf::Message for RPCOptions {
2347    fn is_initialized(&self) -> bool {
2348        true
2349    }
2350
2351    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2352        while !is.eof()? {
2353            let (field_number, wire_type) = is.read_tag_unpack()?;
2354            match field_number {
2355                1 => {
2356                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
2357                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2358                    }
2359                    let tmp = is.read_bool()?;
2360                    self.use_rpc_for_inprocess_master = tmp;
2361                },
2362                2 => {
2363                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.compression_algorithm)?;
2364                },
2365                3 => {
2366                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
2367                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2368                    }
2369                    let tmp = is.read_int32()?;
2370                    self.compression_level = tmp;
2371                },
2372                4 => {
2373                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
2374                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2375                    }
2376                    let tmp = is.read_bool()?;
2377                    self.cache_rpc_response = tmp;
2378                },
2379                5 => {
2380                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
2381                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2382                    }
2383                    let tmp = is.read_bool()?;
2384                    self.disable_session_connection_sharing = tmp;
2385                },
2386                _ => {
2387                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
2388                },
2389            };
2390        }
2391        ::std::result::Result::Ok(())
2392    }
2393
2394    // Compute sizes of nested messages
2395    #[allow(unused_variables)]
2396    fn compute_size(&self) -> u32 {
2397        let mut my_size = 0;
2398        if self.use_rpc_for_inprocess_master != false {
2399            my_size += 2;
2400        }
2401        if !self.compression_algorithm.is_empty() {
2402            my_size += ::protobuf::rt::string_size(2, &self.compression_algorithm);
2403        }
2404        if self.compression_level != 0 {
2405            my_size += ::protobuf::rt::value_size(3, self.compression_level, ::protobuf::wire_format::WireTypeVarint);
2406        }
2407        if self.cache_rpc_response != false {
2408            my_size += 2;
2409        }
2410        if self.disable_session_connection_sharing != false {
2411            my_size += 2;
2412        }
2413        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2414        self.cached_size.set(my_size);
2415        my_size
2416    }
2417
2418    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2419        if self.use_rpc_for_inprocess_master != false {
2420            os.write_bool(1, self.use_rpc_for_inprocess_master)?;
2421        }
2422        if !self.compression_algorithm.is_empty() {
2423            os.write_string(2, &self.compression_algorithm)?;
2424        }
2425        if self.compression_level != 0 {
2426            os.write_int32(3, self.compression_level)?;
2427        }
2428        if self.cache_rpc_response != false {
2429            os.write_bool(4, self.cache_rpc_response)?;
2430        }
2431        if self.disable_session_connection_sharing != false {
2432            os.write_bool(5, self.disable_session_connection_sharing)?;
2433        }
2434        os.write_unknown_fields(self.get_unknown_fields())?;
2435        ::std::result::Result::Ok(())
2436    }
2437
2438    fn get_cached_size(&self) -> u32 {
2439        self.cached_size.get()
2440    }
2441
2442    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2443        &self.unknown_fields
2444    }
2445
2446    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2447        &mut self.unknown_fields
2448    }
2449
2450    fn as_any(&self) -> &dyn (::std::any::Any) {
2451        self as &dyn (::std::any::Any)
2452    }
2453    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
2454        self as &mut dyn (::std::any::Any)
2455    }
2456    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
2457        self
2458    }
2459
2460    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
2461        Self::descriptor_static()
2462    }
2463
2464    fn new() -> RPCOptions {
2465        RPCOptions::new()
2466    }
2467
2468    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
2469        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
2470        unsafe {
2471            descriptor.get(|| {
2472                let mut fields = ::std::vec::Vec::new();
2473                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
2474                    "use_rpc_for_inprocess_master",
2475                    |m: &RPCOptions| { &m.use_rpc_for_inprocess_master },
2476                    |m: &mut RPCOptions| { &mut m.use_rpc_for_inprocess_master },
2477                ));
2478                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2479                    "compression_algorithm",
2480                    |m: &RPCOptions| { &m.compression_algorithm },
2481                    |m: &mut RPCOptions| { &mut m.compression_algorithm },
2482                ));
2483                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
2484                    "compression_level",
2485                    |m: &RPCOptions| { &m.compression_level },
2486                    |m: &mut RPCOptions| { &mut m.compression_level },
2487                ));
2488                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
2489                    "cache_rpc_response",
2490                    |m: &RPCOptions| { &m.cache_rpc_response },
2491                    |m: &mut RPCOptions| { &mut m.cache_rpc_response },
2492                ));
2493                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
2494                    "disable_session_connection_sharing",
2495                    |m: &RPCOptions| { &m.disable_session_connection_sharing },
2496                    |m: &mut RPCOptions| { &mut m.disable_session_connection_sharing },
2497                ));
2498                ::protobuf::reflect::MessageDescriptor::new_pb_name::<RPCOptions>(
2499                    "RPCOptions",
2500                    fields,
2501                    file_descriptor_proto()
2502                )
2503            })
2504        }
2505    }
2506
2507    fn default_instance() -> &'static RPCOptions {
2508        static mut instance: ::protobuf::lazy::Lazy<RPCOptions> = ::protobuf::lazy::Lazy::INIT;
2509        unsafe {
2510            instance.get(RPCOptions::new)
2511        }
2512    }
2513}
2514
2515impl ::protobuf::Clear for RPCOptions {
2516    fn clear(&mut self) {
2517        self.use_rpc_for_inprocess_master = false;
2518        self.compression_algorithm.clear();
2519        self.compression_level = 0;
2520        self.cache_rpc_response = false;
2521        self.disable_session_connection_sharing = false;
2522        self.unknown_fields.clear();
2523    }
2524}
2525
2526impl ::std::fmt::Debug for RPCOptions {
2527    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2528        ::protobuf::text_format::fmt(self, f)
2529    }
2530}
2531
2532impl ::protobuf::reflect::ProtobufValue for RPCOptions {
2533    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2534        ::protobuf::reflect::ReflectValueRef::Message(self)
2535    }
2536}
2537
2538#[derive(PartialEq,Clone,Default)]
2539pub struct SessionMetadata {
2540    // message fields
2541    pub name: ::std::string::String,
2542    pub version: i64,
2543    // special fields
2544    pub unknown_fields: ::protobuf::UnknownFields,
2545    pub cached_size: ::protobuf::CachedSize,
2546}
2547
2548impl<'a> ::std::default::Default for &'a SessionMetadata {
2549    fn default() -> &'a SessionMetadata {
2550        <SessionMetadata as ::protobuf::Message>::default_instance()
2551    }
2552}
2553
2554impl SessionMetadata {
2555    pub fn new() -> SessionMetadata {
2556        ::std::default::Default::default()
2557    }
2558
2559    // string name = 1;
2560
2561
2562    pub fn get_name(&self) -> &str {
2563        &self.name
2564    }
2565    pub fn clear_name(&mut self) {
2566        self.name.clear();
2567    }
2568
2569    // Param is passed by value, moved
2570    pub fn set_name(&mut self, v: ::std::string::String) {
2571        self.name = v;
2572    }
2573
2574    // Mutable pointer to the field.
2575    // If field is not initialized, it is initialized with default value first.
2576    pub fn mut_name(&mut self) -> &mut ::std::string::String {
2577        &mut self.name
2578    }
2579
2580    // Take field
2581    pub fn take_name(&mut self) -> ::std::string::String {
2582        ::std::mem::replace(&mut self.name, ::std::string::String::new())
2583    }
2584
2585    // int64 version = 2;
2586
2587
2588    pub fn get_version(&self) -> i64 {
2589        self.version
2590    }
2591    pub fn clear_version(&mut self) {
2592        self.version = 0;
2593    }
2594
2595    // Param is passed by value, moved
2596    pub fn set_version(&mut self, v: i64) {
2597        self.version = v;
2598    }
2599}
2600
2601impl ::protobuf::Message for SessionMetadata {
2602    fn is_initialized(&self) -> bool {
2603        true
2604    }
2605
2606    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2607        while !is.eof()? {
2608            let (field_number, wire_type) = is.read_tag_unpack()?;
2609            match field_number {
2610                1 => {
2611                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
2612                },
2613                2 => {
2614                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
2615                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2616                    }
2617                    let tmp = is.read_int64()?;
2618                    self.version = tmp;
2619                },
2620                _ => {
2621                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
2622                },
2623            };
2624        }
2625        ::std::result::Result::Ok(())
2626    }
2627
2628    // Compute sizes of nested messages
2629    #[allow(unused_variables)]
2630    fn compute_size(&self) -> u32 {
2631        let mut my_size = 0;
2632        if !self.name.is_empty() {
2633            my_size += ::protobuf::rt::string_size(1, &self.name);
2634        }
2635        if self.version != 0 {
2636            my_size += ::protobuf::rt::value_size(2, self.version, ::protobuf::wire_format::WireTypeVarint);
2637        }
2638        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2639        self.cached_size.set(my_size);
2640        my_size
2641    }
2642
2643    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2644        if !self.name.is_empty() {
2645            os.write_string(1, &self.name)?;
2646        }
2647        if self.version != 0 {
2648            os.write_int64(2, self.version)?;
2649        }
2650        os.write_unknown_fields(self.get_unknown_fields())?;
2651        ::std::result::Result::Ok(())
2652    }
2653
2654    fn get_cached_size(&self) -> u32 {
2655        self.cached_size.get()
2656    }
2657
2658    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2659        &self.unknown_fields
2660    }
2661
2662    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2663        &mut self.unknown_fields
2664    }
2665
2666    fn as_any(&self) -> &dyn (::std::any::Any) {
2667        self as &dyn (::std::any::Any)
2668    }
2669    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
2670        self as &mut dyn (::std::any::Any)
2671    }
2672    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
2673        self
2674    }
2675
2676    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
2677        Self::descriptor_static()
2678    }
2679
2680    fn new() -> SessionMetadata {
2681        SessionMetadata::new()
2682    }
2683
2684    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
2685        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
2686        unsafe {
2687            descriptor.get(|| {
2688                let mut fields = ::std::vec::Vec::new();
2689                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2690                    "name",
2691                    |m: &SessionMetadata| { &m.name },
2692                    |m: &mut SessionMetadata| { &mut m.name },
2693                ));
2694                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
2695                    "version",
2696                    |m: &SessionMetadata| { &m.version },
2697                    |m: &mut SessionMetadata| { &mut m.version },
2698                ));
2699                ::protobuf::reflect::MessageDescriptor::new_pb_name::<SessionMetadata>(
2700                    "SessionMetadata",
2701                    fields,
2702                    file_descriptor_proto()
2703                )
2704            })
2705        }
2706    }
2707
2708    fn default_instance() -> &'static SessionMetadata {
2709        static mut instance: ::protobuf::lazy::Lazy<SessionMetadata> = ::protobuf::lazy::Lazy::INIT;
2710        unsafe {
2711            instance.get(SessionMetadata::new)
2712        }
2713    }
2714}
2715
2716impl ::protobuf::Clear for SessionMetadata {
2717    fn clear(&mut self) {
2718        self.name.clear();
2719        self.version = 0;
2720        self.unknown_fields.clear();
2721    }
2722}
2723
2724impl ::std::fmt::Debug for SessionMetadata {
2725    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2726        ::protobuf::text_format::fmt(self, f)
2727    }
2728}
2729
2730impl ::protobuf::reflect::ProtobufValue for SessionMetadata {
2731    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2732        ::protobuf::reflect::ReflectValueRef::Message(self)
2733    }
2734}
2735
2736#[derive(PartialEq,Clone,Default)]
2737pub struct ConfigProto {
2738    // message fields
2739    pub device_count: ::std::collections::HashMap<::std::string::String, i32>,
2740    pub intra_op_parallelism_threads: i32,
2741    pub inter_op_parallelism_threads: i32,
2742    pub use_per_session_threads: bool,
2743    pub session_inter_op_thread_pool: ::protobuf::RepeatedField<ThreadPoolOptionProto>,
2744    pub placement_period: i32,
2745    pub device_filters: ::protobuf::RepeatedField<::std::string::String>,
2746    pub gpu_options: ::protobuf::SingularPtrField<GPUOptions>,
2747    pub allow_soft_placement: bool,
2748    pub log_device_placement: bool,
2749    pub graph_options: ::protobuf::SingularPtrField<GraphOptions>,
2750    pub operation_timeout_in_ms: i64,
2751    pub rpc_options: ::protobuf::SingularPtrField<RPCOptions>,
2752    pub cluster_def: ::protobuf::SingularPtrField<super::cluster::ClusterDef>,
2753    pub isolate_session_state: bool,
2754    pub share_cluster_devices_in_session: bool,
2755    pub experimental: ::protobuf::SingularPtrField<ConfigProto_Experimental>,
2756    // special fields
2757    pub unknown_fields: ::protobuf::UnknownFields,
2758    pub cached_size: ::protobuf::CachedSize,
2759}
2760
2761impl<'a> ::std::default::Default for &'a ConfigProto {
2762    fn default() -> &'a ConfigProto {
2763        <ConfigProto as ::protobuf::Message>::default_instance()
2764    }
2765}
2766
2767impl ConfigProto {
2768    pub fn new() -> ConfigProto {
2769        ::std::default::Default::default()
2770    }
2771
2772    // repeated .tensorflow.ConfigProto.DeviceCountEntry device_count = 1;
2773
2774
2775    pub fn get_device_count(&self) -> &::std::collections::HashMap<::std::string::String, i32> {
2776        &self.device_count
2777    }
2778    pub fn clear_device_count(&mut self) {
2779        self.device_count.clear();
2780    }
2781
2782    // Param is passed by value, moved
2783    pub fn set_device_count(&mut self, v: ::std::collections::HashMap<::std::string::String, i32>) {
2784        self.device_count = v;
2785    }
2786
2787    // Mutable pointer to the field.
2788    pub fn mut_device_count(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, i32> {
2789        &mut self.device_count
2790    }
2791
2792    // Take field
2793    pub fn take_device_count(&mut self) -> ::std::collections::HashMap<::std::string::String, i32> {
2794        ::std::mem::replace(&mut self.device_count, ::std::collections::HashMap::new())
2795    }
2796
2797    // int32 intra_op_parallelism_threads = 2;
2798
2799
2800    pub fn get_intra_op_parallelism_threads(&self) -> i32 {
2801        self.intra_op_parallelism_threads
2802    }
2803    pub fn clear_intra_op_parallelism_threads(&mut self) {
2804        self.intra_op_parallelism_threads = 0;
2805    }
2806
2807    // Param is passed by value, moved
2808    pub fn set_intra_op_parallelism_threads(&mut self, v: i32) {
2809        self.intra_op_parallelism_threads = v;
2810    }
2811
2812    // int32 inter_op_parallelism_threads = 5;
2813
2814
2815    pub fn get_inter_op_parallelism_threads(&self) -> i32 {
2816        self.inter_op_parallelism_threads
2817    }
2818    pub fn clear_inter_op_parallelism_threads(&mut self) {
2819        self.inter_op_parallelism_threads = 0;
2820    }
2821
2822    // Param is passed by value, moved
2823    pub fn set_inter_op_parallelism_threads(&mut self, v: i32) {
2824        self.inter_op_parallelism_threads = v;
2825    }
2826
2827    // bool use_per_session_threads = 9;
2828
2829
2830    pub fn get_use_per_session_threads(&self) -> bool {
2831        self.use_per_session_threads
2832    }
2833    pub fn clear_use_per_session_threads(&mut self) {
2834        self.use_per_session_threads = false;
2835    }
2836
2837    // Param is passed by value, moved
2838    pub fn set_use_per_session_threads(&mut self, v: bool) {
2839        self.use_per_session_threads = v;
2840    }
2841
2842    // repeated .tensorflow.ThreadPoolOptionProto session_inter_op_thread_pool = 12;
2843
2844
2845    pub fn get_session_inter_op_thread_pool(&self) -> &[ThreadPoolOptionProto] {
2846        &self.session_inter_op_thread_pool
2847    }
2848    pub fn clear_session_inter_op_thread_pool(&mut self) {
2849        self.session_inter_op_thread_pool.clear();
2850    }
2851
2852    // Param is passed by value, moved
2853    pub fn set_session_inter_op_thread_pool(&mut self, v: ::protobuf::RepeatedField<ThreadPoolOptionProto>) {
2854        self.session_inter_op_thread_pool = v;
2855    }
2856
2857    // Mutable pointer to the field.
2858    pub fn mut_session_inter_op_thread_pool(&mut self) -> &mut ::protobuf::RepeatedField<ThreadPoolOptionProto> {
2859        &mut self.session_inter_op_thread_pool
2860    }
2861
2862    // Take field
2863    pub fn take_session_inter_op_thread_pool(&mut self) -> ::protobuf::RepeatedField<ThreadPoolOptionProto> {
2864        ::std::mem::replace(&mut self.session_inter_op_thread_pool, ::protobuf::RepeatedField::new())
2865    }
2866
2867    // int32 placement_period = 3;
2868
2869
2870    pub fn get_placement_period(&self) -> i32 {
2871        self.placement_period
2872    }
2873    pub fn clear_placement_period(&mut self) {
2874        self.placement_period = 0;
2875    }
2876
2877    // Param is passed by value, moved
2878    pub fn set_placement_period(&mut self, v: i32) {
2879        self.placement_period = v;
2880    }
2881
2882    // repeated string device_filters = 4;
2883
2884
2885    pub fn get_device_filters(&self) -> &[::std::string::String] {
2886        &self.device_filters
2887    }
2888    pub fn clear_device_filters(&mut self) {
2889        self.device_filters.clear();
2890    }
2891
2892    // Param is passed by value, moved
2893    pub fn set_device_filters(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
2894        self.device_filters = v;
2895    }
2896
2897    // Mutable pointer to the field.
2898    pub fn mut_device_filters(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
2899        &mut self.device_filters
2900    }
2901
2902    // Take field
2903    pub fn take_device_filters(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
2904        ::std::mem::replace(&mut self.device_filters, ::protobuf::RepeatedField::new())
2905    }
2906
2907    // .tensorflow.GPUOptions gpu_options = 6;
2908
2909
2910    pub fn get_gpu_options(&self) -> &GPUOptions {
2911        self.gpu_options.as_ref().unwrap_or_else(|| GPUOptions::default_instance())
2912    }
2913    pub fn clear_gpu_options(&mut self) {
2914        self.gpu_options.clear();
2915    }
2916
2917    pub fn has_gpu_options(&self) -> bool {
2918        self.gpu_options.is_some()
2919    }
2920
2921    // Param is passed by value, moved
2922    pub fn set_gpu_options(&mut self, v: GPUOptions) {
2923        self.gpu_options = ::protobuf::SingularPtrField::some(v);
2924    }
2925
2926    // Mutable pointer to the field.
2927    // If field is not initialized, it is initialized with default value first.
2928    pub fn mut_gpu_options(&mut self) -> &mut GPUOptions {
2929        if self.gpu_options.is_none() {
2930            self.gpu_options.set_default();
2931        }
2932        self.gpu_options.as_mut().unwrap()
2933    }
2934
2935    // Take field
2936    pub fn take_gpu_options(&mut self) -> GPUOptions {
2937        self.gpu_options.take().unwrap_or_else(|| GPUOptions::new())
2938    }
2939
2940    // bool allow_soft_placement = 7;
2941
2942
2943    pub fn get_allow_soft_placement(&self) -> bool {
2944        self.allow_soft_placement
2945    }
2946    pub fn clear_allow_soft_placement(&mut self) {
2947        self.allow_soft_placement = false;
2948    }
2949
2950    // Param is passed by value, moved
2951    pub fn set_allow_soft_placement(&mut self, v: bool) {
2952        self.allow_soft_placement = v;
2953    }
2954
2955    // bool log_device_placement = 8;
2956
2957
2958    pub fn get_log_device_placement(&self) -> bool {
2959        self.log_device_placement
2960    }
2961    pub fn clear_log_device_placement(&mut self) {
2962        self.log_device_placement = false;
2963    }
2964
2965    // Param is passed by value, moved
2966    pub fn set_log_device_placement(&mut self, v: bool) {
2967        self.log_device_placement = v;
2968    }
2969
2970    // .tensorflow.GraphOptions graph_options = 10;
2971
2972
2973    pub fn get_graph_options(&self) -> &GraphOptions {
2974        self.graph_options.as_ref().unwrap_or_else(|| GraphOptions::default_instance())
2975    }
2976    pub fn clear_graph_options(&mut self) {
2977        self.graph_options.clear();
2978    }
2979
2980    pub fn has_graph_options(&self) -> bool {
2981        self.graph_options.is_some()
2982    }
2983
2984    // Param is passed by value, moved
2985    pub fn set_graph_options(&mut self, v: GraphOptions) {
2986        self.graph_options = ::protobuf::SingularPtrField::some(v);
2987    }
2988
2989    // Mutable pointer to the field.
2990    // If field is not initialized, it is initialized with default value first.
2991    pub fn mut_graph_options(&mut self) -> &mut GraphOptions {
2992        if self.graph_options.is_none() {
2993            self.graph_options.set_default();
2994        }
2995        self.graph_options.as_mut().unwrap()
2996    }
2997
2998    // Take field
2999    pub fn take_graph_options(&mut self) -> GraphOptions {
3000        self.graph_options.take().unwrap_or_else(|| GraphOptions::new())
3001    }
3002
3003    // int64 operation_timeout_in_ms = 11;
3004
3005
3006    pub fn get_operation_timeout_in_ms(&self) -> i64 {
3007        self.operation_timeout_in_ms
3008    }
3009    pub fn clear_operation_timeout_in_ms(&mut self) {
3010        self.operation_timeout_in_ms = 0;
3011    }
3012
3013    // Param is passed by value, moved
3014    pub fn set_operation_timeout_in_ms(&mut self, v: i64) {
3015        self.operation_timeout_in_ms = v;
3016    }
3017
3018    // .tensorflow.RPCOptions rpc_options = 13;
3019
3020
3021    pub fn get_rpc_options(&self) -> &RPCOptions {
3022        self.rpc_options.as_ref().unwrap_or_else(|| RPCOptions::default_instance())
3023    }
3024    pub fn clear_rpc_options(&mut self) {
3025        self.rpc_options.clear();
3026    }
3027
3028    pub fn has_rpc_options(&self) -> bool {
3029        self.rpc_options.is_some()
3030    }
3031
3032    // Param is passed by value, moved
3033    pub fn set_rpc_options(&mut self, v: RPCOptions) {
3034        self.rpc_options = ::protobuf::SingularPtrField::some(v);
3035    }
3036
3037    // Mutable pointer to the field.
3038    // If field is not initialized, it is initialized with default value first.
3039    pub fn mut_rpc_options(&mut self) -> &mut RPCOptions {
3040        if self.rpc_options.is_none() {
3041            self.rpc_options.set_default();
3042        }
3043        self.rpc_options.as_mut().unwrap()
3044    }
3045
3046    // Take field
3047    pub fn take_rpc_options(&mut self) -> RPCOptions {
3048        self.rpc_options.take().unwrap_or_else(|| RPCOptions::new())
3049    }
3050
3051    // .tensorflow.ClusterDef cluster_def = 14;
3052
3053
3054    pub fn get_cluster_def(&self) -> &super::cluster::ClusterDef {
3055        self.cluster_def.as_ref().unwrap_or_else(|| super::cluster::ClusterDef::default_instance())
3056    }
3057    pub fn clear_cluster_def(&mut self) {
3058        self.cluster_def.clear();
3059    }
3060
3061    pub fn has_cluster_def(&self) -> bool {
3062        self.cluster_def.is_some()
3063    }
3064
3065    // Param is passed by value, moved
3066    pub fn set_cluster_def(&mut self, v: super::cluster::ClusterDef) {
3067        self.cluster_def = ::protobuf::SingularPtrField::some(v);
3068    }
3069
3070    // Mutable pointer to the field.
3071    // If field is not initialized, it is initialized with default value first.
3072    pub fn mut_cluster_def(&mut self) -> &mut super::cluster::ClusterDef {
3073        if self.cluster_def.is_none() {
3074            self.cluster_def.set_default();
3075        }
3076        self.cluster_def.as_mut().unwrap()
3077    }
3078
3079    // Take field
3080    pub fn take_cluster_def(&mut self) -> super::cluster::ClusterDef {
3081        self.cluster_def.take().unwrap_or_else(|| super::cluster::ClusterDef::new())
3082    }
3083
3084    // bool isolate_session_state = 15;
3085
3086
3087    pub fn get_isolate_session_state(&self) -> bool {
3088        self.isolate_session_state
3089    }
3090    pub fn clear_isolate_session_state(&mut self) {
3091        self.isolate_session_state = false;
3092    }
3093
3094    // Param is passed by value, moved
3095    pub fn set_isolate_session_state(&mut self, v: bool) {
3096        self.isolate_session_state = v;
3097    }
3098
3099    // bool share_cluster_devices_in_session = 17;
3100
3101
3102    pub fn get_share_cluster_devices_in_session(&self) -> bool {
3103        self.share_cluster_devices_in_session
3104    }
3105    pub fn clear_share_cluster_devices_in_session(&mut self) {
3106        self.share_cluster_devices_in_session = false;
3107    }
3108
3109    // Param is passed by value, moved
3110    pub fn set_share_cluster_devices_in_session(&mut self, v: bool) {
3111        self.share_cluster_devices_in_session = v;
3112    }
3113
3114    // .tensorflow.ConfigProto.Experimental experimental = 16;
3115
3116
3117    pub fn get_experimental(&self) -> &ConfigProto_Experimental {
3118        self.experimental.as_ref().unwrap_or_else(|| ConfigProto_Experimental::default_instance())
3119    }
3120    pub fn clear_experimental(&mut self) {
3121        self.experimental.clear();
3122    }
3123
3124    pub fn has_experimental(&self) -> bool {
3125        self.experimental.is_some()
3126    }
3127
3128    // Param is passed by value, moved
3129    pub fn set_experimental(&mut self, v: ConfigProto_Experimental) {
3130        self.experimental = ::protobuf::SingularPtrField::some(v);
3131    }
3132
3133    // Mutable pointer to the field.
3134    // If field is not initialized, it is initialized with default value first.
3135    pub fn mut_experimental(&mut self) -> &mut ConfigProto_Experimental {
3136        if self.experimental.is_none() {
3137            self.experimental.set_default();
3138        }
3139        self.experimental.as_mut().unwrap()
3140    }
3141
3142    // Take field
3143    pub fn take_experimental(&mut self) -> ConfigProto_Experimental {
3144        self.experimental.take().unwrap_or_else(|| ConfigProto_Experimental::new())
3145    }
3146}
3147
3148impl ::protobuf::Message for ConfigProto {
3149    fn is_initialized(&self) -> bool {
3150        for v in &self.session_inter_op_thread_pool {
3151            if !v.is_initialized() {
3152                return false;
3153            }
3154        };
3155        for v in &self.gpu_options {
3156            if !v.is_initialized() {
3157                return false;
3158            }
3159        };
3160        for v in &self.graph_options {
3161            if !v.is_initialized() {
3162                return false;
3163            }
3164        };
3165        for v in &self.rpc_options {
3166            if !v.is_initialized() {
3167                return false;
3168            }
3169        };
3170        for v in &self.cluster_def {
3171            if !v.is_initialized() {
3172                return false;
3173            }
3174        };
3175        for v in &self.experimental {
3176            if !v.is_initialized() {
3177                return false;
3178            }
3179        };
3180        true
3181    }
3182
3183    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3184        while !is.eof()? {
3185            let (field_number, wire_type) = is.read_tag_unpack()?;
3186            match field_number {
3187                1 => {
3188                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt32>(wire_type, is, &mut self.device_count)?;
3189                },
3190                2 => {
3191                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3192                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3193                    }
3194                    let tmp = is.read_int32()?;
3195                    self.intra_op_parallelism_threads = tmp;
3196                },
3197                5 => {
3198                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3199                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3200                    }
3201                    let tmp = is.read_int32()?;
3202                    self.inter_op_parallelism_threads = tmp;
3203                },
3204                9 => {
3205                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3206                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3207                    }
3208                    let tmp = is.read_bool()?;
3209                    self.use_per_session_threads = tmp;
3210                },
3211                12 => {
3212                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.session_inter_op_thread_pool)?;
3213                },
3214                3 => {
3215                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3216                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3217                    }
3218                    let tmp = is.read_int32()?;
3219                    self.placement_period = tmp;
3220                },
3221                4 => {
3222                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.device_filters)?;
3223                },
3224                6 => {
3225                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.gpu_options)?;
3226                },
3227                7 => {
3228                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3229                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3230                    }
3231                    let tmp = is.read_bool()?;
3232                    self.allow_soft_placement = tmp;
3233                },
3234                8 => {
3235                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3236                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3237                    }
3238                    let tmp = is.read_bool()?;
3239                    self.log_device_placement = tmp;
3240                },
3241                10 => {
3242                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.graph_options)?;
3243                },
3244                11 => {
3245                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3246                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3247                    }
3248                    let tmp = is.read_int64()?;
3249                    self.operation_timeout_in_ms = tmp;
3250                },
3251                13 => {
3252                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.rpc_options)?;
3253                },
3254                14 => {
3255                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.cluster_def)?;
3256                },
3257                15 => {
3258                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3259                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3260                    }
3261                    let tmp = is.read_bool()?;
3262                    self.isolate_session_state = tmp;
3263                },
3264                17 => {
3265                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3266                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3267                    }
3268                    let tmp = is.read_bool()?;
3269                    self.share_cluster_devices_in_session = tmp;
3270                },
3271                16 => {
3272                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.experimental)?;
3273                },
3274                _ => {
3275                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
3276                },
3277            };
3278        }
3279        ::std::result::Result::Ok(())
3280    }
3281
3282    // Compute sizes of nested messages
3283    #[allow(unused_variables)]
3284    fn compute_size(&self) -> u32 {
3285        let mut my_size = 0;
3286        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt32>(1, &self.device_count);
3287        if self.intra_op_parallelism_threads != 0 {
3288            my_size += ::protobuf::rt::value_size(2, self.intra_op_parallelism_threads, ::protobuf::wire_format::WireTypeVarint);
3289        }
3290        if self.inter_op_parallelism_threads != 0 {
3291            my_size += ::protobuf::rt::value_size(5, self.inter_op_parallelism_threads, ::protobuf::wire_format::WireTypeVarint);
3292        }
3293        if self.use_per_session_threads != false {
3294            my_size += 2;
3295        }
3296        for value in &self.session_inter_op_thread_pool {
3297            let len = value.compute_size();
3298            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3299        };
3300        if self.placement_period != 0 {
3301            my_size += ::protobuf::rt::value_size(3, self.placement_period, ::protobuf::wire_format::WireTypeVarint);
3302        }
3303        for value in &self.device_filters {
3304            my_size += ::protobuf::rt::string_size(4, &value);
3305        };
3306        if let Some(ref v) = self.gpu_options.as_ref() {
3307            let len = v.compute_size();
3308            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3309        }
3310        if self.allow_soft_placement != false {
3311            my_size += 2;
3312        }
3313        if self.log_device_placement != false {
3314            my_size += 2;
3315        }
3316        if let Some(ref v) = self.graph_options.as_ref() {
3317            let len = v.compute_size();
3318            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3319        }
3320        if self.operation_timeout_in_ms != 0 {
3321            my_size += ::protobuf::rt::value_size(11, self.operation_timeout_in_ms, ::protobuf::wire_format::WireTypeVarint);
3322        }
3323        if let Some(ref v) = self.rpc_options.as_ref() {
3324            let len = v.compute_size();
3325            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3326        }
3327        if let Some(ref v) = self.cluster_def.as_ref() {
3328            let len = v.compute_size();
3329            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3330        }
3331        if self.isolate_session_state != false {
3332            my_size += 2;
3333        }
3334        if self.share_cluster_devices_in_session != false {
3335            my_size += 3;
3336        }
3337        if let Some(ref v) = self.experimental.as_ref() {
3338            let len = v.compute_size();
3339            my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3340        }
3341        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
3342        self.cached_size.set(my_size);
3343        my_size
3344    }
3345
3346    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3347        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt32>(1, &self.device_count, os)?;
3348        if self.intra_op_parallelism_threads != 0 {
3349            os.write_int32(2, self.intra_op_parallelism_threads)?;
3350        }
3351        if self.inter_op_parallelism_threads != 0 {
3352            os.write_int32(5, self.inter_op_parallelism_threads)?;
3353        }
3354        if self.use_per_session_threads != false {
3355            os.write_bool(9, self.use_per_session_threads)?;
3356        }
3357        for v in &self.session_inter_op_thread_pool {
3358            os.write_tag(12, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3359            os.write_raw_varint32(v.get_cached_size())?;
3360            v.write_to_with_cached_sizes(os)?;
3361        };
3362        if self.placement_period != 0 {
3363            os.write_int32(3, self.placement_period)?;
3364        }
3365        for v in &self.device_filters {
3366            os.write_string(4, &v)?;
3367        };
3368        if let Some(ref v) = self.gpu_options.as_ref() {
3369            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3370            os.write_raw_varint32(v.get_cached_size())?;
3371            v.write_to_with_cached_sizes(os)?;
3372        }
3373        if self.allow_soft_placement != false {
3374            os.write_bool(7, self.allow_soft_placement)?;
3375        }
3376        if self.log_device_placement != false {
3377            os.write_bool(8, self.log_device_placement)?;
3378        }
3379        if let Some(ref v) = self.graph_options.as_ref() {
3380            os.write_tag(10, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3381            os.write_raw_varint32(v.get_cached_size())?;
3382            v.write_to_with_cached_sizes(os)?;
3383        }
3384        if self.operation_timeout_in_ms != 0 {
3385            os.write_int64(11, self.operation_timeout_in_ms)?;
3386        }
3387        if let Some(ref v) = self.rpc_options.as_ref() {
3388            os.write_tag(13, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3389            os.write_raw_varint32(v.get_cached_size())?;
3390            v.write_to_with_cached_sizes(os)?;
3391        }
3392        if let Some(ref v) = self.cluster_def.as_ref() {
3393            os.write_tag(14, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3394            os.write_raw_varint32(v.get_cached_size())?;
3395            v.write_to_with_cached_sizes(os)?;
3396        }
3397        if self.isolate_session_state != false {
3398            os.write_bool(15, self.isolate_session_state)?;
3399        }
3400        if self.share_cluster_devices_in_session != false {
3401            os.write_bool(17, self.share_cluster_devices_in_session)?;
3402        }
3403        if let Some(ref v) = self.experimental.as_ref() {
3404            os.write_tag(16, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3405            os.write_raw_varint32(v.get_cached_size())?;
3406            v.write_to_with_cached_sizes(os)?;
3407        }
3408        os.write_unknown_fields(self.get_unknown_fields())?;
3409        ::std::result::Result::Ok(())
3410    }
3411
3412    fn get_cached_size(&self) -> u32 {
3413        self.cached_size.get()
3414    }
3415
3416    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
3417        &self.unknown_fields
3418    }
3419
3420    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
3421        &mut self.unknown_fields
3422    }
3423
3424    fn as_any(&self) -> &dyn (::std::any::Any) {
3425        self as &dyn (::std::any::Any)
3426    }
3427    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
3428        self as &mut dyn (::std::any::Any)
3429    }
3430    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
3431        self
3432    }
3433
3434    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
3435        Self::descriptor_static()
3436    }
3437
3438    fn new() -> ConfigProto {
3439        ConfigProto::new()
3440    }
3441
3442    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
3443        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
3444        unsafe {
3445            descriptor.get(|| {
3446                let mut fields = ::std::vec::Vec::new();
3447                fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeInt32>(
3448                    "device_count",
3449                    |m: &ConfigProto| { &m.device_count },
3450                    |m: &mut ConfigProto| { &mut m.device_count },
3451                ));
3452                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
3453                    "intra_op_parallelism_threads",
3454                    |m: &ConfigProto| { &m.intra_op_parallelism_threads },
3455                    |m: &mut ConfigProto| { &mut m.intra_op_parallelism_threads },
3456                ));
3457                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
3458                    "inter_op_parallelism_threads",
3459                    |m: &ConfigProto| { &m.inter_op_parallelism_threads },
3460                    |m: &mut ConfigProto| { &mut m.inter_op_parallelism_threads },
3461                ));
3462                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
3463                    "use_per_session_threads",
3464                    |m: &ConfigProto| { &m.use_per_session_threads },
3465                    |m: &mut ConfigProto| { &mut m.use_per_session_threads },
3466                ));
3467                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ThreadPoolOptionProto>>(
3468                    "session_inter_op_thread_pool",
3469                    |m: &ConfigProto| { &m.session_inter_op_thread_pool },
3470                    |m: &mut ConfigProto| { &mut m.session_inter_op_thread_pool },
3471                ));
3472                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
3473                    "placement_period",
3474                    |m: &ConfigProto| { &m.placement_period },
3475                    |m: &mut ConfigProto| { &mut m.placement_period },
3476                ));
3477                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
3478                    "device_filters",
3479                    |m: &ConfigProto| { &m.device_filters },
3480                    |m: &mut ConfigProto| { &mut m.device_filters },
3481                ));
3482                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<GPUOptions>>(
3483                    "gpu_options",
3484                    |m: &ConfigProto| { &m.gpu_options },
3485                    |m: &mut ConfigProto| { &mut m.gpu_options },
3486                ));
3487                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
3488                    "allow_soft_placement",
3489                    |m: &ConfigProto| { &m.allow_soft_placement },
3490                    |m: &mut ConfigProto| { &mut m.allow_soft_placement },
3491                ));
3492                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
3493                    "log_device_placement",
3494                    |m: &ConfigProto| { &m.log_device_placement },
3495                    |m: &mut ConfigProto| { &mut m.log_device_placement },
3496                ));
3497                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<GraphOptions>>(
3498                    "graph_options",
3499                    |m: &ConfigProto| { &m.graph_options },
3500                    |m: &mut ConfigProto| { &mut m.graph_options },
3501                ));
3502                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
3503                    "operation_timeout_in_ms",
3504                    |m: &ConfigProto| { &m.operation_timeout_in_ms },
3505                    |m: &mut ConfigProto| { &mut m.operation_timeout_in_ms },
3506                ));
3507                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RPCOptions>>(
3508                    "rpc_options",
3509                    |m: &ConfigProto| { &m.rpc_options },
3510                    |m: &mut ConfigProto| { &mut m.rpc_options },
3511                ));
3512                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::cluster::ClusterDef>>(
3513                    "cluster_def",
3514                    |m: &ConfigProto| { &m.cluster_def },
3515                    |m: &mut ConfigProto| { &mut m.cluster_def },
3516                ));
3517                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
3518                    "isolate_session_state",
3519                    |m: &ConfigProto| { &m.isolate_session_state },
3520                    |m: &mut ConfigProto| { &mut m.isolate_session_state },
3521                ));
3522                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
3523                    "share_cluster_devices_in_session",
3524                    |m: &ConfigProto| { &m.share_cluster_devices_in_session },
3525                    |m: &mut ConfigProto| { &mut m.share_cluster_devices_in_session },
3526                ));
3527                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ConfigProto_Experimental>>(
3528                    "experimental",
3529                    |m: &ConfigProto| { &m.experimental },
3530                    |m: &mut ConfigProto| { &mut m.experimental },
3531                ));
3532                ::protobuf::reflect::MessageDescriptor::new_pb_name::<ConfigProto>(
3533                    "ConfigProto",
3534                    fields,
3535                    file_descriptor_proto()
3536                )
3537            })
3538        }
3539    }
3540
3541    fn default_instance() -> &'static ConfigProto {
3542        static mut instance: ::protobuf::lazy::Lazy<ConfigProto> = ::protobuf::lazy::Lazy::INIT;
3543        unsafe {
3544            instance.get(ConfigProto::new)
3545        }
3546    }
3547}
3548
3549impl ::protobuf::Clear for ConfigProto {
3550    fn clear(&mut self) {
3551        self.device_count.clear();
3552        self.intra_op_parallelism_threads = 0;
3553        self.inter_op_parallelism_threads = 0;
3554        self.use_per_session_threads = false;
3555        self.session_inter_op_thread_pool.clear();
3556        self.placement_period = 0;
3557        self.device_filters.clear();
3558        self.gpu_options.clear();
3559        self.allow_soft_placement = false;
3560        self.log_device_placement = false;
3561        self.graph_options.clear();
3562        self.operation_timeout_in_ms = 0;
3563        self.rpc_options.clear();
3564        self.cluster_def.clear();
3565        self.isolate_session_state = false;
3566        self.share_cluster_devices_in_session = false;
3567        self.experimental.clear();
3568        self.unknown_fields.clear();
3569    }
3570}
3571
3572impl ::std::fmt::Debug for ConfigProto {
3573    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3574        ::protobuf::text_format::fmt(self, f)
3575    }
3576}
3577
3578impl ::protobuf::reflect::ProtobufValue for ConfigProto {
3579    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
3580        ::protobuf::reflect::ReflectValueRef::Message(self)
3581    }
3582}
3583
3584#[derive(PartialEq,Clone,Default)]
3585pub struct ConfigProto_Experimental {
3586    // message fields
3587    pub collective_group_leader: ::std::string::String,
3588    pub executor_type: ::std::string::String,
3589    pub recv_buf_max_chunk: i32,
3590    pub use_numa_affinity: bool,
3591    pub collective_deterministic_sequential_execution: bool,
3592    pub collective_nccl: bool,
3593    pub share_session_state_in_clusterspec_propagation: bool,
3594    pub disable_thread_spinning: bool,
3595    pub share_cluster_devices_in_session: bool,
3596    pub session_metadata: ::protobuf::SingularPtrField<SessionMetadata>,
3597    pub optimize_for_static_graph: bool,
3598    pub enable_mlir_bridge: bool,
3599    pub enable_mlir_graph_optimization: bool,
3600    pub disable_output_partition_graphs: bool,
3601    pub xla_fusion_autotuner_thresh: i64,
3602    // special fields
3603    pub unknown_fields: ::protobuf::UnknownFields,
3604    pub cached_size: ::protobuf::CachedSize,
3605}
3606
3607impl<'a> ::std::default::Default for &'a ConfigProto_Experimental {
3608    fn default() -> &'a ConfigProto_Experimental {
3609        <ConfigProto_Experimental as ::protobuf::Message>::default_instance()
3610    }
3611}
3612
3613impl ConfigProto_Experimental {
3614    pub fn new() -> ConfigProto_Experimental {
3615        ::std::default::Default::default()
3616    }
3617
3618    // string collective_group_leader = 1;
3619
3620
3621    pub fn get_collective_group_leader(&self) -> &str {
3622        &self.collective_group_leader
3623    }
3624    pub fn clear_collective_group_leader(&mut self) {
3625        self.collective_group_leader.clear();
3626    }
3627
3628    // Param is passed by value, moved
3629    pub fn set_collective_group_leader(&mut self, v: ::std::string::String) {
3630        self.collective_group_leader = v;
3631    }
3632
3633    // Mutable pointer to the field.
3634    // If field is not initialized, it is initialized with default value first.
3635    pub fn mut_collective_group_leader(&mut self) -> &mut ::std::string::String {
3636        &mut self.collective_group_leader
3637    }
3638
3639    // Take field
3640    pub fn take_collective_group_leader(&mut self) -> ::std::string::String {
3641        ::std::mem::replace(&mut self.collective_group_leader, ::std::string::String::new())
3642    }
3643
3644    // string executor_type = 3;
3645
3646
3647    pub fn get_executor_type(&self) -> &str {
3648        &self.executor_type
3649    }
3650    pub fn clear_executor_type(&mut self) {
3651        self.executor_type.clear();
3652    }
3653
3654    // Param is passed by value, moved
3655    pub fn set_executor_type(&mut self, v: ::std::string::String) {
3656        self.executor_type = v;
3657    }
3658
3659    // Mutable pointer to the field.
3660    // If field is not initialized, it is initialized with default value first.
3661    pub fn mut_executor_type(&mut self) -> &mut ::std::string::String {
3662        &mut self.executor_type
3663    }
3664
3665    // Take field
3666    pub fn take_executor_type(&mut self) -> ::std::string::String {
3667        ::std::mem::replace(&mut self.executor_type, ::std::string::String::new())
3668    }
3669
3670    // int32 recv_buf_max_chunk = 4;
3671
3672
3673    pub fn get_recv_buf_max_chunk(&self) -> i32 {
3674        self.recv_buf_max_chunk
3675    }
3676    pub fn clear_recv_buf_max_chunk(&mut self) {
3677        self.recv_buf_max_chunk = 0;
3678    }
3679
3680    // Param is passed by value, moved
3681    pub fn set_recv_buf_max_chunk(&mut self, v: i32) {
3682        self.recv_buf_max_chunk = v;
3683    }
3684
3685    // bool use_numa_affinity = 5;
3686
3687
3688    pub fn get_use_numa_affinity(&self) -> bool {
3689        self.use_numa_affinity
3690    }
3691    pub fn clear_use_numa_affinity(&mut self) {
3692        self.use_numa_affinity = false;
3693    }
3694
3695    // Param is passed by value, moved
3696    pub fn set_use_numa_affinity(&mut self, v: bool) {
3697        self.use_numa_affinity = v;
3698    }
3699
3700    // bool collective_deterministic_sequential_execution = 6;
3701
3702
3703    pub fn get_collective_deterministic_sequential_execution(&self) -> bool {
3704        self.collective_deterministic_sequential_execution
3705    }
3706    pub fn clear_collective_deterministic_sequential_execution(&mut self) {
3707        self.collective_deterministic_sequential_execution = false;
3708    }
3709
3710    // Param is passed by value, moved
3711    pub fn set_collective_deterministic_sequential_execution(&mut self, v: bool) {
3712        self.collective_deterministic_sequential_execution = v;
3713    }
3714
3715    // bool collective_nccl = 7;
3716
3717
3718    pub fn get_collective_nccl(&self) -> bool {
3719        self.collective_nccl
3720    }
3721    pub fn clear_collective_nccl(&mut self) {
3722        self.collective_nccl = false;
3723    }
3724
3725    // Param is passed by value, moved
3726    pub fn set_collective_nccl(&mut self, v: bool) {
3727        self.collective_nccl = v;
3728    }
3729
3730    // bool share_session_state_in_clusterspec_propagation = 8;
3731
3732
3733    pub fn get_share_session_state_in_clusterspec_propagation(&self) -> bool {
3734        self.share_session_state_in_clusterspec_propagation
3735    }
3736    pub fn clear_share_session_state_in_clusterspec_propagation(&mut self) {
3737        self.share_session_state_in_clusterspec_propagation = false;
3738    }
3739
3740    // Param is passed by value, moved
3741    pub fn set_share_session_state_in_clusterspec_propagation(&mut self, v: bool) {
3742        self.share_session_state_in_clusterspec_propagation = v;
3743    }
3744
3745    // bool disable_thread_spinning = 9;
3746
3747
3748    pub fn get_disable_thread_spinning(&self) -> bool {
3749        self.disable_thread_spinning
3750    }
3751    pub fn clear_disable_thread_spinning(&mut self) {
3752        self.disable_thread_spinning = false;
3753    }
3754
3755    // Param is passed by value, moved
3756    pub fn set_disable_thread_spinning(&mut self, v: bool) {
3757        self.disable_thread_spinning = v;
3758    }
3759
3760    // bool share_cluster_devices_in_session = 10;
3761
3762
3763    pub fn get_share_cluster_devices_in_session(&self) -> bool {
3764        self.share_cluster_devices_in_session
3765    }
3766    pub fn clear_share_cluster_devices_in_session(&mut self) {
3767        self.share_cluster_devices_in_session = false;
3768    }
3769
3770    // Param is passed by value, moved
3771    pub fn set_share_cluster_devices_in_session(&mut self, v: bool) {
3772        self.share_cluster_devices_in_session = v;
3773    }
3774
3775    // .tensorflow.SessionMetadata session_metadata = 11;
3776
3777
3778    pub fn get_session_metadata(&self) -> &SessionMetadata {
3779        self.session_metadata.as_ref().unwrap_or_else(|| SessionMetadata::default_instance())
3780    }
3781    pub fn clear_session_metadata(&mut self) {
3782        self.session_metadata.clear();
3783    }
3784
3785    pub fn has_session_metadata(&self) -> bool {
3786        self.session_metadata.is_some()
3787    }
3788
3789    // Param is passed by value, moved
3790    pub fn set_session_metadata(&mut self, v: SessionMetadata) {
3791        self.session_metadata = ::protobuf::SingularPtrField::some(v);
3792    }
3793
3794    // Mutable pointer to the field.
3795    // If field is not initialized, it is initialized with default value first.
3796    pub fn mut_session_metadata(&mut self) -> &mut SessionMetadata {
3797        if self.session_metadata.is_none() {
3798            self.session_metadata.set_default();
3799        }
3800        self.session_metadata.as_mut().unwrap()
3801    }
3802
3803    // Take field
3804    pub fn take_session_metadata(&mut self) -> SessionMetadata {
3805        self.session_metadata.take().unwrap_or_else(|| SessionMetadata::new())
3806    }
3807
3808    // bool optimize_for_static_graph = 12;
3809
3810
3811    pub fn get_optimize_for_static_graph(&self) -> bool {
3812        self.optimize_for_static_graph
3813    }
3814    pub fn clear_optimize_for_static_graph(&mut self) {
3815        self.optimize_for_static_graph = false;
3816    }
3817
3818    // Param is passed by value, moved
3819    pub fn set_optimize_for_static_graph(&mut self, v: bool) {
3820        self.optimize_for_static_graph = v;
3821    }
3822
3823    // bool enable_mlir_bridge = 13;
3824
3825
3826    pub fn get_enable_mlir_bridge(&self) -> bool {
3827        self.enable_mlir_bridge
3828    }
3829    pub fn clear_enable_mlir_bridge(&mut self) {
3830        self.enable_mlir_bridge = false;
3831    }
3832
3833    // Param is passed by value, moved
3834    pub fn set_enable_mlir_bridge(&mut self, v: bool) {
3835        self.enable_mlir_bridge = v;
3836    }
3837
3838    // bool enable_mlir_graph_optimization = 16;
3839
3840
3841    pub fn get_enable_mlir_graph_optimization(&self) -> bool {
3842        self.enable_mlir_graph_optimization
3843    }
3844    pub fn clear_enable_mlir_graph_optimization(&mut self) {
3845        self.enable_mlir_graph_optimization = false;
3846    }
3847
3848    // Param is passed by value, moved
3849    pub fn set_enable_mlir_graph_optimization(&mut self, v: bool) {
3850        self.enable_mlir_graph_optimization = v;
3851    }
3852
3853    // bool disable_output_partition_graphs = 14;
3854
3855
3856    pub fn get_disable_output_partition_graphs(&self) -> bool {
3857        self.disable_output_partition_graphs
3858    }
3859    pub fn clear_disable_output_partition_graphs(&mut self) {
3860        self.disable_output_partition_graphs = false;
3861    }
3862
3863    // Param is passed by value, moved
3864    pub fn set_disable_output_partition_graphs(&mut self, v: bool) {
3865        self.disable_output_partition_graphs = v;
3866    }
3867
3868    // int64 xla_fusion_autotuner_thresh = 15;
3869
3870
3871    pub fn get_xla_fusion_autotuner_thresh(&self) -> i64 {
3872        self.xla_fusion_autotuner_thresh
3873    }
3874    pub fn clear_xla_fusion_autotuner_thresh(&mut self) {
3875        self.xla_fusion_autotuner_thresh = 0;
3876    }
3877
3878    // Param is passed by value, moved
3879    pub fn set_xla_fusion_autotuner_thresh(&mut self, v: i64) {
3880        self.xla_fusion_autotuner_thresh = v;
3881    }
3882}
3883
3884impl ::protobuf::Message for ConfigProto_Experimental {
3885    fn is_initialized(&self) -> bool {
3886        for v in &self.session_metadata {
3887            if !v.is_initialized() {
3888                return false;
3889            }
3890        };
3891        true
3892    }
3893
3894    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3895        while !is.eof()? {
3896            let (field_number, wire_type) = is.read_tag_unpack()?;
3897            match field_number {
3898                1 => {
3899                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.collective_group_leader)?;
3900                },
3901                3 => {
3902                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.executor_type)?;
3903                },
3904                4 => {
3905                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3906                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3907                    }
3908                    let tmp = is.read_int32()?;
3909                    self.recv_buf_max_chunk = tmp;
3910                },
3911                5 => {
3912                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3913                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3914                    }
3915                    let tmp = is.read_bool()?;
3916                    self.use_numa_affinity = tmp;
3917                },
3918                6 => {
3919                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3920                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3921                    }
3922                    let tmp = is.read_bool()?;
3923                    self.collective_deterministic_sequential_execution = tmp;
3924                },
3925                7 => {
3926                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3927                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3928                    }
3929                    let tmp = is.read_bool()?;
3930                    self.collective_nccl = tmp;
3931                },
3932                8 => {
3933                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3934                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3935                    }
3936                    let tmp = is.read_bool()?;
3937                    self.share_session_state_in_clusterspec_propagation = tmp;
3938                },
3939                9 => {
3940                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3941                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3942                    }
3943                    let tmp = is.read_bool()?;
3944                    self.disable_thread_spinning = tmp;
3945                },
3946                10 => {
3947                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3948                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3949                    }
3950                    let tmp = is.read_bool()?;
3951                    self.share_cluster_devices_in_session = tmp;
3952                },
3953                11 => {
3954                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.session_metadata)?;
3955                },
3956                12 => {
3957                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3958                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3959                    }
3960                    let tmp = is.read_bool()?;
3961                    self.optimize_for_static_graph = tmp;
3962                },
3963                13 => {
3964                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3965                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3966                    }
3967                    let tmp = is.read_bool()?;
3968                    self.enable_mlir_bridge = tmp;
3969                },
3970                16 => {
3971                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3972                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3973                    }
3974                    let tmp = is.read_bool()?;
3975                    self.enable_mlir_graph_optimization = tmp;
3976                },
3977                14 => {
3978                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3979                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3980                    }
3981                    let tmp = is.read_bool()?;
3982                    self.disable_output_partition_graphs = tmp;
3983                },
3984                15 => {
3985                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3986                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3987                    }
3988                    let tmp = is.read_int64()?;
3989                    self.xla_fusion_autotuner_thresh = tmp;
3990                },
3991                _ => {
3992                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
3993                },
3994            };
3995        }
3996        ::std::result::Result::Ok(())
3997    }
3998
3999    // Compute sizes of nested messages
4000    #[allow(unused_variables)]
4001    fn compute_size(&self) -> u32 {
4002        let mut my_size = 0;
4003        if !self.collective_group_leader.is_empty() {
4004            my_size += ::protobuf::rt::string_size(1, &self.collective_group_leader);
4005        }
4006        if !self.executor_type.is_empty() {
4007            my_size += ::protobuf::rt::string_size(3, &self.executor_type);
4008        }
4009        if self.recv_buf_max_chunk != 0 {
4010            my_size += ::protobuf::rt::value_size(4, self.recv_buf_max_chunk, ::protobuf::wire_format::WireTypeVarint);
4011        }
4012        if self.use_numa_affinity != false {
4013            my_size += 2;
4014        }
4015        if self.collective_deterministic_sequential_execution != false {
4016            my_size += 2;
4017        }
4018        if self.collective_nccl != false {
4019            my_size += 2;
4020        }
4021        if self.share_session_state_in_clusterspec_propagation != false {
4022            my_size += 2;
4023        }
4024        if self.disable_thread_spinning != false {
4025            my_size += 2;
4026        }
4027        if self.share_cluster_devices_in_session != false {
4028            my_size += 2;
4029        }
4030        if let Some(ref v) = self.session_metadata.as_ref() {
4031            let len = v.compute_size();
4032            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4033        }
4034        if self.optimize_for_static_graph != false {
4035            my_size += 2;
4036        }
4037        if self.enable_mlir_bridge != false {
4038            my_size += 2;
4039        }
4040        if self.enable_mlir_graph_optimization != false {
4041            my_size += 3;
4042        }
4043        if self.disable_output_partition_graphs != false {
4044            my_size += 2;
4045        }
4046        if self.xla_fusion_autotuner_thresh != 0 {
4047            my_size += ::protobuf::rt::value_size(15, self.xla_fusion_autotuner_thresh, ::protobuf::wire_format::WireTypeVarint);
4048        }
4049        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
4050        self.cached_size.set(my_size);
4051        my_size
4052    }
4053
4054    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4055        if !self.collective_group_leader.is_empty() {
4056            os.write_string(1, &self.collective_group_leader)?;
4057        }
4058        if !self.executor_type.is_empty() {
4059            os.write_string(3, &self.executor_type)?;
4060        }
4061        if self.recv_buf_max_chunk != 0 {
4062            os.write_int32(4, self.recv_buf_max_chunk)?;
4063        }
4064        if self.use_numa_affinity != false {
4065            os.write_bool(5, self.use_numa_affinity)?;
4066        }
4067        if self.collective_deterministic_sequential_execution != false {
4068            os.write_bool(6, self.collective_deterministic_sequential_execution)?;
4069        }
4070        if self.collective_nccl != false {
4071            os.write_bool(7, self.collective_nccl)?;
4072        }
4073        if self.share_session_state_in_clusterspec_propagation != false {
4074            os.write_bool(8, self.share_session_state_in_clusterspec_propagation)?;
4075        }
4076        if self.disable_thread_spinning != false {
4077            os.write_bool(9, self.disable_thread_spinning)?;
4078        }
4079        if self.share_cluster_devices_in_session != false {
4080            os.write_bool(10, self.share_cluster_devices_in_session)?;
4081        }
4082        if let Some(ref v) = self.session_metadata.as_ref() {
4083            os.write_tag(11, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4084            os.write_raw_varint32(v.get_cached_size())?;
4085            v.write_to_with_cached_sizes(os)?;
4086        }
4087        if self.optimize_for_static_graph != false {
4088            os.write_bool(12, self.optimize_for_static_graph)?;
4089        }
4090        if self.enable_mlir_bridge != false {
4091            os.write_bool(13, self.enable_mlir_bridge)?;
4092        }
4093        if self.enable_mlir_graph_optimization != false {
4094            os.write_bool(16, self.enable_mlir_graph_optimization)?;
4095        }
4096        if self.disable_output_partition_graphs != false {
4097            os.write_bool(14, self.disable_output_partition_graphs)?;
4098        }
4099        if self.xla_fusion_autotuner_thresh != 0 {
4100            os.write_int64(15, self.xla_fusion_autotuner_thresh)?;
4101        }
4102        os.write_unknown_fields(self.get_unknown_fields())?;
4103        ::std::result::Result::Ok(())
4104    }
4105
4106    fn get_cached_size(&self) -> u32 {
4107        self.cached_size.get()
4108    }
4109
4110    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
4111        &self.unknown_fields
4112    }
4113
4114    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
4115        &mut self.unknown_fields
4116    }
4117
4118    fn as_any(&self) -> &dyn (::std::any::Any) {
4119        self as &dyn (::std::any::Any)
4120    }
4121    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
4122        self as &mut dyn (::std::any::Any)
4123    }
4124    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
4125        self
4126    }
4127
4128    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
4129        Self::descriptor_static()
4130    }
4131
4132    fn new() -> ConfigProto_Experimental {
4133        ConfigProto_Experimental::new()
4134    }
4135
4136    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
4137        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
4138        unsafe {
4139            descriptor.get(|| {
4140                let mut fields = ::std::vec::Vec::new();
4141                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
4142                    "collective_group_leader",
4143                    |m: &ConfigProto_Experimental| { &m.collective_group_leader },
4144                    |m: &mut ConfigProto_Experimental| { &mut m.collective_group_leader },
4145                ));
4146                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
4147                    "executor_type",
4148                    |m: &ConfigProto_Experimental| { &m.executor_type },
4149                    |m: &mut ConfigProto_Experimental| { &mut m.executor_type },
4150                ));
4151                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
4152                    "recv_buf_max_chunk",
4153                    |m: &ConfigProto_Experimental| { &m.recv_buf_max_chunk },
4154                    |m: &mut ConfigProto_Experimental| { &mut m.recv_buf_max_chunk },
4155                ));
4156                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4157                    "use_numa_affinity",
4158                    |m: &ConfigProto_Experimental| { &m.use_numa_affinity },
4159                    |m: &mut ConfigProto_Experimental| { &mut m.use_numa_affinity },
4160                ));
4161                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4162                    "collective_deterministic_sequential_execution",
4163                    |m: &ConfigProto_Experimental| { &m.collective_deterministic_sequential_execution },
4164                    |m: &mut ConfigProto_Experimental| { &mut m.collective_deterministic_sequential_execution },
4165                ));
4166                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4167                    "collective_nccl",
4168                    |m: &ConfigProto_Experimental| { &m.collective_nccl },
4169                    |m: &mut ConfigProto_Experimental| { &mut m.collective_nccl },
4170                ));
4171                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4172                    "share_session_state_in_clusterspec_propagation",
4173                    |m: &ConfigProto_Experimental| { &m.share_session_state_in_clusterspec_propagation },
4174                    |m: &mut ConfigProto_Experimental| { &mut m.share_session_state_in_clusterspec_propagation },
4175                ));
4176                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4177                    "disable_thread_spinning",
4178                    |m: &ConfigProto_Experimental| { &m.disable_thread_spinning },
4179                    |m: &mut ConfigProto_Experimental| { &mut m.disable_thread_spinning },
4180                ));
4181                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4182                    "share_cluster_devices_in_session",
4183                    |m: &ConfigProto_Experimental| { &m.share_cluster_devices_in_session },
4184                    |m: &mut ConfigProto_Experimental| { &mut m.share_cluster_devices_in_session },
4185                ));
4186                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<SessionMetadata>>(
4187                    "session_metadata",
4188                    |m: &ConfigProto_Experimental| { &m.session_metadata },
4189                    |m: &mut ConfigProto_Experimental| { &mut m.session_metadata },
4190                ));
4191                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4192                    "optimize_for_static_graph",
4193                    |m: &ConfigProto_Experimental| { &m.optimize_for_static_graph },
4194                    |m: &mut ConfigProto_Experimental| { &mut m.optimize_for_static_graph },
4195                ));
4196                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4197                    "enable_mlir_bridge",
4198                    |m: &ConfigProto_Experimental| { &m.enable_mlir_bridge },
4199                    |m: &mut ConfigProto_Experimental| { &mut m.enable_mlir_bridge },
4200                ));
4201                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4202                    "enable_mlir_graph_optimization",
4203                    |m: &ConfigProto_Experimental| { &m.enable_mlir_graph_optimization },
4204                    |m: &mut ConfigProto_Experimental| { &mut m.enable_mlir_graph_optimization },
4205                ));
4206                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4207                    "disable_output_partition_graphs",
4208                    |m: &ConfigProto_Experimental| { &m.disable_output_partition_graphs },
4209                    |m: &mut ConfigProto_Experimental| { &mut m.disable_output_partition_graphs },
4210                ));
4211                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
4212                    "xla_fusion_autotuner_thresh",
4213                    |m: &ConfigProto_Experimental| { &m.xla_fusion_autotuner_thresh },
4214                    |m: &mut ConfigProto_Experimental| { &mut m.xla_fusion_autotuner_thresh },
4215                ));
4216                ::protobuf::reflect::MessageDescriptor::new_pb_name::<ConfigProto_Experimental>(
4217                    "ConfigProto.Experimental",
4218                    fields,
4219                    file_descriptor_proto()
4220                )
4221            })
4222        }
4223    }
4224
4225    fn default_instance() -> &'static ConfigProto_Experimental {
4226        static mut instance: ::protobuf::lazy::Lazy<ConfigProto_Experimental> = ::protobuf::lazy::Lazy::INIT;
4227        unsafe {
4228            instance.get(ConfigProto_Experimental::new)
4229        }
4230    }
4231}
4232
4233impl ::protobuf::Clear for ConfigProto_Experimental {
4234    fn clear(&mut self) {
4235        self.collective_group_leader.clear();
4236        self.executor_type.clear();
4237        self.recv_buf_max_chunk = 0;
4238        self.use_numa_affinity = false;
4239        self.collective_deterministic_sequential_execution = false;
4240        self.collective_nccl = false;
4241        self.share_session_state_in_clusterspec_propagation = false;
4242        self.disable_thread_spinning = false;
4243        self.share_cluster_devices_in_session = false;
4244        self.session_metadata.clear();
4245        self.optimize_for_static_graph = false;
4246        self.enable_mlir_bridge = false;
4247        self.enable_mlir_graph_optimization = false;
4248        self.disable_output_partition_graphs = false;
4249        self.xla_fusion_autotuner_thresh = 0;
4250        self.unknown_fields.clear();
4251    }
4252}
4253
4254impl ::std::fmt::Debug for ConfigProto_Experimental {
4255    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4256        ::protobuf::text_format::fmt(self, f)
4257    }
4258}
4259
4260impl ::protobuf::reflect::ProtobufValue for ConfigProto_Experimental {
4261    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4262        ::protobuf::reflect::ReflectValueRef::Message(self)
4263    }
4264}
4265
4266#[derive(PartialEq,Clone,Default)]
4267pub struct RunOptions {
4268    // message fields
4269    pub trace_level: RunOptions_TraceLevel,
4270    pub timeout_in_ms: i64,
4271    pub inter_op_thread_pool: i32,
4272    pub output_partition_graphs: bool,
4273    pub debug_options: ::protobuf::SingularPtrField<super::debug::DebugOptions>,
4274    pub report_tensor_allocations_upon_oom: bool,
4275    pub experimental: ::protobuf::SingularPtrField<RunOptions_Experimental>,
4276    // special fields
4277    pub unknown_fields: ::protobuf::UnknownFields,
4278    pub cached_size: ::protobuf::CachedSize,
4279}
4280
4281impl<'a> ::std::default::Default for &'a RunOptions {
4282    fn default() -> &'a RunOptions {
4283        <RunOptions as ::protobuf::Message>::default_instance()
4284    }
4285}
4286
4287impl RunOptions {
4288    pub fn new() -> RunOptions {
4289        ::std::default::Default::default()
4290    }
4291
4292    // .tensorflow.RunOptions.TraceLevel trace_level = 1;
4293
4294
4295    pub fn get_trace_level(&self) -> RunOptions_TraceLevel {
4296        self.trace_level
4297    }
4298    pub fn clear_trace_level(&mut self) {
4299        self.trace_level = RunOptions_TraceLevel::NO_TRACE;
4300    }
4301
4302    // Param is passed by value, moved
4303    pub fn set_trace_level(&mut self, v: RunOptions_TraceLevel) {
4304        self.trace_level = v;
4305    }
4306
4307    // int64 timeout_in_ms = 2;
4308
4309
4310    pub fn get_timeout_in_ms(&self) -> i64 {
4311        self.timeout_in_ms
4312    }
4313    pub fn clear_timeout_in_ms(&mut self) {
4314        self.timeout_in_ms = 0;
4315    }
4316
4317    // Param is passed by value, moved
4318    pub fn set_timeout_in_ms(&mut self, v: i64) {
4319        self.timeout_in_ms = v;
4320    }
4321
4322    // int32 inter_op_thread_pool = 3;
4323
4324
4325    pub fn get_inter_op_thread_pool(&self) -> i32 {
4326        self.inter_op_thread_pool
4327    }
4328    pub fn clear_inter_op_thread_pool(&mut self) {
4329        self.inter_op_thread_pool = 0;
4330    }
4331
4332    // Param is passed by value, moved
4333    pub fn set_inter_op_thread_pool(&mut self, v: i32) {
4334        self.inter_op_thread_pool = v;
4335    }
4336
4337    // bool output_partition_graphs = 5;
4338
4339
4340    pub fn get_output_partition_graphs(&self) -> bool {
4341        self.output_partition_graphs
4342    }
4343    pub fn clear_output_partition_graphs(&mut self) {
4344        self.output_partition_graphs = false;
4345    }
4346
4347    // Param is passed by value, moved
4348    pub fn set_output_partition_graphs(&mut self, v: bool) {
4349        self.output_partition_graphs = v;
4350    }
4351
4352    // .tensorflow.DebugOptions debug_options = 6;
4353
4354
4355    pub fn get_debug_options(&self) -> &super::debug::DebugOptions {
4356        self.debug_options.as_ref().unwrap_or_else(|| super::debug::DebugOptions::default_instance())
4357    }
4358    pub fn clear_debug_options(&mut self) {
4359        self.debug_options.clear();
4360    }
4361
4362    pub fn has_debug_options(&self) -> bool {
4363        self.debug_options.is_some()
4364    }
4365
4366    // Param is passed by value, moved
4367    pub fn set_debug_options(&mut self, v: super::debug::DebugOptions) {
4368        self.debug_options = ::protobuf::SingularPtrField::some(v);
4369    }
4370
4371    // Mutable pointer to the field.
4372    // If field is not initialized, it is initialized with default value first.
4373    pub fn mut_debug_options(&mut self) -> &mut super::debug::DebugOptions {
4374        if self.debug_options.is_none() {
4375            self.debug_options.set_default();
4376        }
4377        self.debug_options.as_mut().unwrap()
4378    }
4379
4380    // Take field
4381    pub fn take_debug_options(&mut self) -> super::debug::DebugOptions {
4382        self.debug_options.take().unwrap_or_else(|| super::debug::DebugOptions::new())
4383    }
4384
4385    // bool report_tensor_allocations_upon_oom = 7;
4386
4387
4388    pub fn get_report_tensor_allocations_upon_oom(&self) -> bool {
4389        self.report_tensor_allocations_upon_oom
4390    }
4391    pub fn clear_report_tensor_allocations_upon_oom(&mut self) {
4392        self.report_tensor_allocations_upon_oom = false;
4393    }
4394
4395    // Param is passed by value, moved
4396    pub fn set_report_tensor_allocations_upon_oom(&mut self, v: bool) {
4397        self.report_tensor_allocations_upon_oom = v;
4398    }
4399
4400    // .tensorflow.RunOptions.Experimental experimental = 8;
4401
4402
4403    pub fn get_experimental(&self) -> &RunOptions_Experimental {
4404        self.experimental.as_ref().unwrap_or_else(|| RunOptions_Experimental::default_instance())
4405    }
4406    pub fn clear_experimental(&mut self) {
4407        self.experimental.clear();
4408    }
4409
4410    pub fn has_experimental(&self) -> bool {
4411        self.experimental.is_some()
4412    }
4413
4414    // Param is passed by value, moved
4415    pub fn set_experimental(&mut self, v: RunOptions_Experimental) {
4416        self.experimental = ::protobuf::SingularPtrField::some(v);
4417    }
4418
4419    // Mutable pointer to the field.
4420    // If field is not initialized, it is initialized with default value first.
4421    pub fn mut_experimental(&mut self) -> &mut RunOptions_Experimental {
4422        if self.experimental.is_none() {
4423            self.experimental.set_default();
4424        }
4425        self.experimental.as_mut().unwrap()
4426    }
4427
4428    // Take field
4429    pub fn take_experimental(&mut self) -> RunOptions_Experimental {
4430        self.experimental.take().unwrap_or_else(|| RunOptions_Experimental::new())
4431    }
4432}
4433
4434impl ::protobuf::Message for RunOptions {
4435    fn is_initialized(&self) -> bool {
4436        for v in &self.debug_options {
4437            if !v.is_initialized() {
4438                return false;
4439            }
4440        };
4441        for v in &self.experimental {
4442            if !v.is_initialized() {
4443                return false;
4444            }
4445        };
4446        true
4447    }
4448
4449    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4450        while !is.eof()? {
4451            let (field_number, wire_type) = is.read_tag_unpack()?;
4452            match field_number {
4453                1 => {
4454                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.trace_level, 1, &mut self.unknown_fields)?
4455                },
4456                2 => {
4457                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
4458                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
4459                    }
4460                    let tmp = is.read_int64()?;
4461                    self.timeout_in_ms = tmp;
4462                },
4463                3 => {
4464                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
4465                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
4466                    }
4467                    let tmp = is.read_int32()?;
4468                    self.inter_op_thread_pool = tmp;
4469                },
4470                5 => {
4471                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
4472                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
4473                    }
4474                    let tmp = is.read_bool()?;
4475                    self.output_partition_graphs = tmp;
4476                },
4477                6 => {
4478                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.debug_options)?;
4479                },
4480                7 => {
4481                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
4482                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
4483                    }
4484                    let tmp = is.read_bool()?;
4485                    self.report_tensor_allocations_upon_oom = tmp;
4486                },
4487                8 => {
4488                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.experimental)?;
4489                },
4490                _ => {
4491                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
4492                },
4493            };
4494        }
4495        ::std::result::Result::Ok(())
4496    }
4497
4498    // Compute sizes of nested messages
4499    #[allow(unused_variables)]
4500    fn compute_size(&self) -> u32 {
4501        let mut my_size = 0;
4502        if self.trace_level != RunOptions_TraceLevel::NO_TRACE {
4503            my_size += ::protobuf::rt::enum_size(1, self.trace_level);
4504        }
4505        if self.timeout_in_ms != 0 {
4506            my_size += ::protobuf::rt::value_size(2, self.timeout_in_ms, ::protobuf::wire_format::WireTypeVarint);
4507        }
4508        if self.inter_op_thread_pool != 0 {
4509            my_size += ::protobuf::rt::value_size(3, self.inter_op_thread_pool, ::protobuf::wire_format::WireTypeVarint);
4510        }
4511        if self.output_partition_graphs != false {
4512            my_size += 2;
4513        }
4514        if let Some(ref v) = self.debug_options.as_ref() {
4515            let len = v.compute_size();
4516            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4517        }
4518        if self.report_tensor_allocations_upon_oom != false {
4519            my_size += 2;
4520        }
4521        if let Some(ref v) = self.experimental.as_ref() {
4522            let len = v.compute_size();
4523            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4524        }
4525        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
4526        self.cached_size.set(my_size);
4527        my_size
4528    }
4529
4530    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4531        if self.trace_level != RunOptions_TraceLevel::NO_TRACE {
4532            os.write_enum(1, self.trace_level.value())?;
4533        }
4534        if self.timeout_in_ms != 0 {
4535            os.write_int64(2, self.timeout_in_ms)?;
4536        }
4537        if self.inter_op_thread_pool != 0 {
4538            os.write_int32(3, self.inter_op_thread_pool)?;
4539        }
4540        if self.output_partition_graphs != false {
4541            os.write_bool(5, self.output_partition_graphs)?;
4542        }
4543        if let Some(ref v) = self.debug_options.as_ref() {
4544            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4545            os.write_raw_varint32(v.get_cached_size())?;
4546            v.write_to_with_cached_sizes(os)?;
4547        }
4548        if self.report_tensor_allocations_upon_oom != false {
4549            os.write_bool(7, self.report_tensor_allocations_upon_oom)?;
4550        }
4551        if let Some(ref v) = self.experimental.as_ref() {
4552            os.write_tag(8, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4553            os.write_raw_varint32(v.get_cached_size())?;
4554            v.write_to_with_cached_sizes(os)?;
4555        }
4556        os.write_unknown_fields(self.get_unknown_fields())?;
4557        ::std::result::Result::Ok(())
4558    }
4559
4560    fn get_cached_size(&self) -> u32 {
4561        self.cached_size.get()
4562    }
4563
4564    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
4565        &self.unknown_fields
4566    }
4567
4568    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
4569        &mut self.unknown_fields
4570    }
4571
4572    fn as_any(&self) -> &dyn (::std::any::Any) {
4573        self as &dyn (::std::any::Any)
4574    }
4575    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
4576        self as &mut dyn (::std::any::Any)
4577    }
4578    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
4579        self
4580    }
4581
4582    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
4583        Self::descriptor_static()
4584    }
4585
4586    fn new() -> RunOptions {
4587        RunOptions::new()
4588    }
4589
4590    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
4591        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
4592        unsafe {
4593            descriptor.get(|| {
4594                let mut fields = ::std::vec::Vec::new();
4595                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RunOptions_TraceLevel>>(
4596                    "trace_level",
4597                    |m: &RunOptions| { &m.trace_level },
4598                    |m: &mut RunOptions| { &mut m.trace_level },
4599                ));
4600                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
4601                    "timeout_in_ms",
4602                    |m: &RunOptions| { &m.timeout_in_ms },
4603                    |m: &mut RunOptions| { &mut m.timeout_in_ms },
4604                ));
4605                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
4606                    "inter_op_thread_pool",
4607                    |m: &RunOptions| { &m.inter_op_thread_pool },
4608                    |m: &mut RunOptions| { &mut m.inter_op_thread_pool },
4609                ));
4610                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4611                    "output_partition_graphs",
4612                    |m: &RunOptions| { &m.output_partition_graphs },
4613                    |m: &mut RunOptions| { &mut m.output_partition_graphs },
4614                ));
4615                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::debug::DebugOptions>>(
4616                    "debug_options",
4617                    |m: &RunOptions| { &m.debug_options },
4618                    |m: &mut RunOptions| { &mut m.debug_options },
4619                ));
4620                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4621                    "report_tensor_allocations_upon_oom",
4622                    |m: &RunOptions| { &m.report_tensor_allocations_upon_oom },
4623                    |m: &mut RunOptions| { &mut m.report_tensor_allocations_upon_oom },
4624                ));
4625                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RunOptions_Experimental>>(
4626                    "experimental",
4627                    |m: &RunOptions| { &m.experimental },
4628                    |m: &mut RunOptions| { &mut m.experimental },
4629                ));
4630                ::protobuf::reflect::MessageDescriptor::new_pb_name::<RunOptions>(
4631                    "RunOptions",
4632                    fields,
4633                    file_descriptor_proto()
4634                )
4635            })
4636        }
4637    }
4638
4639    fn default_instance() -> &'static RunOptions {
4640        static mut instance: ::protobuf::lazy::Lazy<RunOptions> = ::protobuf::lazy::Lazy::INIT;
4641        unsafe {
4642            instance.get(RunOptions::new)
4643        }
4644    }
4645}
4646
4647impl ::protobuf::Clear for RunOptions {
4648    fn clear(&mut self) {
4649        self.trace_level = RunOptions_TraceLevel::NO_TRACE;
4650        self.timeout_in_ms = 0;
4651        self.inter_op_thread_pool = 0;
4652        self.output_partition_graphs = false;
4653        self.debug_options.clear();
4654        self.report_tensor_allocations_upon_oom = false;
4655        self.experimental.clear();
4656        self.unknown_fields.clear();
4657    }
4658}
4659
4660impl ::std::fmt::Debug for RunOptions {
4661    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4662        ::protobuf::text_format::fmt(self, f)
4663    }
4664}
4665
4666impl ::protobuf::reflect::ProtobufValue for RunOptions {
4667    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4668        ::protobuf::reflect::ReflectValueRef::Message(self)
4669    }
4670}
4671
4672#[derive(PartialEq,Clone,Default)]
4673pub struct RunOptions_Experimental {
4674    // message fields
4675    pub collective_graph_key: i64,
4676    pub use_run_handler_pool: bool,
4677    pub run_handler_pool_options: ::protobuf::SingularPtrField<RunOptions_Experimental_RunHandlerPoolOptions>,
4678    // special fields
4679    pub unknown_fields: ::protobuf::UnknownFields,
4680    pub cached_size: ::protobuf::CachedSize,
4681}
4682
4683impl<'a> ::std::default::Default for &'a RunOptions_Experimental {
4684    fn default() -> &'a RunOptions_Experimental {
4685        <RunOptions_Experimental as ::protobuf::Message>::default_instance()
4686    }
4687}
4688
4689impl RunOptions_Experimental {
4690    pub fn new() -> RunOptions_Experimental {
4691        ::std::default::Default::default()
4692    }
4693
4694    // int64 collective_graph_key = 1;
4695
4696
4697    pub fn get_collective_graph_key(&self) -> i64 {
4698        self.collective_graph_key
4699    }
4700    pub fn clear_collective_graph_key(&mut self) {
4701        self.collective_graph_key = 0;
4702    }
4703
4704    // Param is passed by value, moved
4705    pub fn set_collective_graph_key(&mut self, v: i64) {
4706        self.collective_graph_key = v;
4707    }
4708
4709    // bool use_run_handler_pool = 2;
4710
4711
4712    pub fn get_use_run_handler_pool(&self) -> bool {
4713        self.use_run_handler_pool
4714    }
4715    pub fn clear_use_run_handler_pool(&mut self) {
4716        self.use_run_handler_pool = false;
4717    }
4718
4719    // Param is passed by value, moved
4720    pub fn set_use_run_handler_pool(&mut self, v: bool) {
4721        self.use_run_handler_pool = v;
4722    }
4723
4724    // .tensorflow.RunOptions.Experimental.RunHandlerPoolOptions run_handler_pool_options = 3;
4725
4726
4727    pub fn get_run_handler_pool_options(&self) -> &RunOptions_Experimental_RunHandlerPoolOptions {
4728        self.run_handler_pool_options.as_ref().unwrap_or_else(|| RunOptions_Experimental_RunHandlerPoolOptions::default_instance())
4729    }
4730    pub fn clear_run_handler_pool_options(&mut self) {
4731        self.run_handler_pool_options.clear();
4732    }
4733
4734    pub fn has_run_handler_pool_options(&self) -> bool {
4735        self.run_handler_pool_options.is_some()
4736    }
4737
4738    // Param is passed by value, moved
4739    pub fn set_run_handler_pool_options(&mut self, v: RunOptions_Experimental_RunHandlerPoolOptions) {
4740        self.run_handler_pool_options = ::protobuf::SingularPtrField::some(v);
4741    }
4742
4743    // Mutable pointer to the field.
4744    // If field is not initialized, it is initialized with default value first.
4745    pub fn mut_run_handler_pool_options(&mut self) -> &mut RunOptions_Experimental_RunHandlerPoolOptions {
4746        if self.run_handler_pool_options.is_none() {
4747            self.run_handler_pool_options.set_default();
4748        }
4749        self.run_handler_pool_options.as_mut().unwrap()
4750    }
4751
4752    // Take field
4753    pub fn take_run_handler_pool_options(&mut self) -> RunOptions_Experimental_RunHandlerPoolOptions {
4754        self.run_handler_pool_options.take().unwrap_or_else(|| RunOptions_Experimental_RunHandlerPoolOptions::new())
4755    }
4756}
4757
4758impl ::protobuf::Message for RunOptions_Experimental {
4759    fn is_initialized(&self) -> bool {
4760        for v in &self.run_handler_pool_options {
4761            if !v.is_initialized() {
4762                return false;
4763            }
4764        };
4765        true
4766    }
4767
4768    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4769        while !is.eof()? {
4770            let (field_number, wire_type) = is.read_tag_unpack()?;
4771            match field_number {
4772                1 => {
4773                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
4774                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
4775                    }
4776                    let tmp = is.read_int64()?;
4777                    self.collective_graph_key = tmp;
4778                },
4779                2 => {
4780                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
4781                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
4782                    }
4783                    let tmp = is.read_bool()?;
4784                    self.use_run_handler_pool = tmp;
4785                },
4786                3 => {
4787                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.run_handler_pool_options)?;
4788                },
4789                _ => {
4790                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
4791                },
4792            };
4793        }
4794        ::std::result::Result::Ok(())
4795    }
4796
4797    // Compute sizes of nested messages
4798    #[allow(unused_variables)]
4799    fn compute_size(&self) -> u32 {
4800        let mut my_size = 0;
4801        if self.collective_graph_key != 0 {
4802            my_size += ::protobuf::rt::value_size(1, self.collective_graph_key, ::protobuf::wire_format::WireTypeVarint);
4803        }
4804        if self.use_run_handler_pool != false {
4805            my_size += 2;
4806        }
4807        if let Some(ref v) = self.run_handler_pool_options.as_ref() {
4808            let len = v.compute_size();
4809            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4810        }
4811        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
4812        self.cached_size.set(my_size);
4813        my_size
4814    }
4815
4816    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4817        if self.collective_graph_key != 0 {
4818            os.write_int64(1, self.collective_graph_key)?;
4819        }
4820        if self.use_run_handler_pool != false {
4821            os.write_bool(2, self.use_run_handler_pool)?;
4822        }
4823        if let Some(ref v) = self.run_handler_pool_options.as_ref() {
4824            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4825            os.write_raw_varint32(v.get_cached_size())?;
4826            v.write_to_with_cached_sizes(os)?;
4827        }
4828        os.write_unknown_fields(self.get_unknown_fields())?;
4829        ::std::result::Result::Ok(())
4830    }
4831
4832    fn get_cached_size(&self) -> u32 {
4833        self.cached_size.get()
4834    }
4835
4836    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
4837        &self.unknown_fields
4838    }
4839
4840    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
4841        &mut self.unknown_fields
4842    }
4843
4844    fn as_any(&self) -> &dyn (::std::any::Any) {
4845        self as &dyn (::std::any::Any)
4846    }
4847    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
4848        self as &mut dyn (::std::any::Any)
4849    }
4850    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
4851        self
4852    }
4853
4854    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
4855        Self::descriptor_static()
4856    }
4857
4858    fn new() -> RunOptions_Experimental {
4859        RunOptions_Experimental::new()
4860    }
4861
4862    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
4863        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
4864        unsafe {
4865            descriptor.get(|| {
4866                let mut fields = ::std::vec::Vec::new();
4867                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
4868                    "collective_graph_key",
4869                    |m: &RunOptions_Experimental| { &m.collective_graph_key },
4870                    |m: &mut RunOptions_Experimental| { &mut m.collective_graph_key },
4871                ));
4872                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
4873                    "use_run_handler_pool",
4874                    |m: &RunOptions_Experimental| { &m.use_run_handler_pool },
4875                    |m: &mut RunOptions_Experimental| { &mut m.use_run_handler_pool },
4876                ));
4877                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RunOptions_Experimental_RunHandlerPoolOptions>>(
4878                    "run_handler_pool_options",
4879                    |m: &RunOptions_Experimental| { &m.run_handler_pool_options },
4880                    |m: &mut RunOptions_Experimental| { &mut m.run_handler_pool_options },
4881                ));
4882                ::protobuf::reflect::MessageDescriptor::new_pb_name::<RunOptions_Experimental>(
4883                    "RunOptions.Experimental",
4884                    fields,
4885                    file_descriptor_proto()
4886                )
4887            })
4888        }
4889    }
4890
4891    fn default_instance() -> &'static RunOptions_Experimental {
4892        static mut instance: ::protobuf::lazy::Lazy<RunOptions_Experimental> = ::protobuf::lazy::Lazy::INIT;
4893        unsafe {
4894            instance.get(RunOptions_Experimental::new)
4895        }
4896    }
4897}
4898
4899impl ::protobuf::Clear for RunOptions_Experimental {
4900    fn clear(&mut self) {
4901        self.collective_graph_key = 0;
4902        self.use_run_handler_pool = false;
4903        self.run_handler_pool_options.clear();
4904        self.unknown_fields.clear();
4905    }
4906}
4907
4908impl ::std::fmt::Debug for RunOptions_Experimental {
4909    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4910        ::protobuf::text_format::fmt(self, f)
4911    }
4912}
4913
4914impl ::protobuf::reflect::ProtobufValue for RunOptions_Experimental {
4915    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4916        ::protobuf::reflect::ReflectValueRef::Message(self)
4917    }
4918}
4919
4920#[derive(PartialEq,Clone,Default)]
4921pub struct RunOptions_Experimental_RunHandlerPoolOptions {
4922    // message fields
4923    pub priority: i64,
4924    // special fields
4925    pub unknown_fields: ::protobuf::UnknownFields,
4926    pub cached_size: ::protobuf::CachedSize,
4927}
4928
4929impl<'a> ::std::default::Default for &'a RunOptions_Experimental_RunHandlerPoolOptions {
4930    fn default() -> &'a RunOptions_Experimental_RunHandlerPoolOptions {
4931        <RunOptions_Experimental_RunHandlerPoolOptions as ::protobuf::Message>::default_instance()
4932    }
4933}
4934
4935impl RunOptions_Experimental_RunHandlerPoolOptions {
4936    pub fn new() -> RunOptions_Experimental_RunHandlerPoolOptions {
4937        ::std::default::Default::default()
4938    }
4939
4940    // int64 priority = 1;
4941
4942
4943    pub fn get_priority(&self) -> i64 {
4944        self.priority
4945    }
4946    pub fn clear_priority(&mut self) {
4947        self.priority = 0;
4948    }
4949
4950    // Param is passed by value, moved
4951    pub fn set_priority(&mut self, v: i64) {
4952        self.priority = v;
4953    }
4954}
4955
4956impl ::protobuf::Message for RunOptions_Experimental_RunHandlerPoolOptions {
4957    fn is_initialized(&self) -> bool {
4958        true
4959    }
4960
4961    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4962        while !is.eof()? {
4963            let (field_number, wire_type) = is.read_tag_unpack()?;
4964            match field_number {
4965                1 => {
4966                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
4967                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
4968                    }
4969                    let tmp = is.read_int64()?;
4970                    self.priority = tmp;
4971                },
4972                _ => {
4973                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
4974                },
4975            };
4976        }
4977        ::std::result::Result::Ok(())
4978    }
4979
4980    // Compute sizes of nested messages
4981    #[allow(unused_variables)]
4982    fn compute_size(&self) -> u32 {
4983        let mut my_size = 0;
4984        if self.priority != 0 {
4985            my_size += ::protobuf::rt::value_size(1, self.priority, ::protobuf::wire_format::WireTypeVarint);
4986        }
4987        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
4988        self.cached_size.set(my_size);
4989        my_size
4990    }
4991
4992    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4993        if self.priority != 0 {
4994            os.write_int64(1, self.priority)?;
4995        }
4996        os.write_unknown_fields(self.get_unknown_fields())?;
4997        ::std::result::Result::Ok(())
4998    }
4999
5000    fn get_cached_size(&self) -> u32 {
5001        self.cached_size.get()
5002    }
5003
5004    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
5005        &self.unknown_fields
5006    }
5007
5008    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
5009        &mut self.unknown_fields
5010    }
5011
5012    fn as_any(&self) -> &dyn (::std::any::Any) {
5013        self as &dyn (::std::any::Any)
5014    }
5015    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
5016        self as &mut dyn (::std::any::Any)
5017    }
5018    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
5019        self
5020    }
5021
5022    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
5023        Self::descriptor_static()
5024    }
5025
5026    fn new() -> RunOptions_Experimental_RunHandlerPoolOptions {
5027        RunOptions_Experimental_RunHandlerPoolOptions::new()
5028    }
5029
5030    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
5031        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
5032        unsafe {
5033            descriptor.get(|| {
5034                let mut fields = ::std::vec::Vec::new();
5035                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
5036                    "priority",
5037                    |m: &RunOptions_Experimental_RunHandlerPoolOptions| { &m.priority },
5038                    |m: &mut RunOptions_Experimental_RunHandlerPoolOptions| { &mut m.priority },
5039                ));
5040                ::protobuf::reflect::MessageDescriptor::new_pb_name::<RunOptions_Experimental_RunHandlerPoolOptions>(
5041                    "RunOptions.Experimental.RunHandlerPoolOptions",
5042                    fields,
5043                    file_descriptor_proto()
5044                )
5045            })
5046        }
5047    }
5048
5049    fn default_instance() -> &'static RunOptions_Experimental_RunHandlerPoolOptions {
5050        static mut instance: ::protobuf::lazy::Lazy<RunOptions_Experimental_RunHandlerPoolOptions> = ::protobuf::lazy::Lazy::INIT;
5051        unsafe {
5052            instance.get(RunOptions_Experimental_RunHandlerPoolOptions::new)
5053        }
5054    }
5055}
5056
5057impl ::protobuf::Clear for RunOptions_Experimental_RunHandlerPoolOptions {
5058    fn clear(&mut self) {
5059        self.priority = 0;
5060        self.unknown_fields.clear();
5061    }
5062}
5063
5064impl ::std::fmt::Debug for RunOptions_Experimental_RunHandlerPoolOptions {
5065    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5066        ::protobuf::text_format::fmt(self, f)
5067    }
5068}
5069
5070impl ::protobuf::reflect::ProtobufValue for RunOptions_Experimental_RunHandlerPoolOptions {
5071    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
5072        ::protobuf::reflect::ReflectValueRef::Message(self)
5073    }
5074}
5075
5076#[derive(Clone,PartialEq,Eq,Debug,Hash)]
5077pub enum RunOptions_TraceLevel {
5078    NO_TRACE = 0,
5079    SOFTWARE_TRACE = 1,
5080    HARDWARE_TRACE = 2,
5081    FULL_TRACE = 3,
5082}
5083
5084impl ::protobuf::ProtobufEnum for RunOptions_TraceLevel {
5085    fn value(&self) -> i32 {
5086        *self as i32
5087    }
5088
5089    fn from_i32(value: i32) -> ::std::option::Option<RunOptions_TraceLevel> {
5090        match value {
5091            0 => ::std::option::Option::Some(RunOptions_TraceLevel::NO_TRACE),
5092            1 => ::std::option::Option::Some(RunOptions_TraceLevel::SOFTWARE_TRACE),
5093            2 => ::std::option::Option::Some(RunOptions_TraceLevel::HARDWARE_TRACE),
5094            3 => ::std::option::Option::Some(RunOptions_TraceLevel::FULL_TRACE),
5095            _ => ::std::option::Option::None
5096        }
5097    }
5098
5099    fn values() -> &'static [Self] {
5100        static values: &'static [RunOptions_TraceLevel] = &[
5101            RunOptions_TraceLevel::NO_TRACE,
5102            RunOptions_TraceLevel::SOFTWARE_TRACE,
5103            RunOptions_TraceLevel::HARDWARE_TRACE,
5104            RunOptions_TraceLevel::FULL_TRACE,
5105        ];
5106        values
5107    }
5108
5109    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
5110        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy::INIT;
5111        unsafe {
5112            descriptor.get(|| {
5113                ::protobuf::reflect::EnumDescriptor::new_pb_name::<RunOptions_TraceLevel>("RunOptions.TraceLevel", file_descriptor_proto())
5114            })
5115        }
5116    }
5117}
5118
5119impl ::std::marker::Copy for RunOptions_TraceLevel {
5120}
5121
5122impl ::std::default::Default for RunOptions_TraceLevel {
5123    fn default() -> Self {
5124        RunOptions_TraceLevel::NO_TRACE
5125    }
5126}
5127
5128impl ::protobuf::reflect::ProtobufValue for RunOptions_TraceLevel {
5129    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
5130        ::protobuf::reflect::ReflectValueRef::Enum(self.descriptor())
5131    }
5132}
5133
5134#[derive(PartialEq,Clone,Default)]
5135pub struct RunMetadata {
5136    // message fields
5137    pub step_stats: ::protobuf::SingularPtrField<super::step_stats::StepStats>,
5138    pub cost_graph: ::protobuf::SingularPtrField<super::cost_graph::CostGraphDef>,
5139    pub partition_graphs: ::protobuf::RepeatedField<super::graph::GraphDef>,
5140    pub function_graphs: ::protobuf::RepeatedField<RunMetadata_FunctionGraphs>,
5141    // special fields
5142    pub unknown_fields: ::protobuf::UnknownFields,
5143    pub cached_size: ::protobuf::CachedSize,
5144}
5145
5146impl<'a> ::std::default::Default for &'a RunMetadata {
5147    fn default() -> &'a RunMetadata {
5148        <RunMetadata as ::protobuf::Message>::default_instance()
5149    }
5150}
5151
5152impl RunMetadata {
5153    pub fn new() -> RunMetadata {
5154        ::std::default::Default::default()
5155    }
5156
5157    // .tensorflow.StepStats step_stats = 1;
5158
5159
5160    pub fn get_step_stats(&self) -> &super::step_stats::StepStats {
5161        self.step_stats.as_ref().unwrap_or_else(|| super::step_stats::StepStats::default_instance())
5162    }
5163    pub fn clear_step_stats(&mut self) {
5164        self.step_stats.clear();
5165    }
5166
5167    pub fn has_step_stats(&self) -> bool {
5168        self.step_stats.is_some()
5169    }
5170
5171    // Param is passed by value, moved
5172    pub fn set_step_stats(&mut self, v: super::step_stats::StepStats) {
5173        self.step_stats = ::protobuf::SingularPtrField::some(v);
5174    }
5175
5176    // Mutable pointer to the field.
5177    // If field is not initialized, it is initialized with default value first.
5178    pub fn mut_step_stats(&mut self) -> &mut super::step_stats::StepStats {
5179        if self.step_stats.is_none() {
5180            self.step_stats.set_default();
5181        }
5182        self.step_stats.as_mut().unwrap()
5183    }
5184
5185    // Take field
5186    pub fn take_step_stats(&mut self) -> super::step_stats::StepStats {
5187        self.step_stats.take().unwrap_or_else(|| super::step_stats::StepStats::new())
5188    }
5189
5190    // .tensorflow.CostGraphDef cost_graph = 2;
5191
5192
5193    pub fn get_cost_graph(&self) -> &super::cost_graph::CostGraphDef {
5194        self.cost_graph.as_ref().unwrap_or_else(|| super::cost_graph::CostGraphDef::default_instance())
5195    }
5196    pub fn clear_cost_graph(&mut self) {
5197        self.cost_graph.clear();
5198    }
5199
5200    pub fn has_cost_graph(&self) -> bool {
5201        self.cost_graph.is_some()
5202    }
5203
5204    // Param is passed by value, moved
5205    pub fn set_cost_graph(&mut self, v: super::cost_graph::CostGraphDef) {
5206        self.cost_graph = ::protobuf::SingularPtrField::some(v);
5207    }
5208
5209    // Mutable pointer to the field.
5210    // If field is not initialized, it is initialized with default value first.
5211    pub fn mut_cost_graph(&mut self) -> &mut super::cost_graph::CostGraphDef {
5212        if self.cost_graph.is_none() {
5213            self.cost_graph.set_default();
5214        }
5215        self.cost_graph.as_mut().unwrap()
5216    }
5217
5218    // Take field
5219    pub fn take_cost_graph(&mut self) -> super::cost_graph::CostGraphDef {
5220        self.cost_graph.take().unwrap_or_else(|| super::cost_graph::CostGraphDef::new())
5221    }
5222
5223    // repeated .tensorflow.GraphDef partition_graphs = 3;
5224
5225
5226    pub fn get_partition_graphs(&self) -> &[super::graph::GraphDef] {
5227        &self.partition_graphs
5228    }
5229    pub fn clear_partition_graphs(&mut self) {
5230        self.partition_graphs.clear();
5231    }
5232
5233    // Param is passed by value, moved
5234    pub fn set_partition_graphs(&mut self, v: ::protobuf::RepeatedField<super::graph::GraphDef>) {
5235        self.partition_graphs = v;
5236    }
5237
5238    // Mutable pointer to the field.
5239    pub fn mut_partition_graphs(&mut self) -> &mut ::protobuf::RepeatedField<super::graph::GraphDef> {
5240        &mut self.partition_graphs
5241    }
5242
5243    // Take field
5244    pub fn take_partition_graphs(&mut self) -> ::protobuf::RepeatedField<super::graph::GraphDef> {
5245        ::std::mem::replace(&mut self.partition_graphs, ::protobuf::RepeatedField::new())
5246    }
5247
5248    // repeated .tensorflow.RunMetadata.FunctionGraphs function_graphs = 4;
5249
5250
5251    pub fn get_function_graphs(&self) -> &[RunMetadata_FunctionGraphs] {
5252        &self.function_graphs
5253    }
5254    pub fn clear_function_graphs(&mut self) {
5255        self.function_graphs.clear();
5256    }
5257
5258    // Param is passed by value, moved
5259    pub fn set_function_graphs(&mut self, v: ::protobuf::RepeatedField<RunMetadata_FunctionGraphs>) {
5260        self.function_graphs = v;
5261    }
5262
5263    // Mutable pointer to the field.
5264    pub fn mut_function_graphs(&mut self) -> &mut ::protobuf::RepeatedField<RunMetadata_FunctionGraphs> {
5265        &mut self.function_graphs
5266    }
5267
5268    // Take field
5269    pub fn take_function_graphs(&mut self) -> ::protobuf::RepeatedField<RunMetadata_FunctionGraphs> {
5270        ::std::mem::replace(&mut self.function_graphs, ::protobuf::RepeatedField::new())
5271    }
5272}
5273
5274impl ::protobuf::Message for RunMetadata {
5275    fn is_initialized(&self) -> bool {
5276        for v in &self.step_stats {
5277            if !v.is_initialized() {
5278                return false;
5279            }
5280        };
5281        for v in &self.cost_graph {
5282            if !v.is_initialized() {
5283                return false;
5284            }
5285        };
5286        for v in &self.partition_graphs {
5287            if !v.is_initialized() {
5288                return false;
5289            }
5290        };
5291        for v in &self.function_graphs {
5292            if !v.is_initialized() {
5293                return false;
5294            }
5295        };
5296        true
5297    }
5298
5299    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
5300        while !is.eof()? {
5301            let (field_number, wire_type) = is.read_tag_unpack()?;
5302            match field_number {
5303                1 => {
5304                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.step_stats)?;
5305                },
5306                2 => {
5307                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.cost_graph)?;
5308                },
5309                3 => {
5310                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.partition_graphs)?;
5311                },
5312                4 => {
5313                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.function_graphs)?;
5314                },
5315                _ => {
5316                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
5317                },
5318            };
5319        }
5320        ::std::result::Result::Ok(())
5321    }
5322
5323    // Compute sizes of nested messages
5324    #[allow(unused_variables)]
5325    fn compute_size(&self) -> u32 {
5326        let mut my_size = 0;
5327        if let Some(ref v) = self.step_stats.as_ref() {
5328            let len = v.compute_size();
5329            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5330        }
5331        if let Some(ref v) = self.cost_graph.as_ref() {
5332            let len = v.compute_size();
5333            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5334        }
5335        for value in &self.partition_graphs {
5336            let len = value.compute_size();
5337            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5338        };
5339        for value in &self.function_graphs {
5340            let len = value.compute_size();
5341            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5342        };
5343        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
5344        self.cached_size.set(my_size);
5345        my_size
5346    }
5347
5348    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
5349        if let Some(ref v) = self.step_stats.as_ref() {
5350            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5351            os.write_raw_varint32(v.get_cached_size())?;
5352            v.write_to_with_cached_sizes(os)?;
5353        }
5354        if let Some(ref v) = self.cost_graph.as_ref() {
5355            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5356            os.write_raw_varint32(v.get_cached_size())?;
5357            v.write_to_with_cached_sizes(os)?;
5358        }
5359        for v in &self.partition_graphs {
5360            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5361            os.write_raw_varint32(v.get_cached_size())?;
5362            v.write_to_with_cached_sizes(os)?;
5363        };
5364        for v in &self.function_graphs {
5365            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5366            os.write_raw_varint32(v.get_cached_size())?;
5367            v.write_to_with_cached_sizes(os)?;
5368        };
5369        os.write_unknown_fields(self.get_unknown_fields())?;
5370        ::std::result::Result::Ok(())
5371    }
5372
5373    fn get_cached_size(&self) -> u32 {
5374        self.cached_size.get()
5375    }
5376
5377    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
5378        &self.unknown_fields
5379    }
5380
5381    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
5382        &mut self.unknown_fields
5383    }
5384
5385    fn as_any(&self) -> &dyn (::std::any::Any) {
5386        self as &dyn (::std::any::Any)
5387    }
5388    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
5389        self as &mut dyn (::std::any::Any)
5390    }
5391    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
5392        self
5393    }
5394
5395    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
5396        Self::descriptor_static()
5397    }
5398
5399    fn new() -> RunMetadata {
5400        RunMetadata::new()
5401    }
5402
5403    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
5404        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
5405        unsafe {
5406            descriptor.get(|| {
5407                let mut fields = ::std::vec::Vec::new();
5408                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::step_stats::StepStats>>(
5409                    "step_stats",
5410                    |m: &RunMetadata| { &m.step_stats },
5411                    |m: &mut RunMetadata| { &mut m.step_stats },
5412                ));
5413                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::cost_graph::CostGraphDef>>(
5414                    "cost_graph",
5415                    |m: &RunMetadata| { &m.cost_graph },
5416                    |m: &mut RunMetadata| { &mut m.cost_graph },
5417                ));
5418                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::graph::GraphDef>>(
5419                    "partition_graphs",
5420                    |m: &RunMetadata| { &m.partition_graphs },
5421                    |m: &mut RunMetadata| { &mut m.partition_graphs },
5422                ));
5423                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RunMetadata_FunctionGraphs>>(
5424                    "function_graphs",
5425                    |m: &RunMetadata| { &m.function_graphs },
5426                    |m: &mut RunMetadata| { &mut m.function_graphs },
5427                ));
5428                ::protobuf::reflect::MessageDescriptor::new_pb_name::<RunMetadata>(
5429                    "RunMetadata",
5430                    fields,
5431                    file_descriptor_proto()
5432                )
5433            })
5434        }
5435    }
5436
5437    fn default_instance() -> &'static RunMetadata {
5438        static mut instance: ::protobuf::lazy::Lazy<RunMetadata> = ::protobuf::lazy::Lazy::INIT;
5439        unsafe {
5440            instance.get(RunMetadata::new)
5441        }
5442    }
5443}
5444
5445impl ::protobuf::Clear for RunMetadata {
5446    fn clear(&mut self) {
5447        self.step_stats.clear();
5448        self.cost_graph.clear();
5449        self.partition_graphs.clear();
5450        self.function_graphs.clear();
5451        self.unknown_fields.clear();
5452    }
5453}
5454
5455impl ::std::fmt::Debug for RunMetadata {
5456    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5457        ::protobuf::text_format::fmt(self, f)
5458    }
5459}
5460
5461impl ::protobuf::reflect::ProtobufValue for RunMetadata {
5462    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
5463        ::protobuf::reflect::ReflectValueRef::Message(self)
5464    }
5465}
5466
5467#[derive(PartialEq,Clone,Default)]
5468pub struct RunMetadata_FunctionGraphs {
5469    // message fields
5470    pub partition_graphs: ::protobuf::RepeatedField<super::graph::GraphDef>,
5471    pub pre_optimization_graph: ::protobuf::SingularPtrField<super::graph::GraphDef>,
5472    pub post_optimization_graph: ::protobuf::SingularPtrField<super::graph::GraphDef>,
5473    // special fields
5474    pub unknown_fields: ::protobuf::UnknownFields,
5475    pub cached_size: ::protobuf::CachedSize,
5476}
5477
5478impl<'a> ::std::default::Default for &'a RunMetadata_FunctionGraphs {
5479    fn default() -> &'a RunMetadata_FunctionGraphs {
5480        <RunMetadata_FunctionGraphs as ::protobuf::Message>::default_instance()
5481    }
5482}
5483
5484impl RunMetadata_FunctionGraphs {
5485    pub fn new() -> RunMetadata_FunctionGraphs {
5486        ::std::default::Default::default()
5487    }
5488
5489    // repeated .tensorflow.GraphDef partition_graphs = 1;
5490
5491
5492    pub fn get_partition_graphs(&self) -> &[super::graph::GraphDef] {
5493        &self.partition_graphs
5494    }
5495    pub fn clear_partition_graphs(&mut self) {
5496        self.partition_graphs.clear();
5497    }
5498
5499    // Param is passed by value, moved
5500    pub fn set_partition_graphs(&mut self, v: ::protobuf::RepeatedField<super::graph::GraphDef>) {
5501        self.partition_graphs = v;
5502    }
5503
5504    // Mutable pointer to the field.
5505    pub fn mut_partition_graphs(&mut self) -> &mut ::protobuf::RepeatedField<super::graph::GraphDef> {
5506        &mut self.partition_graphs
5507    }
5508
5509    // Take field
5510    pub fn take_partition_graphs(&mut self) -> ::protobuf::RepeatedField<super::graph::GraphDef> {
5511        ::std::mem::replace(&mut self.partition_graphs, ::protobuf::RepeatedField::new())
5512    }
5513
5514    // .tensorflow.GraphDef pre_optimization_graph = 2;
5515
5516
5517    pub fn get_pre_optimization_graph(&self) -> &super::graph::GraphDef {
5518        self.pre_optimization_graph.as_ref().unwrap_or_else(|| super::graph::GraphDef::default_instance())
5519    }
5520    pub fn clear_pre_optimization_graph(&mut self) {
5521        self.pre_optimization_graph.clear();
5522    }
5523
5524    pub fn has_pre_optimization_graph(&self) -> bool {
5525        self.pre_optimization_graph.is_some()
5526    }
5527
5528    // Param is passed by value, moved
5529    pub fn set_pre_optimization_graph(&mut self, v: super::graph::GraphDef) {
5530        self.pre_optimization_graph = ::protobuf::SingularPtrField::some(v);
5531    }
5532
5533    // Mutable pointer to the field.
5534    // If field is not initialized, it is initialized with default value first.
5535    pub fn mut_pre_optimization_graph(&mut self) -> &mut super::graph::GraphDef {
5536        if self.pre_optimization_graph.is_none() {
5537            self.pre_optimization_graph.set_default();
5538        }
5539        self.pre_optimization_graph.as_mut().unwrap()
5540    }
5541
5542    // Take field
5543    pub fn take_pre_optimization_graph(&mut self) -> super::graph::GraphDef {
5544        self.pre_optimization_graph.take().unwrap_or_else(|| super::graph::GraphDef::new())
5545    }
5546
5547    // .tensorflow.GraphDef post_optimization_graph = 3;
5548
5549
5550    pub fn get_post_optimization_graph(&self) -> &super::graph::GraphDef {
5551        self.post_optimization_graph.as_ref().unwrap_or_else(|| super::graph::GraphDef::default_instance())
5552    }
5553    pub fn clear_post_optimization_graph(&mut self) {
5554        self.post_optimization_graph.clear();
5555    }
5556
5557    pub fn has_post_optimization_graph(&self) -> bool {
5558        self.post_optimization_graph.is_some()
5559    }
5560
5561    // Param is passed by value, moved
5562    pub fn set_post_optimization_graph(&mut self, v: super::graph::GraphDef) {
5563        self.post_optimization_graph = ::protobuf::SingularPtrField::some(v);
5564    }
5565
5566    // Mutable pointer to the field.
5567    // If field is not initialized, it is initialized with default value first.
5568    pub fn mut_post_optimization_graph(&mut self) -> &mut super::graph::GraphDef {
5569        if self.post_optimization_graph.is_none() {
5570            self.post_optimization_graph.set_default();
5571        }
5572        self.post_optimization_graph.as_mut().unwrap()
5573    }
5574
5575    // Take field
5576    pub fn take_post_optimization_graph(&mut self) -> super::graph::GraphDef {
5577        self.post_optimization_graph.take().unwrap_or_else(|| super::graph::GraphDef::new())
5578    }
5579}
5580
5581impl ::protobuf::Message for RunMetadata_FunctionGraphs {
5582    fn is_initialized(&self) -> bool {
5583        for v in &self.partition_graphs {
5584            if !v.is_initialized() {
5585                return false;
5586            }
5587        };
5588        for v in &self.pre_optimization_graph {
5589            if !v.is_initialized() {
5590                return false;
5591            }
5592        };
5593        for v in &self.post_optimization_graph {
5594            if !v.is_initialized() {
5595                return false;
5596            }
5597        };
5598        true
5599    }
5600
5601    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
5602        while !is.eof()? {
5603            let (field_number, wire_type) = is.read_tag_unpack()?;
5604            match field_number {
5605                1 => {
5606                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.partition_graphs)?;
5607                },
5608                2 => {
5609                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.pre_optimization_graph)?;
5610                },
5611                3 => {
5612                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.post_optimization_graph)?;
5613                },
5614                _ => {
5615                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
5616                },
5617            };
5618        }
5619        ::std::result::Result::Ok(())
5620    }
5621
5622    // Compute sizes of nested messages
5623    #[allow(unused_variables)]
5624    fn compute_size(&self) -> u32 {
5625        let mut my_size = 0;
5626        for value in &self.partition_graphs {
5627            let len = value.compute_size();
5628            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5629        };
5630        if let Some(ref v) = self.pre_optimization_graph.as_ref() {
5631            let len = v.compute_size();
5632            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5633        }
5634        if let Some(ref v) = self.post_optimization_graph.as_ref() {
5635            let len = v.compute_size();
5636            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5637        }
5638        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
5639        self.cached_size.set(my_size);
5640        my_size
5641    }
5642
5643    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
5644        for v in &self.partition_graphs {
5645            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5646            os.write_raw_varint32(v.get_cached_size())?;
5647            v.write_to_with_cached_sizes(os)?;
5648        };
5649        if let Some(ref v) = self.pre_optimization_graph.as_ref() {
5650            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5651            os.write_raw_varint32(v.get_cached_size())?;
5652            v.write_to_with_cached_sizes(os)?;
5653        }
5654        if let Some(ref v) = self.post_optimization_graph.as_ref() {
5655            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5656            os.write_raw_varint32(v.get_cached_size())?;
5657            v.write_to_with_cached_sizes(os)?;
5658        }
5659        os.write_unknown_fields(self.get_unknown_fields())?;
5660        ::std::result::Result::Ok(())
5661    }
5662
5663    fn get_cached_size(&self) -> u32 {
5664        self.cached_size.get()
5665    }
5666
5667    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
5668        &self.unknown_fields
5669    }
5670
5671    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
5672        &mut self.unknown_fields
5673    }
5674
5675    fn as_any(&self) -> &dyn (::std::any::Any) {
5676        self as &dyn (::std::any::Any)
5677    }
5678    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
5679        self as &mut dyn (::std::any::Any)
5680    }
5681    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
5682        self
5683    }
5684
5685    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
5686        Self::descriptor_static()
5687    }
5688
5689    fn new() -> RunMetadata_FunctionGraphs {
5690        RunMetadata_FunctionGraphs::new()
5691    }
5692
5693    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
5694        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
5695        unsafe {
5696            descriptor.get(|| {
5697                let mut fields = ::std::vec::Vec::new();
5698                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::graph::GraphDef>>(
5699                    "partition_graphs",
5700                    |m: &RunMetadata_FunctionGraphs| { &m.partition_graphs },
5701                    |m: &mut RunMetadata_FunctionGraphs| { &mut m.partition_graphs },
5702                ));
5703                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::graph::GraphDef>>(
5704                    "pre_optimization_graph",
5705                    |m: &RunMetadata_FunctionGraphs| { &m.pre_optimization_graph },
5706                    |m: &mut RunMetadata_FunctionGraphs| { &mut m.pre_optimization_graph },
5707                ));
5708                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::graph::GraphDef>>(
5709                    "post_optimization_graph",
5710                    |m: &RunMetadata_FunctionGraphs| { &m.post_optimization_graph },
5711                    |m: &mut RunMetadata_FunctionGraphs| { &mut m.post_optimization_graph },
5712                ));
5713                ::protobuf::reflect::MessageDescriptor::new_pb_name::<RunMetadata_FunctionGraphs>(
5714                    "RunMetadata.FunctionGraphs",
5715                    fields,
5716                    file_descriptor_proto()
5717                )
5718            })
5719        }
5720    }
5721
5722    fn default_instance() -> &'static RunMetadata_FunctionGraphs {
5723        static mut instance: ::protobuf::lazy::Lazy<RunMetadata_FunctionGraphs> = ::protobuf::lazy::Lazy::INIT;
5724        unsafe {
5725            instance.get(RunMetadata_FunctionGraphs::new)
5726        }
5727    }
5728}
5729
5730impl ::protobuf::Clear for RunMetadata_FunctionGraphs {
5731    fn clear(&mut self) {
5732        self.partition_graphs.clear();
5733        self.pre_optimization_graph.clear();
5734        self.post_optimization_graph.clear();
5735        self.unknown_fields.clear();
5736    }
5737}
5738
5739impl ::std::fmt::Debug for RunMetadata_FunctionGraphs {
5740    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5741        ::protobuf::text_format::fmt(self, f)
5742    }
5743}
5744
5745impl ::protobuf::reflect::ProtobufValue for RunMetadata_FunctionGraphs {
5746    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
5747        ::protobuf::reflect::ReflectValueRef::Message(self)
5748    }
5749}
5750
5751#[derive(PartialEq,Clone,Default)]
5752pub struct TensorConnection {
5753    // message fields
5754    pub from_tensor: ::std::string::String,
5755    pub to_tensor: ::std::string::String,
5756    // special fields
5757    pub unknown_fields: ::protobuf::UnknownFields,
5758    pub cached_size: ::protobuf::CachedSize,
5759}
5760
5761impl<'a> ::std::default::Default for &'a TensorConnection {
5762    fn default() -> &'a TensorConnection {
5763        <TensorConnection as ::protobuf::Message>::default_instance()
5764    }
5765}
5766
5767impl TensorConnection {
5768    pub fn new() -> TensorConnection {
5769        ::std::default::Default::default()
5770    }
5771
5772    // string from_tensor = 1;
5773
5774
5775    pub fn get_from_tensor(&self) -> &str {
5776        &self.from_tensor
5777    }
5778    pub fn clear_from_tensor(&mut self) {
5779        self.from_tensor.clear();
5780    }
5781
5782    // Param is passed by value, moved
5783    pub fn set_from_tensor(&mut self, v: ::std::string::String) {
5784        self.from_tensor = v;
5785    }
5786
5787    // Mutable pointer to the field.
5788    // If field is not initialized, it is initialized with default value first.
5789    pub fn mut_from_tensor(&mut self) -> &mut ::std::string::String {
5790        &mut self.from_tensor
5791    }
5792
5793    // Take field
5794    pub fn take_from_tensor(&mut self) -> ::std::string::String {
5795        ::std::mem::replace(&mut self.from_tensor, ::std::string::String::new())
5796    }
5797
5798    // string to_tensor = 2;
5799
5800
5801    pub fn get_to_tensor(&self) -> &str {
5802        &self.to_tensor
5803    }
5804    pub fn clear_to_tensor(&mut self) {
5805        self.to_tensor.clear();
5806    }
5807
5808    // Param is passed by value, moved
5809    pub fn set_to_tensor(&mut self, v: ::std::string::String) {
5810        self.to_tensor = v;
5811    }
5812
5813    // Mutable pointer to the field.
5814    // If field is not initialized, it is initialized with default value first.
5815    pub fn mut_to_tensor(&mut self) -> &mut ::std::string::String {
5816        &mut self.to_tensor
5817    }
5818
5819    // Take field
5820    pub fn take_to_tensor(&mut self) -> ::std::string::String {
5821        ::std::mem::replace(&mut self.to_tensor, ::std::string::String::new())
5822    }
5823}
5824
5825impl ::protobuf::Message for TensorConnection {
5826    fn is_initialized(&self) -> bool {
5827        true
5828    }
5829
5830    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
5831        while !is.eof()? {
5832            let (field_number, wire_type) = is.read_tag_unpack()?;
5833            match field_number {
5834                1 => {
5835                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.from_tensor)?;
5836                },
5837                2 => {
5838                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.to_tensor)?;
5839                },
5840                _ => {
5841                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
5842                },
5843            };
5844        }
5845        ::std::result::Result::Ok(())
5846    }
5847
5848    // Compute sizes of nested messages
5849    #[allow(unused_variables)]
5850    fn compute_size(&self) -> u32 {
5851        let mut my_size = 0;
5852        if !self.from_tensor.is_empty() {
5853            my_size += ::protobuf::rt::string_size(1, &self.from_tensor);
5854        }
5855        if !self.to_tensor.is_empty() {
5856            my_size += ::protobuf::rt::string_size(2, &self.to_tensor);
5857        }
5858        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
5859        self.cached_size.set(my_size);
5860        my_size
5861    }
5862
5863    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
5864        if !self.from_tensor.is_empty() {
5865            os.write_string(1, &self.from_tensor)?;
5866        }
5867        if !self.to_tensor.is_empty() {
5868            os.write_string(2, &self.to_tensor)?;
5869        }
5870        os.write_unknown_fields(self.get_unknown_fields())?;
5871        ::std::result::Result::Ok(())
5872    }
5873
5874    fn get_cached_size(&self) -> u32 {
5875        self.cached_size.get()
5876    }
5877
5878    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
5879        &self.unknown_fields
5880    }
5881
5882    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
5883        &mut self.unknown_fields
5884    }
5885
5886    fn as_any(&self) -> &dyn (::std::any::Any) {
5887        self as &dyn (::std::any::Any)
5888    }
5889    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
5890        self as &mut dyn (::std::any::Any)
5891    }
5892    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
5893        self
5894    }
5895
5896    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
5897        Self::descriptor_static()
5898    }
5899
5900    fn new() -> TensorConnection {
5901        TensorConnection::new()
5902    }
5903
5904    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
5905        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
5906        unsafe {
5907            descriptor.get(|| {
5908                let mut fields = ::std::vec::Vec::new();
5909                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
5910                    "from_tensor",
5911                    |m: &TensorConnection| { &m.from_tensor },
5912                    |m: &mut TensorConnection| { &mut m.from_tensor },
5913                ));
5914                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
5915                    "to_tensor",
5916                    |m: &TensorConnection| { &m.to_tensor },
5917                    |m: &mut TensorConnection| { &mut m.to_tensor },
5918                ));
5919                ::protobuf::reflect::MessageDescriptor::new_pb_name::<TensorConnection>(
5920                    "TensorConnection",
5921                    fields,
5922                    file_descriptor_proto()
5923                )
5924            })
5925        }
5926    }
5927
5928    fn default_instance() -> &'static TensorConnection {
5929        static mut instance: ::protobuf::lazy::Lazy<TensorConnection> = ::protobuf::lazy::Lazy::INIT;
5930        unsafe {
5931            instance.get(TensorConnection::new)
5932        }
5933    }
5934}
5935
5936impl ::protobuf::Clear for TensorConnection {
5937    fn clear(&mut self) {
5938        self.from_tensor.clear();
5939        self.to_tensor.clear();
5940        self.unknown_fields.clear();
5941    }
5942}
5943
5944impl ::std::fmt::Debug for TensorConnection {
5945    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5946        ::protobuf::text_format::fmt(self, f)
5947    }
5948}
5949
5950impl ::protobuf::reflect::ProtobufValue for TensorConnection {
5951    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
5952        ::protobuf::reflect::ReflectValueRef::Message(self)
5953    }
5954}
5955
5956#[derive(PartialEq,Clone,Default)]
5957pub struct CallableOptions {
5958    // message fields
5959    pub feed: ::protobuf::RepeatedField<::std::string::String>,
5960    pub fetch: ::protobuf::RepeatedField<::std::string::String>,
5961    pub target: ::protobuf::RepeatedField<::std::string::String>,
5962    pub run_options: ::protobuf::SingularPtrField<RunOptions>,
5963    pub tensor_connection: ::protobuf::RepeatedField<TensorConnection>,
5964    pub feed_devices: ::std::collections::HashMap<::std::string::String, ::std::string::String>,
5965    pub fetch_devices: ::std::collections::HashMap<::std::string::String, ::std::string::String>,
5966    pub fetch_skip_sync: bool,
5967    // special fields
5968    pub unknown_fields: ::protobuf::UnknownFields,
5969    pub cached_size: ::protobuf::CachedSize,
5970}
5971
5972impl<'a> ::std::default::Default for &'a CallableOptions {
5973    fn default() -> &'a CallableOptions {
5974        <CallableOptions as ::protobuf::Message>::default_instance()
5975    }
5976}
5977
5978impl CallableOptions {
5979    pub fn new() -> CallableOptions {
5980        ::std::default::Default::default()
5981    }
5982
5983    // repeated string feed = 1;
5984
5985
5986    pub fn get_feed(&self) -> &[::std::string::String] {
5987        &self.feed
5988    }
5989    pub fn clear_feed(&mut self) {
5990        self.feed.clear();
5991    }
5992
5993    // Param is passed by value, moved
5994    pub fn set_feed(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
5995        self.feed = v;
5996    }
5997
5998    // Mutable pointer to the field.
5999    pub fn mut_feed(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
6000        &mut self.feed
6001    }
6002
6003    // Take field
6004    pub fn take_feed(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
6005        ::std::mem::replace(&mut self.feed, ::protobuf::RepeatedField::new())
6006    }
6007
6008    // repeated string fetch = 2;
6009
6010
6011    pub fn get_fetch(&self) -> &[::std::string::String] {
6012        &self.fetch
6013    }
6014    pub fn clear_fetch(&mut self) {
6015        self.fetch.clear();
6016    }
6017
6018    // Param is passed by value, moved
6019    pub fn set_fetch(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
6020        self.fetch = v;
6021    }
6022
6023    // Mutable pointer to the field.
6024    pub fn mut_fetch(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
6025        &mut self.fetch
6026    }
6027
6028    // Take field
6029    pub fn take_fetch(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
6030        ::std::mem::replace(&mut self.fetch, ::protobuf::RepeatedField::new())
6031    }
6032
6033    // repeated string target = 3;
6034
6035
6036    pub fn get_target(&self) -> &[::std::string::String] {
6037        &self.target
6038    }
6039    pub fn clear_target(&mut self) {
6040        self.target.clear();
6041    }
6042
6043    // Param is passed by value, moved
6044    pub fn set_target(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
6045        self.target = v;
6046    }
6047
6048    // Mutable pointer to the field.
6049    pub fn mut_target(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
6050        &mut self.target
6051    }
6052
6053    // Take field
6054    pub fn take_target(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
6055        ::std::mem::replace(&mut self.target, ::protobuf::RepeatedField::new())
6056    }
6057
6058    // .tensorflow.RunOptions run_options = 4;
6059
6060
6061    pub fn get_run_options(&self) -> &RunOptions {
6062        self.run_options.as_ref().unwrap_or_else(|| RunOptions::default_instance())
6063    }
6064    pub fn clear_run_options(&mut self) {
6065        self.run_options.clear();
6066    }
6067
6068    pub fn has_run_options(&self) -> bool {
6069        self.run_options.is_some()
6070    }
6071
6072    // Param is passed by value, moved
6073    pub fn set_run_options(&mut self, v: RunOptions) {
6074        self.run_options = ::protobuf::SingularPtrField::some(v);
6075    }
6076
6077    // Mutable pointer to the field.
6078    // If field is not initialized, it is initialized with default value first.
6079    pub fn mut_run_options(&mut self) -> &mut RunOptions {
6080        if self.run_options.is_none() {
6081            self.run_options.set_default();
6082        }
6083        self.run_options.as_mut().unwrap()
6084    }
6085
6086    // Take field
6087    pub fn take_run_options(&mut self) -> RunOptions {
6088        self.run_options.take().unwrap_or_else(|| RunOptions::new())
6089    }
6090
6091    // repeated .tensorflow.TensorConnection tensor_connection = 5;
6092
6093
6094    pub fn get_tensor_connection(&self) -> &[TensorConnection] {
6095        &self.tensor_connection
6096    }
6097    pub fn clear_tensor_connection(&mut self) {
6098        self.tensor_connection.clear();
6099    }
6100
6101    // Param is passed by value, moved
6102    pub fn set_tensor_connection(&mut self, v: ::protobuf::RepeatedField<TensorConnection>) {
6103        self.tensor_connection = v;
6104    }
6105
6106    // Mutable pointer to the field.
6107    pub fn mut_tensor_connection(&mut self) -> &mut ::protobuf::RepeatedField<TensorConnection> {
6108        &mut self.tensor_connection
6109    }
6110
6111    // Take field
6112    pub fn take_tensor_connection(&mut self) -> ::protobuf::RepeatedField<TensorConnection> {
6113        ::std::mem::replace(&mut self.tensor_connection, ::protobuf::RepeatedField::new())
6114    }
6115
6116    // repeated .tensorflow.CallableOptions.FeedDevicesEntry feed_devices = 6;
6117
6118
6119    pub fn get_feed_devices(&self) -> &::std::collections::HashMap<::std::string::String, ::std::string::String> {
6120        &self.feed_devices
6121    }
6122    pub fn clear_feed_devices(&mut self) {
6123        self.feed_devices.clear();
6124    }
6125
6126    // Param is passed by value, moved
6127    pub fn set_feed_devices(&mut self, v: ::std::collections::HashMap<::std::string::String, ::std::string::String>) {
6128        self.feed_devices = v;
6129    }
6130
6131    // Mutable pointer to the field.
6132    pub fn mut_feed_devices(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, ::std::string::String> {
6133        &mut self.feed_devices
6134    }
6135
6136    // Take field
6137    pub fn take_feed_devices(&mut self) -> ::std::collections::HashMap<::std::string::String, ::std::string::String> {
6138        ::std::mem::replace(&mut self.feed_devices, ::std::collections::HashMap::new())
6139    }
6140
6141    // repeated .tensorflow.CallableOptions.FetchDevicesEntry fetch_devices = 7;
6142
6143
6144    pub fn get_fetch_devices(&self) -> &::std::collections::HashMap<::std::string::String, ::std::string::String> {
6145        &self.fetch_devices
6146    }
6147    pub fn clear_fetch_devices(&mut self) {
6148        self.fetch_devices.clear();
6149    }
6150
6151    // Param is passed by value, moved
6152    pub fn set_fetch_devices(&mut self, v: ::std::collections::HashMap<::std::string::String, ::std::string::String>) {
6153        self.fetch_devices = v;
6154    }
6155
6156    // Mutable pointer to the field.
6157    pub fn mut_fetch_devices(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, ::std::string::String> {
6158        &mut self.fetch_devices
6159    }
6160
6161    // Take field
6162    pub fn take_fetch_devices(&mut self) -> ::std::collections::HashMap<::std::string::String, ::std::string::String> {
6163        ::std::mem::replace(&mut self.fetch_devices, ::std::collections::HashMap::new())
6164    }
6165
6166    // bool fetch_skip_sync = 8;
6167
6168
6169    pub fn get_fetch_skip_sync(&self) -> bool {
6170        self.fetch_skip_sync
6171    }
6172    pub fn clear_fetch_skip_sync(&mut self) {
6173        self.fetch_skip_sync = false;
6174    }
6175
6176    // Param is passed by value, moved
6177    pub fn set_fetch_skip_sync(&mut self, v: bool) {
6178        self.fetch_skip_sync = v;
6179    }
6180}
6181
6182impl ::protobuf::Message for CallableOptions {
6183    fn is_initialized(&self) -> bool {
6184        for v in &self.run_options {
6185            if !v.is_initialized() {
6186                return false;
6187            }
6188        };
6189        for v in &self.tensor_connection {
6190            if !v.is_initialized() {
6191                return false;
6192            }
6193        };
6194        true
6195    }
6196
6197    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
6198        while !is.eof()? {
6199            let (field_number, wire_type) = is.read_tag_unpack()?;
6200            match field_number {
6201                1 => {
6202                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.feed)?;
6203                },
6204                2 => {
6205                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.fetch)?;
6206                },
6207                3 => {
6208                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.target)?;
6209                },
6210                4 => {
6211                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.run_options)?;
6212                },
6213                5 => {
6214                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.tensor_connection)?;
6215                },
6216                6 => {
6217                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(wire_type, is, &mut self.feed_devices)?;
6218                },
6219                7 => {
6220                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(wire_type, is, &mut self.fetch_devices)?;
6221                },
6222                8 => {
6223                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
6224                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
6225                    }
6226                    let tmp = is.read_bool()?;
6227                    self.fetch_skip_sync = tmp;
6228                },
6229                _ => {
6230                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
6231                },
6232            };
6233        }
6234        ::std::result::Result::Ok(())
6235    }
6236
6237    // Compute sizes of nested messages
6238    #[allow(unused_variables)]
6239    fn compute_size(&self) -> u32 {
6240        let mut my_size = 0;
6241        for value in &self.feed {
6242            my_size += ::protobuf::rt::string_size(1, &value);
6243        };
6244        for value in &self.fetch {
6245            my_size += ::protobuf::rt::string_size(2, &value);
6246        };
6247        for value in &self.target {
6248            my_size += ::protobuf::rt::string_size(3, &value);
6249        };
6250        if let Some(ref v) = self.run_options.as_ref() {
6251            let len = v.compute_size();
6252            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
6253        }
6254        for value in &self.tensor_connection {
6255            let len = value.compute_size();
6256            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
6257        };
6258        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(6, &self.feed_devices);
6259        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(7, &self.fetch_devices);
6260        if self.fetch_skip_sync != false {
6261            my_size += 2;
6262        }
6263        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
6264        self.cached_size.set(my_size);
6265        my_size
6266    }
6267
6268    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
6269        for v in &self.feed {
6270            os.write_string(1, &v)?;
6271        };
6272        for v in &self.fetch {
6273            os.write_string(2, &v)?;
6274        };
6275        for v in &self.target {
6276            os.write_string(3, &v)?;
6277        };
6278        if let Some(ref v) = self.run_options.as_ref() {
6279            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
6280            os.write_raw_varint32(v.get_cached_size())?;
6281            v.write_to_with_cached_sizes(os)?;
6282        }
6283        for v in &self.tensor_connection {
6284            os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
6285            os.write_raw_varint32(v.get_cached_size())?;
6286            v.write_to_with_cached_sizes(os)?;
6287        };
6288        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(6, &self.feed_devices, os)?;
6289        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(7, &self.fetch_devices, os)?;
6290        if self.fetch_skip_sync != false {
6291            os.write_bool(8, self.fetch_skip_sync)?;
6292        }
6293        os.write_unknown_fields(self.get_unknown_fields())?;
6294        ::std::result::Result::Ok(())
6295    }
6296
6297    fn get_cached_size(&self) -> u32 {
6298        self.cached_size.get()
6299    }
6300
6301    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
6302        &self.unknown_fields
6303    }
6304
6305    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
6306        &mut self.unknown_fields
6307    }
6308
6309    fn as_any(&self) -> &dyn (::std::any::Any) {
6310        self as &dyn (::std::any::Any)
6311    }
6312    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
6313        self as &mut dyn (::std::any::Any)
6314    }
6315    fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
6316        self
6317    }
6318
6319    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
6320        Self::descriptor_static()
6321    }
6322
6323    fn new() -> CallableOptions {
6324        CallableOptions::new()
6325    }
6326
6327    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
6328        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
6329        unsafe {
6330            descriptor.get(|| {
6331                let mut fields = ::std::vec::Vec::new();
6332                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
6333                    "feed",
6334                    |m: &CallableOptions| { &m.feed },
6335                    |m: &mut CallableOptions| { &mut m.feed },
6336                ));
6337                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
6338                    "fetch",
6339                    |m: &CallableOptions| { &m.fetch },
6340                    |m: &mut CallableOptions| { &mut m.fetch },
6341                ));
6342                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
6343                    "target",
6344                    |m: &CallableOptions| { &m.target },
6345                    |m: &mut CallableOptions| { &mut m.target },
6346                ));
6347                fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RunOptions>>(
6348                    "run_options",
6349                    |m: &CallableOptions| { &m.run_options },
6350                    |m: &mut CallableOptions| { &mut m.run_options },
6351                ));
6352                fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<TensorConnection>>(
6353                    "tensor_connection",
6354                    |m: &CallableOptions| { &m.tensor_connection },
6355                    |m: &mut CallableOptions| { &mut m.tensor_connection },
6356                ));
6357                fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(
6358                    "feed_devices",
6359                    |m: &CallableOptions| { &m.feed_devices },
6360                    |m: &mut CallableOptions| { &mut m.feed_devices },
6361                ));
6362                fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(
6363                    "fetch_devices",
6364                    |m: &CallableOptions| { &m.fetch_devices },
6365                    |m: &mut CallableOptions| { &mut m.fetch_devices },
6366                ));
6367                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
6368                    "fetch_skip_sync",
6369                    |m: &CallableOptions| { &m.fetch_skip_sync },
6370                    |m: &mut CallableOptions| { &mut m.fetch_skip_sync },
6371                ));
6372                ::protobuf::reflect::MessageDescriptor::new_pb_name::<CallableOptions>(
6373                    "CallableOptions",
6374                    fields,
6375                    file_descriptor_proto()
6376                )
6377            })
6378        }
6379    }
6380
6381    fn default_instance() -> &'static CallableOptions {
6382        static mut instance: ::protobuf::lazy::Lazy<CallableOptions> = ::protobuf::lazy::Lazy::INIT;
6383        unsafe {
6384            instance.get(CallableOptions::new)
6385        }
6386    }
6387}
6388
6389impl ::protobuf::Clear for CallableOptions {
6390    fn clear(&mut self) {
6391        self.feed.clear();
6392        self.fetch.clear();
6393        self.target.clear();
6394        self.run_options.clear();
6395        self.tensor_connection.clear();
6396        self.feed_devices.clear();
6397        self.fetch_devices.clear();
6398        self.fetch_skip_sync = false;
6399        self.unknown_fields.clear();
6400    }
6401}
6402
6403impl ::std::fmt::Debug for CallableOptions {
6404    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6405        ::protobuf::text_format::fmt(self, f)
6406    }
6407}
6408
6409impl ::protobuf::reflect::ProtobufValue for CallableOptions {
6410    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
6411        ::protobuf::reflect::ReflectValueRef::Message(self)
6412    }
6413}
6414
6415static file_descriptor_proto_data: &'static [u8] = b"\
6416    \n%tensorflow/core/protobuf/config.proto\x12\ntensorflow\x1a*tensorflow/\
6417    core/framework/cost_graph.proto\x1a%tensorflow/core/framework/graph.prot\
6418    o\x1a*tensorflow/core/framework/step_stats.proto\x1a&tensorflow/core/pro\
6419    tobuf/cluster.proto\x1a$tensorflow/core/protobuf/debug.proto\x1a.tensorf\
6420    low/core/protobuf/rewriter_config.proto\"\xca\x08\n\nGPUOptions\x12D\n\
6421    \x1fper_process_gpu_memory_fraction\x18\x01\x20\x01(\x01R\x1bperProcessG\
6422    puMemoryFraction\x12!\n\x0callow_growth\x18\x04\x20\x01(\x08R\x0ballowGr\
6423    owth\x12%\n\x0eallocator_type\x18\x02\x20\x01(\tR\rallocatorType\x126\n\
6424    \x17deferred_deletion_bytes\x18\x03\x20\x01(\x03R\x15deferredDeletionByt\
6425    es\x12.\n\x13visible_device_list\x18\x05\x20\x01(\tR\x11visibleDeviceLis\
6426    t\x12;\n\x1apolling_active_delay_usecs\x18\x06\x20\x01(\x05R\x17pollingA\
6427    ctiveDelayUsecs\x12?\n\x1cpolling_inactive_delay_msecs\x18\x07\x20\x01(\
6428    \x05R\x19pollingInactiveDelayMsecs\x120\n\x14force_gpu_compatible\x18\
6429    \x08\x20\x01(\x08R\x12forceGpuCompatible\x12G\n\x0cexperimental\x18\t\
6430    \x20\x01(\x0b2#.tensorflow.GPUOptions.ExperimentalR\x0cexperimental\x1a\
6431    \xca\x04\n\x0cExperimental\x12[\n\x0fvirtual_devices\x18\x01\x20\x03(\
6432    \x0b22.tensorflow.GPUOptions.Experimental.VirtualDevicesR\x0evirtualDevi\
6433    ces\x12,\n\x12use_unified_memory\x18\x02\x20\x01(\x08R\x10useUnifiedMemo\
6434    ry\x12;\n\x1bnum_dev_to_dev_copy_streams\x18\x03\x20\x01(\x05R\x16numDev\
6435    ToDevCopyStreams\x122\n\x15collective_ring_order\x18\x04\x20\x01(\tR\x13\
6436    collectiveRingOrder\x123\n\x15timestamped_allocator\x18\x05\x20\x01(\x08\
6437    R\x14timestampedAllocator\x12=\n\x1bkernel_tracker_max_interval\x18\x07\
6438    \x20\x01(\x05R\x18kernelTrackerMaxInterval\x127\n\x18kernel_tracker_max_\
6439    bytes\x18\x08\x20\x01(\x05R\x15kernelTrackerMaxBytes\x12;\n\x1akernel_tr\
6440    acker_max_pending\x18\t\x20\x01(\x05R\x17kernelTrackerMaxPending\x1aT\n\
6441    \x0eVirtualDevices\x12&\n\x0fmemory_limit_mb\x18\x01\x20\x03(\x02R\rmemo\
6442    ryLimitMb\x12\x1a\n\x08priority\x18\x02\x20\x03(\x05R\x08priority\"\x82\
6443    \x04\n\x10OptimizerOptions\x12M\n#do_common_subexpression_elimination\
6444    \x18\x01\x20\x01(\x08R\x20doCommonSubexpressionElimination\x12.\n\x13do_\
6445    constant_folding\x18\x02\x20\x01(\x08R\x11doConstantFolding\x12>\n\x1cma\
6446    x_folded_constant_in_bytes\x18\x06\x20\x01(\x03R\x18maxFoldedConstantInB\
6447    ytes\x120\n\x14do_function_inlining\x18\x04\x20\x01(\x08R\x12doFunctionI\
6448    nlining\x12?\n\topt_level\x18\x03\x20\x01(\x0e2\".tensorflow.OptimizerOp\
6449    tions.LevelR\x08optLevel\x12U\n\x10global_jit_level\x18\x05\x20\x01(\x0e\
6450    2+.tensorflow.OptimizerOptions.GlobalJitLevelR\x0eglobalJitLevel\"\x20\n\
6451    \x05Level\x12\x06\n\x02L1\x10\0\x12\x0f\n\x02L0\x10\xff\xff\xff\xff\xff\
6452    \xff\xff\xff\xff\x01\"C\n\x0eGlobalJitLevel\x12\x0b\n\x07DEFAULT\x10\0\
6453    \x12\x10\n\x03OFF\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x08\n\
6454    \x04ON_1\x10\x01\x12\x08\n\x04ON_2\x10\x02\"\x90\x04\n\x0cGraphOptions\
6455    \x124\n\x16enable_recv_scheduling\x18\x02\x20\x01(\x08R\x14enableRecvSch\
6456    eduling\x12I\n\x11optimizer_options\x18\x03\x20\x01(\x0b2\x1c.tensorflow\
6457    .OptimizerOptionsR\x10optimizerOptions\x12(\n\x10build_cost_model\x18\
6458    \x04\x20\x01(\x03R\x0ebuildCostModel\x123\n\x16build_cost_model_after\
6459    \x18\t\x20\x01(\x03R\x13buildCostModelAfter\x12!\n\x0cinfer_shapes\x18\
6460    \x05\x20\x01(\x08R\x0binferShapes\x12,\n\x12place_pruned_graph\x18\x06\
6461    \x20\x01(\x08R\x10placePrunedGraph\x128\n\x18enable_bfloat16_sendrecv\
6462    \x18\x07\x20\x01(\x08R\x16enableBfloat16Sendrecv\x12#\n\rtimeline_step\
6463    \x18\x08\x20\x01(\x05R\x0ctimelineStep\x12C\n\x0frewrite_options\x18\n\
6464    \x20\x01(\x0b2\x1a.tensorflow.RewriterConfigR\x0erewriteOptionsJ\x04\x08\
6465    \x01\x10\x02R%skip_common_subexpression_elimination\"Y\n\x15ThreadPoolOp\
6466    tionProto\x12\x1f\n\x0bnum_threads\x18\x01\x20\x01(\x05R\nnumThreads\x12\
6467    \x1f\n\x0bglobal_name\x18\x02\x20\x01(\tR\nglobalName\"\xa9\x02\n\nRPCOp\
6468    tions\x12>\n\x1cuse_rpc_for_inprocess_master\x18\x01\x20\x01(\x08R\x18us\
6469    eRpcForInprocessMaster\x123\n\x15compression_algorithm\x18\x02\x20\x01(\
6470    \tR\x14compressionAlgorithm\x12+\n\x11compression_level\x18\x03\x20\x01(\
6471    \x05R\x10compressionLevel\x12,\n\x12cache_rpc_response\x18\x04\x20\x01(\
6472    \x08R\x10cacheRpcResponse\x12K\n\"disable_session_connection_sharing\x18\
6473    \x05\x20\x01(\x08R\x1fdisableSessionConnectionSharing\"?\n\x0fSessionMet\
6474    adata\x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04name\x12\x18\n\x07version\
6475    \x18\x02\x20\x01(\x03R\x07version\"\x8b\x10\n\x0bConfigProto\x12K\n\x0cd\
6476    evice_count\x18\x01\x20\x03(\x0b2(.tensorflow.ConfigProto.DeviceCountEnt\
6477    ryR\x0bdeviceCount\x12?\n\x1cintra_op_parallelism_threads\x18\x02\x20\
6478    \x01(\x05R\x19intraOpParallelismThreads\x12?\n\x1cinter_op_parallelism_t\
6479    hreads\x18\x05\x20\x01(\x05R\x19interOpParallelismThreads\x125\n\x17use_\
6480    per_session_threads\x18\t\x20\x01(\x08R\x14usePerSessionThreads\x12a\n\
6481    \x1csession_inter_op_thread_pool\x18\x0c\x20\x03(\x0b2!.tensorflow.Threa\
6482    dPoolOptionProtoR\x18sessionInterOpThreadPool\x12)\n\x10placement_period\
6483    \x18\x03\x20\x01(\x05R\x0fplacementPeriod\x12%\n\x0edevice_filters\x18\
6484    \x04\x20\x03(\tR\rdeviceFilters\x127\n\x0bgpu_options\x18\x06\x20\x01(\
6485    \x0b2\x16.tensorflow.GPUOptionsR\ngpuOptions\x120\n\x14allow_soft_placem\
6486    ent\x18\x07\x20\x01(\x08R\x12allowSoftPlacement\x120\n\x14log_device_pla\
6487    cement\x18\x08\x20\x01(\x08R\x12logDevicePlacement\x12=\n\rgraph_options\
6488    \x18\n\x20\x01(\x0b2\x18.tensorflow.GraphOptionsR\x0cgraphOptions\x125\n\
6489    \x17operation_timeout_in_ms\x18\x0b\x20\x01(\x03R\x14operationTimeoutInM\
6490    s\x127\n\x0brpc_options\x18\r\x20\x01(\x0b2\x16.tensorflow.RPCOptionsR\n\
6491    rpcOptions\x127\n\x0bcluster_def\x18\x0e\x20\x01(\x0b2\x16.tensorflow.Cl\
6492    usterDefR\nclusterDef\x122\n\x15isolate_session_state\x18\x0f\x20\x01(\
6493    \x08R\x13isolateSessionState\x12F\n\x20share_cluster_devices_in_session\
6494    \x18\x11\x20\x01(\x08R\x1cshareClusterDevicesInSession\x12H\n\x0cexperim\
6495    ental\x18\x10\x20\x01(\x0b2$.tensorflow.ConfigProto.ExperimentalR\x0cexp\
6496    erimental\x1a>\n\x10DeviceCountEntry\x12\x10\n\x03key\x18\x01\x20\x01(\t\
6497    R\x03key\x12\x14\n\x05value\x18\x02\x20\x01(\x05R\x05value:\x028\x01\x1a\
6498    \xb5\x07\n\x0cExperimental\x126\n\x17collective_group_leader\x18\x01\x20\
6499    \x01(\tR\x15collectiveGroupLeader\x12#\n\rexecutor_type\x18\x03\x20\x01(\
6500    \tR\x0cexecutorType\x12+\n\x12recv_buf_max_chunk\x18\x04\x20\x01(\x05R\
6501    \x0frecvBufMaxChunk\x12*\n\x11use_numa_affinity\x18\x05\x20\x01(\x08R\
6502    \x0fuseNumaAffinity\x12a\n-collective_deterministic_sequential_execution\
6503    \x18\x06\x20\x01(\x08R*collectiveDeterministicSequentialExecution\x12'\n\
6504    \x0fcollective_nccl\x18\x07\x20\x01(\x08R\x0ecollectiveNccl\x12a\n.share\
6505    _session_state_in_clusterspec_propagation\x18\x08\x20\x01(\x08R)shareSes\
6506    sionStateInClusterspecPropagation\x126\n\x17disable_thread_spinning\x18\
6507    \t\x20\x01(\x08R\x15disableThreadSpinning\x12F\n\x20share_cluster_device\
6508    s_in_session\x18\n\x20\x01(\x08R\x1cshareClusterDevicesInSession\x12F\n\
6509    \x10session_metadata\x18\x0b\x20\x01(\x0b2\x1b.tensorflow.SessionMetadat\
6510    aR\x0fsessionMetadata\x129\n\x19optimize_for_static_graph\x18\x0c\x20\
6511    \x01(\x08R\x16optimizeForStaticGraph\x12,\n\x12enable_mlir_bridge\x18\r\
6512    \x20\x01(\x08R\x10enableMlirBridge\x12C\n\x1eenable_mlir_graph_optimizat\
6513    ion\x18\x10\x20\x01(\x08R\x1benableMlirGraphOptimization\x12E\n\x1fdisab\
6514    le_output_partition_graphs\x18\x0e\x20\x01(\x08R\x1cdisableOutputPartiti\
6515    onGraphs\x12=\n\x1bxla_fusion_autotuner_thresh\x18\x0f\x20\x01(\x03R\x18\
6516    xlaFusionAutotunerThreshJ\x04\x08\x02\x10\x03\"\xa8\x06\n\nRunOptions\
6517    \x12B\n\x0btrace_level\x18\x01\x20\x01(\x0e2!.tensorflow.RunOptions.Trac\
6518    eLevelR\ntraceLevel\x12\"\n\rtimeout_in_ms\x18\x02\x20\x01(\x03R\x0btime\
6519    outInMs\x12/\n\x14inter_op_thread_pool\x18\x03\x20\x01(\x05R\x11interOpT\
6520    hreadPool\x126\n\x17output_partition_graphs\x18\x05\x20\x01(\x08R\x15out\
6521    putPartitionGraphs\x12=\n\rdebug_options\x18\x06\x20\x01(\x0b2\x18.tenso\
6522    rflow.DebugOptionsR\x0cdebugOptions\x12J\n\"report_tensor_allocations_up\
6523    on_oom\x18\x07\x20\x01(\x08R\x1ereportTensorAllocationsUponOom\x12G\n\
6524    \x0cexperimental\x18\x08\x20\x01(\x0b2#.tensorflow.RunOptions.Experiment\
6525    alR\x0cexperimental\x1a\x9a\x02\n\x0cExperimental\x120\n\x14collective_g\
6526    raph_key\x18\x01\x20\x01(\x03R\x12collectiveGraphKey\x12/\n\x14use_run_h\
6527    andler_pool\x18\x02\x20\x01(\x08R\x11useRunHandlerPool\x12r\n\x18run_han\
6528    dler_pool_options\x18\x03\x20\x01(\x0b29.tensorflow.RunOptions.Experimen\
6529    tal.RunHandlerPoolOptionsR\x15runHandlerPoolOptions\x1a3\n\x15RunHandler\
6530    PoolOptions\x12\x1a\n\x08priority\x18\x01\x20\x01(\x03R\x08priority\"R\n\
6531    \nTraceLevel\x12\x0c\n\x08NO_TRACE\x10\0\x12\x12\n\x0eSOFTWARE_TRACE\x10\
6532    \x01\x12\x12\n\x0eHARDWARE_TRACE\x10\x02\x12\x0e\n\nFULL_TRACE\x10\x03J\
6533    \x04\x08\x04\x10\x05\"\xfc\x03\n\x0bRunMetadata\x124\n\nstep_stats\x18\
6534    \x01\x20\x01(\x0b2\x15.tensorflow.StepStatsR\tstepStats\x127\n\ncost_gra\
6535    ph\x18\x02\x20\x01(\x0b2\x18.tensorflow.CostGraphDefR\tcostGraph\x12?\n\
6536    \x10partition_graphs\x18\x03\x20\x03(\x0b2\x14.tensorflow.GraphDefR\x0fp\
6537    artitionGraphs\x12O\n\x0ffunction_graphs\x18\x04\x20\x03(\x0b2&.tensorfl\
6538    ow.RunMetadata.FunctionGraphsR\x0efunctionGraphs\x1a\xeb\x01\n\x0eFuncti\
6539    onGraphs\x12?\n\x10partition_graphs\x18\x01\x20\x03(\x0b2\x14.tensorflow\
6540    .GraphDefR\x0fpartitionGraphs\x12J\n\x16pre_optimization_graph\x18\x02\
6541    \x20\x01(\x0b2\x14.tensorflow.GraphDefR\x14preOptimizationGraph\x12L\n\
6542    \x17post_optimization_graph\x18\x03\x20\x01(\x0b2\x14.tensorflow.GraphDe\
6543    fR\x15postOptimizationGraph\"P\n\x10TensorConnection\x12\x1f\n\x0bfrom_t\
6544    ensor\x18\x01\x20\x01(\tR\nfromTensor\x12\x1b\n\tto_tensor\x18\x02\x20\
6545    \x01(\tR\x08toTensor\"\xa5\x04\n\x0fCallableOptions\x12\x12\n\x04feed\
6546    \x18\x01\x20\x03(\tR\x04feed\x12\x14\n\x05fetch\x18\x02\x20\x03(\tR\x05f\
6547    etch\x12\x16\n\x06target\x18\x03\x20\x03(\tR\x06target\x127\n\x0brun_opt\
6548    ions\x18\x04\x20\x01(\x0b2\x16.tensorflow.RunOptionsR\nrunOptions\x12I\n\
6549    \x11tensor_connection\x18\x05\x20\x03(\x0b2\x1c.tensorflow.TensorConnect\
6550    ionR\x10tensorConnection\x12O\n\x0cfeed_devices\x18\x06\x20\x03(\x0b2,.t\
6551    ensorflow.CallableOptions.FeedDevicesEntryR\x0bfeedDevices\x12R\n\rfetch\
6552    _devices\x18\x07\x20\x03(\x0b2-.tensorflow.CallableOptions.FetchDevicesE\
6553    ntryR\x0cfetchDevices\x12&\n\x0ffetch_skip_sync\x18\x08\x20\x01(\x08R\rf\
6554    etchSkipSync\x1a>\n\x10FeedDevicesEntry\x12\x10\n\x03key\x18\x01\x20\x01\
6555    (\tR\x03key\x12\x14\n\x05value\x18\x02\x20\x01(\tR\x05value:\x028\x01\
6556    \x1a?\n\x11FetchDevicesEntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\
6557    \x12\x14\n\x05value\x18\x02\x20\x01(\tR\x05value:\x028\x01Bw\n\x18org.te\
6558    nsorflow.frameworkB\x0cConfigProtosP\x01ZHgithub.com/tensorflow/tensorfl\
6559    ow/tensorflow/go/core/core_protos_go_proto\xf8\x01\x01J\xe8\x96\x02\n\
6560    \x07\x12\x05\0\0\xa7\x06\x01\n\x08\n\x01\x0c\x12\x03\0\0\x12\n\x08\n\x01\
6561    \x02\x12\x03\x02\0\x13\n\t\n\x02\x03\0\x12\x03\x04\04\n\t\n\x02\x03\x01\
6562    \x12\x03\x05\0/\n\t\n\x02\x03\x02\x12\x03\x06\04\n\t\n\x02\x03\x03\x12\
6563    \x03\x07\00\n\t\n\x02\x03\x04\x12\x03\x08\0.\n\t\n\x02\x03\x05\x12\x03\t\
6564    \08\n\x08\n\x01\x08\x12\x03\x0b\0\x1f\n\t\n\x02\x08\x1f\x12\x03\x0b\0\
6565    \x1f\n\x08\n\x01\x08\x12\x03\x0c\0-\n\t\n\x02\x08\x08\x12\x03\x0c\0-\n\
6566    \x08\n\x01\x08\x12\x03\r\0\"\n\t\n\x02\x08\n\x12\x03\r\0\"\n\x08\n\x01\
6567    \x08\x12\x03\x0e\01\n\t\n\x02\x08\x01\x12\x03\x0e\01\n\x08\n\x01\x08\x12\
6568    \x03\x0f\0_\n\t\n\x02\x08\x0b\x12\x03\x0f\0_\n\x0b\n\x02\x04\0\x12\x05\
6569    \x11\0\xcd\x01\x01\n\n\n\x03\x04\0\x01\x12\x03\x11\x08\x12\n\xe2\x07\n\
6570    \x04\x04\0\x02\0\x12\x03#\x02-\x1a\xd4\x07\x20Fraction\x20of\x20the\x20a\
6571    vailable\x20GPU\x20memory\x20to\x20allocate\x20for\x20each\x20process.\n\
6572    \x201\x20means\x20to\x20allocate\x20all\x20of\x20the\x20GPU\x20memory,\
6573    \x200.5\x20means\x20the\x20process\n\x20allocates\x20up\x20to\x20~50%\
6574    \x20of\x20the\x20available\x20GPU\x20memory.\n\n\x20GPU\x20memory\x20is\
6575    \x20pre-allocated\x20unless\x20the\x20allow_growth\x20option\x20is\x20en\
6576    abled.\n\n\x20If\x20greater\x20than\x201.0,\x20uses\x20CUDA\x20unified\
6577    \x20memory\x20to\x20potentially\x20oversubscribe\n\x20the\x20amount\x20o\
6578    f\x20memory\x20available\x20on\x20the\x20GPU\x20device\x20by\x20using\
6579    \x20host\x20memory\x20as\x20a\n\x20swap\x20space.\x20Accessing\x20memory\
6580    \x20not\x20available\x20on\x20the\x20device\x20will\x20be\n\x20significa\
6581    ntly\x20slower\x20as\x20that\x20would\x20require\x20memory\x20transfer\
6582    \x20between\x20the\x20host\n\x20and\x20the\x20device.\x20Options\x20to\
6583    \x20reduce\x20the\x20memory\x20requirement\x20should\x20be\n\x20consider\
6584    ed\x20before\x20enabling\x20this\x20option\x20as\x20this\x20may\x20come\
6585    \x20with\x20a\x20negative\n\x20performance\x20impact.\x20Oversubscriptio\
6586    n\x20using\x20the\x20unified\x20memory\x20requires\n\x20Pascal\x20class\
6587    \x20or\x20newer\x20GPUs\x20and\x20it\x20is\x20currently\x20only\x20suppo\
6588    rted\x20on\x20the\x20Linux\n\x20operating\x20system.\x20See\n\x20https:/\
6589    /docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#um-requirement\
6590    s\n\x20for\x20the\x20detailed\x20requirements.\n\n\x0c\n\x05\x04\0\x02\0\
6591    \x05\x12\x03#\x02\x08\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03#\t(\n\x0c\n\
6592    \x05\x04\0\x02\0\x03\x12\x03#+,\n\x93\x01\n\x04\x04\0\x02\x01\x12\x03'\
6593    \x02\x18\x1a\x85\x01\x20If\x20true,\x20the\x20allocator\x20does\x20not\
6594    \x20pre-allocate\x20the\x20entire\x20specified\n\x20GPU\x20memory\x20reg\
6595    ion,\x20instead\x20starting\x20small\x20and\x20growing\x20as\x20needed.\
6596    \n\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03'\x02\x06\n\x0c\n\x05\x04\0\x02\
6597    \x01\x01\x12\x03'\x07\x13\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03'\x16\x17\
6598    \n\x8b\x02\n\x04\x04\0\x02\x02\x12\x031\x02\x1c\x1a\xfd\x01\x20The\x20ty\
6599    pe\x20of\x20GPU\x20allocation\x20strategy\x20to\x20use.\n\n\x20Allowed\
6600    \x20values:\n\x20\"\":\x20The\x20empty\x20string\x20(default)\x20uses\
6601    \x20a\x20system-chosen\x20default\n\x20\x20\x20\x20\x20which\x20may\x20c\
6602    hange\x20over\x20time.\n\n\x20\"BFC\":\x20A\x20\"Best-fit\x20with\x20coa\
6603    lescing\"\x20algorithm,\x20simplified\x20from\x20a\n\x20\x20\x20\x20\x20\
6604    \x20\x20\x20version\x20of\x20dlmalloc.\n\n\x0c\n\x05\x04\0\x02\x02\x05\
6605    \x12\x031\x02\x08\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x031\t\x17\n\x0c\n\
6606    \x05\x04\0\x02\x02\x03\x12\x031\x1a\x1b\n\xb2\x01\n\x04\x04\0\x02\x03\
6607    \x12\x036\x02$\x1a\xa4\x01\x20Delay\x20deletion\x20of\x20up\x20to\x20thi\
6608    s\x20many\x20bytes\x20to\x20reduce\x20the\x20number\x20of\n\x20interacti\
6609    ons\x20with\x20gpu\x20driver\x20code.\x20\x20If\x200,\x20the\x20system\
6610    \x20chooses\n\x20a\x20reasonable\x20default\x20(several\x20MBs).\n\n\x0c\
6611    \n\x05\x04\0\x02\x03\x05\x12\x036\x02\x07\n\x0c\n\x05\x04\0\x02\x03\x01\
6612    \x12\x036\x08\x1f\n\x0c\n\x05\x04\0\x02\x03\x03\x12\x036\"#\n\xdc\t\n\
6613    \x04\x04\0\x02\x04\x12\x03M\x02!\x1a\xce\t\x20A\x20comma-separated\x20li\
6614    st\x20of\x20GPU\x20ids\x20that\x20determines\x20the\x20'visible'\n\x20to\
6615    \x20'virtual'\x20mapping\x20of\x20GPU\x20devices.\x20\x20For\x20example,\
6616    \x20if\x20TensorFlow\n\x20can\x20see\x208\x20GPU\x20devices\x20in\x20the\
6617    \x20process,\x20and\x20one\x20wanted\x20to\x20map\n\x20visible\x20GPU\
6618    \x20devices\x205\x20and\x203\x20as\x20\"/device:GPU:0\",\x20and\x20\"/de\
6619    vice:GPU:1\",\n\x20then\x20one\x20would\x20specify\x20this\x20field\x20a\
6620    s\x20\"5,3\".\x20\x20This\x20field\x20is\x20similar\x20in\n\x20spirit\
6621    \x20to\x20the\x20CUDA_VISIBLE_DEVICES\x20environment\x20variable,\x20exc\
6622    ept\n\x20it\x20applies\x20to\x20the\x20visible\x20GPU\x20devices\x20in\
6623    \x20the\x20process.\n\n\x20NOTE:\n\x201.\x20The\x20GPU\x20driver\x20prov\
6624    ides\x20the\x20process\x20with\x20the\x20visible\x20GPUs\n\x20\x20\x20\
6625    \x20in\x20an\x20order\x20which\x20is\x20not\x20guaranteed\x20to\x20have\
6626    \x20any\x20correlation\x20to\n\x20\x20\x20\x20the\x20*physical*\x20GPU\
6627    \x20id\x20in\x20the\x20machine.\x20\x20This\x20field\x20is\x20used\x20fo\
6628    r\n\x20\x20\x20\x20remapping\x20\"visible\"\x20to\x20\"virtual\",\x20whi\
6629    ch\x20means\x20this\x20operates\x20only\n\x20\x20\x20\x20after\x20the\
6630    \x20process\x20starts.\x20\x20Users\x20are\x20required\x20to\x20use\x20v\
6631    endor\n\x20\x20\x20\x20specific\x20mechanisms\x20(e.g.,\x20CUDA_VISIBLE_\
6632    DEVICES)\x20to\x20control\x20the\n\x20\x20\x20\x20physical\x20to\x20visi\
6633    ble\x20device\x20mapping\x20prior\x20to\x20invoking\x20TensorFlow.\n\x20\
6634    2.\x20In\x20the\x20code,\x20the\x20ids\x20in\x20this\x20list\x20are\x20a\
6635    lso\x20called\x20\"platform\x20GPU\x20id\"s,\n\x20\x20\x20\x20and\x20the\
6636    \x20'virtual'\x20ids\x20of\x20GPU\x20devices\x20(i.e.\x20the\x20ids\x20i\
6637    n\x20the\x20device\n\x20\x20\x20\x20name\x20\"/device:GPU:<id>\")\x20are\
6638    \x20also\x20called\x20\"TF\x20GPU\x20id\"s.\x20Please\n\x20\x20\x20\x20r\
6639    efer\x20to\x20third_party/tensorflow/core/common_runtime/gpu/gpu_id.h\n\
6640    \x20\x20\x20\x20for\x20more\x20information.\n\n\x0c\n\x05\x04\0\x02\x04\
6641    \x05\x12\x03M\x02\x08\n\x0c\n\x05\x04\0\x02\x04\x01\x12\x03M\t\x1c\n\x0c\
6642    \n\x05\x04\0\x02\x04\x03\x12\x03M\x1f\x20\n\xc1\x01\n\x04\x04\0\x02\x05\
6643    \x12\x03R\x02'\x1a\xb3\x01\x20In\x20the\x20event\x20polling\x20loop\x20s\
6644    leep\x20this\x20many\x20microseconds\x20between\n\x20PollEvents\x20calls\
6645    ,\x20when\x20the\x20queue\x20is\x20not\x20empty.\x20\x20If\x20value\x20i\
6646    s\x20not\n\x20set\x20or\x20set\x20to\x200,\x20gets\x20set\x20to\x20a\x20\
6647    non-zero\x20default.\n\n\x0c\n\x05\x04\0\x02\x05\x05\x12\x03R\x02\x07\n\
6648    \x0c\n\x05\x04\0\x02\x05\x01\x12\x03R\x08\"\n\x0c\n\x05\x04\0\x02\x05\
6649    \x03\x12\x03R%&\n4\n\x04\x04\0\x02\x06\x12\x03U\x02)\x1a'\x20This\x20fie\
6650    ld\x20is\x20deprecated\x20and\x20ignored.\n\n\x0c\n\x05\x04\0\x02\x06\
6651    \x05\x12\x03U\x02\x07\n\x0c\n\x05\x04\0\x02\x06\x01\x12\x03U\x08$\n\x0c\
6652    \n\x05\x04\0\x02\x06\x03\x12\x03U'(\n\x9a\x05\n\x04\x04\0\x02\x07\x12\
6653    \x03a\x02\x20\x1a\x8c\x05\x20Force\x20all\x20tensors\x20to\x20be\x20gpu_\
6654    compatible.\x20On\x20a\x20GPU-enabled\x20TensorFlow,\n\x20enabling\x20th\
6655    is\x20option\x20forces\x20all\x20CPU\x20tensors\x20to\x20be\x20allocated\
6656    \x20with\x20Cuda\n\x20pinned\x20memory.\x20Normally,\x20TensorFlow\x20wi\
6657    ll\x20infer\x20which\x20tensors\x20should\x20be\n\x20allocated\x20as\x20\
6658    the\x20pinned\x20memory.\x20But\x20in\x20case\x20where\x20the\x20inferen\
6659    ce\x20is\n\x20incomplete,\x20this\x20option\x20can\x20significantly\x20s\
6660    peed\x20up\x20the\x20cross-device\x20memory\n\x20copy\x20performance\x20\
6661    as\x20long\x20as\x20it\x20fits\x20the\x20memory.\n\x20Note\x20that\x20th\
6662    is\x20option\x20is\x20not\x20something\x20that\x20should\x20be\n\x20enab\
6663    led\x20by\x20default\x20for\x20unknown\x20or\x20very\x20large\x20models,\
6664    \x20since\x20all\x20Cuda\x20pinned\n\x20memory\x20is\x20unpageable,\x20h\
6665    aving\x20too\x20much\x20pinned\x20memory\x20might\x20negatively\x20impac\
6666    t\n\x20the\x20overall\x20host\x20system\x20performance.\n\n\x0c\n\x05\
6667    \x04\0\x02\x07\x05\x12\x03a\x02\x06\n\x0c\n\x05\x04\0\x02\x07\x01\x12\
6668    \x03a\x07\x1b\n\x0c\n\x05\x04\0\x02\x07\x03\x12\x03a\x1e\x1f\n\r\n\x04\
6669    \x04\0\x03\0\x12\x05c\x02\xc7\x01\x03\n\x0c\n\x05\x04\0\x03\0\x01\x12\
6670    \x03c\n\x16\na\n\x06\x04\0\x03\0\x03\0\x12\x04f\x04|\x05\x1aQ\x20Configu\
6671    ration\x20for\x20breaking\x20down\x20a\x20visible\x20GPU\x20into\x20mult\
6672    iple\x20\"virtual\"\n\x20devices.\n\n\x0e\n\x07\x04\0\x03\0\x03\0\x01\
6673    \x12\x03f\x0c\x1a\n\xa5\x03\n\x08\x04\0\x03\0\x03\0\x02\0\x12\x03o\x06)\
6674    \x1a\x93\x03\x20Per\x20\"virtual\"\x20device\x20memory\x20limit,\x20in\
6675    \x20MB.\x20The\x20number\x20of\x20elements\x20in\n\x20the\x20list\x20is\
6676    \x20the\x20number\x20of\x20virtual\x20devices\x20to\x20create\x20on\x20t\
6677    he\n\x20corresponding\x20visible\x20GPU\x20(see\x20\"virtual_devices\"\
6678    \x20below).\n\x20If\x20empty,\x20it\x20will\x20create\x20single\x20virtu\
6679    al\x20device\x20taking\x20all\x20available\n\x20memory\x20from\x20the\
6680    \x20device.\n\n\x20For\x20the\x20concept\x20of\x20\"visible\"\x20and\x20\
6681    \"virtual\"\x20GPU,\x20see\x20the\x20comments\x20for\n\x20\"visible_devi\
6682    ce_list\"\x20above\x20for\x20more\x20information.\n\n\x10\n\t\x04\0\x03\
6683    \0\x03\0\x02\0\x04\x12\x03o\x06\x0e\n\x10\n\t\x04\0\x03\0\x03\0\x02\0\
6684    \x05\x12\x03o\x0f\x14\n\x10\n\t\x04\0\x03\0\x03\0\x02\0\x01\x12\x03o\x15\
6685    $\n\x10\n\t\x04\0\x03\0\x03\0\x02\0\x03\x12\x03o'(\n\xe1\x03\n\x08\x04\0\
6686    \x03\0\x03\0\x02\x01\x12\x03{\x06\"\x1a\xcf\x03\x20Priority\x20values\
6687    \x20to\x20use\x20with\x20the\x20virtual\x20devices.\x20Use\x20the\x20cud\
6688    a\x20function\n\x20cudaDeviceGetStreamPriorityRange\x20to\x20query\x20fo\
6689    r\x20valid\x20range\x20of\x20values\x20for\n\x20priority.\n\n\x20On\x20a\
6690    \x20P4000\x20GPU\x20with\x20cuda\x2010.1,\x20the\x20priority\x20range\
6691    \x20reported\x20was\x200\x20for\n\x20least\x20priority\x20and\x20-1\x20f\
6692    or\x20greatest\x20priority.\n\n\x20If\x20this\x20field\x20is\x20not\x20s\
6693    pecified,\x20then\x20the\x20virtual\x20devices\x20will\x20be\n\x20create\
6694    d\x20with\x20the\x20default.\x20If\x20this\x20field\x20has\x20values\x20\
6695    set,\x20then\x20the\x20size\n\x20of\x20this\x20must\x20match\x20with\x20\
6696    the\x20above\x20memory_limit_mb.\n\n\x10\n\t\x04\0\x03\0\x03\0\x02\x01\
6697    \x04\x12\x03{\x06\x0e\n\x10\n\t\x04\0\x03\0\x03\0\x02\x01\x05\x12\x03{\
6698    \x0f\x14\n\x10\n\t\x04\0\x03\0\x03\0\x02\x01\x01\x12\x03{\x15\x1d\n\x10\
6699    \n\t\x04\0\x03\0\x03\0\x02\x01\x03\x12\x03{\x20!\n\xae\t\n\x06\x04\0\x03\
6700    \0\x02\0\x12\x04\x95\x01\x040\x1a\x9d\t\x20The\x20multi\x20virtual\x20de\
6701    vice\x20settings.\x20If\x20empty\x20(not\x20set),\x20it\x20will\x20creat\
6702    e\n\x20single\x20virtual\x20device\x20on\x20each\x20visible\x20GPU,\x20a\
6703    ccording\x20to\x20the\x20settings\n\x20in\x20\"visible_device_list\"\x20\
6704    above.\x20Otherwise,\x20the\x20number\x20of\x20elements\x20in\x20the\n\
6705    \x20list\x20must\x20be\x20the\x20same\x20as\x20the\x20number\x20of\x20vi\
6706    sible\x20GPUs\x20(after\n\x20\"visible_device_list\"\x20filtering\x20if\
6707    \x20it\x20is\x20set),\x20and\x20the\x20string\x20represented\n\x20device\
6708    \x20names\x20(e.g.\x20/device:GPU:<id>)\x20will\x20refer\x20to\x20the\
6709    \x20virtual\n\x20devices\x20and\x20have\x20the\x20<id>\x20field\x20assig\
6710    ned\x20sequentially\x20starting\x20from\x200,\n\x20according\x20to\x20th\
6711    e\x20order\x20they\x20appear\x20in\x20this\x20list\x20and\x20the\x20\"me\
6712    mory_limit\"\n\x20list\x20inside\x20each\x20element.\x20For\x20example,\
6713    \n\x20\x20\x20visible_device_list\x20=\x20\"1,0\"\n\x20\x20\x20virtual_d\
6714    evices\x20{\x20memory_limit:\x201GB\x20memory_limit:\x202GB\x20}\n\x20\
6715    \x20\x20virtual_devices\x20{}\n\x20will\x20create\x20three\x20virtual\
6716    \x20devices\x20as:\n\x20\x20\x20/device:GPU:0\x20->\x20visible\x20GPU\
6717    \x201\x20with\x201GB\x20memory\n\x20\x20\x20/device:GPU:1\x20->\x20visib\
6718    le\x20GPU\x201\x20with\x202GB\x20memory\n\x20\x20\x20/device:GPU:2\x20->\
6719    \x20visible\x20GPU\x200\x20with\x20all\x20available\x20memory\n\n\x20NOT\
6720    E:\n\x201.\x20It's\x20invalid\x20to\x20set\x20both\x20this\x20and\x20\"p\
6721    er_process_gpu_memory_fraction\"\n\x20\x20\x20\x20at\x20the\x20same\x20t\
6722    ime.\n\x202.\x20Currently\x20this\x20setting\x20is\x20per-process,\x20no\
6723    t\x20per-session.\x20Using\n\x20\x20\x20\x20different\x20settings\x20in\
6724    \x20different\x20sessions\x20within\x20same\x20process\x20will\n\x20\x20\
6725    \x20\x20result\x20in\x20undefined\x20behavior.\n\n\x0f\n\x07\x04\0\x03\0\
6726    \x02\0\x04\x12\x04\x95\x01\x04\x0c\n\x0f\n\x07\x04\0\x03\0\x02\0\x06\x12\
6727    \x04\x95\x01\r\x1b\n\x0f\n\x07\x04\0\x03\0\x02\0\x01\x12\x04\x95\x01\x1c\
6728    +\n\x0f\n\x07\x04\0\x03\0\x02\0\x03\x12\x04\x95\x01./\n\xe6\x03\n\x06\
6729    \x04\0\x03\0\x02\x01\x12\x04\x9e\x01\x04\x20\x1a\xd5\x03\x20If\x20true,\
6730    \x20uses\x20CUDA\x20unified\x20memory\x20for\x20memory\x20allocations.\
6731    \x20If\n\x20per_process_gpu_memory_fraction\x20option\x20is\x20greater\
6732    \x20than\x201.0,\x20then\x20unified\n\x20memory\x20is\x20used\x20regardl\
6733    ess\x20of\x20the\x20value\x20for\x20this\x20field.\x20See\x20comments\
6734    \x20for\n\x20per_process_gpu_memory_fraction\x20field\x20for\x20more\x20\
6735    details\x20and\x20requirements\n\x20of\x20the\x20unified\x20memory.\x20T\
6736    his\x20option\x20is\x20useful\x20to\x20oversubscribe\x20memory\x20if\n\
6737    \x20multiple\x20processes\x20are\x20sharing\x20a\x20single\x20GPU\x20whi\
6738    le\x20individually\x20using\x20less\n\x20than\x201.0\x20per\x20process\
6739    \x20memory\x20fraction.\n\n\x0f\n\x07\x04\0\x03\0\x02\x01\x05\x12\x04\
6740    \x9e\x01\x04\x08\n\x0f\n\x07\x04\0\x03\0\x02\x01\x01\x12\x04\x9e\x01\t\
6741    \x1b\n\x0f\n\x07\x04\0\x03\0\x02\x01\x03\x12\x04\x9e\x01\x1e\x1f\n\xa2\
6742    \x01\n\x06\x04\0\x03\0\x02\x02\x12\x04\xa3\x01\x04*\x1a\x91\x01\x20If\
6743    \x20>\x201,\x20the\x20number\x20of\x20device-to-device\x20copy\x20stream\
6744    s\x20to\x20create\n\x20for\x20each\x20GPUDevice.\x20\x20Default\x20value\
6745    \x20is\x200,\x20which\x20is\x20automatically\n\x20converted\x20to\x201.\
6746    \n\n\x0f\n\x07\x04\0\x03\0\x02\x02\x05\x12\x04\xa3\x01\x04\t\n\x0f\n\x07\
6747    \x04\0\x03\0\x02\x02\x01\x12\x04\xa3\x01\n%\n\x0f\n\x07\x04\0\x03\0\x02\
6748    \x02\x03\x12\x04\xa3\x01()\n\xb4\x03\n\x06\x04\0\x03\0\x02\x03\x12\x04\
6749    \xab\x01\x04%\x1a\xa3\x03\x20If\x20non-empty,\x20defines\x20a\x20good\
6750    \x20GPU\x20ring\x20order\x20on\x20a\x20single\x20worker\x20based\x20on\n\
6751    \x20device\x20interconnect.\x20\x20This\x20assumes\x20that\x20all\x20wor\
6752    kers\x20have\x20the\x20same\x20GPU\n\x20topology.\x20\x20Specify\x20as\
6753    \x20a\x20comma-separated\x20string,\x20e.g.\x20\"3,2,1,0,7,6,5,4\".\n\
6754    \x20This\x20ring\x20order\x20is\x20used\x20by\x20the\x20RingReducer\x20i\
6755    mplementation\x20of\n\x20CollectiveReduce,\x20and\x20serves\x20as\x20an\
6756    \x20override\x20to\x20automatic\x20ring\x20order\n\x20generation\x20in\
6757    \x20OrderTaskDeviceMap()\x20during\x20CollectiveParam\x20resolution.\n\n\
6758    \x0f\n\x07\x04\0\x03\0\x02\x03\x05\x12\x04\xab\x01\x04\n\n\x0f\n\x07\x04\
6759    \0\x03\0\x02\x03\x01\x12\x04\xab\x01\x0b\x20\n\x0f\n\x07\x04\0\x03\0\x02\
6760    \x03\x03\x12\x04\xab\x01#$\n\x80\x02\n\x06\x04\0\x03\0\x02\x04\x12\x04\
6761    \xb1\x01\x04#\x1a\xef\x01\x20If\x20true\x20then\x20extra\x20work\x20is\
6762    \x20done\x20by\x20GPUDevice\x20and\x20GPUBFCAllocator\x20to\n\x20keep\
6763    \x20track\x20of\x20when\x20GPU\x20memory\x20is\x20freed\x20and\x20when\
6764    \x20kernels\x20actually\n\x20complete\x20so\x20that\x20we\x20can\x20know\
6765    \x20when\x20a\x20nominally\x20free\x20memory\x20chunk\n\x20is\x20really\
6766    \x20not\x20subject\x20to\x20pending\x20use.\n\n\x0f\n\x07\x04\0\x03\0\
6767    \x02\x04\x05\x12\x04\xb1\x01\x04\x08\n\x0f\n\x07\x04\0\x03\0\x02\x04\x01\
6768    \x12\x04\xb1\x01\t\x1e\n\x0f\n\x07\x04\0\x03\0\x02\x04\x03\x12\x04\xb1\
6769    \x01!\"\n\xb5\x02\n\x06\x04\0\x03\0\x02\x05\x12\x04\xbb\x01\x04*\x1a\x92\
6770    \x02\x20Parameters\x20for\x20GPUKernelTracker.\x20\x20By\x20default\x20n\
6771    o\x20kernel\x20tracking\x20is\x20done.\n\x20Note\x20that\x20timestamped_\
6772    allocator\x20is\x20only\x20effective\x20if\x20some\x20tracking\x20is\n\
6773    \x20specified.\n\n\x20If\x20kernel_tracker_max_interval\x20=\x20n\x20>\
6774    \x200,\x20then\x20a\x20tracking\x20event\n\x20is\x20inserted\x20after\
6775    \x20every\x20n\x20kernels\x20without\x20an\x20event.\n2\x10\x20reserved\
6776    \x20id:\x206\n\n\x0f\n\x07\x04\0\x03\0\x02\x05\x05\x12\x04\xbb\x01\x04\t\
6777    \n\x0f\n\x07\x04\0\x03\0\x02\x05\x01\x12\x04\xbb\x01\n%\n\x0f\n\x07\x04\
6778    \0\x03\0\x02\x05\x03\x12\x04\xbb\x01()\n\x9e\x02\n\x06\x04\0\x03\0\x02\
6779    \x06\x12\x04\xc1\x01\x04'\x1a\x8d\x02\x20If\x20kernel_tracker_max_bytes\
6780    \x20=\x20n\x20>\x200,\x20then\x20a\x20tracking\x20event\x20is\n\x20inser\
6781    ted\x20after\x20every\x20series\x20of\x20kernels\x20allocating\x20a\x20s\
6782    um\x20of\n\x20memory\x20>=\x20n.\x20\x20If\x20one\x20kernel\x20allocates\
6783    \x20b\x20*\x20n\x20bytes,\x20then\x20one\n\x20event\x20will\x20be\x20ins\
6784    erted\x20after\x20it,\x20but\x20it\x20will\x20count\x20as\x20b\x20agains\
6785    t\n\x20the\x20pending\x20limit.\n\n\x0f\n\x07\x04\0\x03\0\x02\x06\x05\
6786    \x12\x04\xc1\x01\x04\t\n\x0f\n\x07\x04\0\x03\0\x02\x06\x01\x12\x04\xc1\
6787    \x01\n\"\n\x0f\n\x07\x04\0\x03\0\x02\x06\x03\x12\x04\xc1\x01%&\n\xd1\x01\
6788    \n\x06\x04\0\x03\0\x02\x07\x12\x04\xc6\x01\x04)\x1a\xc0\x01\x20If\x20ker\
6789    nel_tracker_max_pending\x20>\x200\x20then\x20no\x20more\x20than\x20this\
6790    \x20many\n\x20tracking\x20events\x20can\x20be\x20outstanding\x20at\x20a\
6791    \x20time.\x20\x20An\x20attempt\x20to\n\x20launch\x20an\x20additional\x20\
6792    kernel\x20will\x20stall\x20until\x20an\x20event\n\x20completes.\n\n\x0f\
6793    \n\x07\x04\0\x03\0\x02\x07\x05\x12\x04\xc6\x01\x04\t\n\x0f\n\x07\x04\0\
6794    \x03\0\x02\x07\x01\x12\x04\xc6\x01\n$\n\x0f\n\x07\x04\0\x03\0\x02\x07\
6795    \x03\x12\x04\xc6\x01'(\n\xa9\x01\n\x04\x04\0\x02\x08\x12\x04\xcc\x01\x02\
6796    \x20\x1a\x9a\x01\x20Everything\x20inside\x20experimental\x20is\x20subjec\
6797    t\x20to\x20change\x20and\x20is\x20not\x20subject\n\x20to\x20API\x20stabi\
6798    lity\x20guarantees\x20in\n\x20https://www.tensorflow.org/guide/version_c\
6799    ompat.\n\n\r\n\x05\x04\0\x02\x08\x06\x12\x04\xcc\x01\x02\x0e\n\r\n\x05\
6800    \x04\0\x02\x08\x01\x12\x04\xcc\x01\x0f\x1b\n\r\n\x05\x04\0\x02\x08\x03\
6801    \x12\x04\xcc\x01\x1e\x1f\n5\n\x02\x04\x01\x12\x06\xd0\x01\0\xfd\x01\x01\
6802    \x1a'\x20Options\x20passed\x20to\x20the\x20graph\x20optimizer\n\n\x0b\n\
6803    \x03\x04\x01\x01\x12\x04\xd0\x01\x08\x18\nS\n\x04\x04\x01\x02\0\x12\x04\
6804    \xd2\x01\x02/\x1aE\x20If\x20true,\x20optimize\x20the\x20graph\x20using\
6805    \x20common\x20subexpression\x20elimination.\n\n\r\n\x05\x04\x01\x02\0\
6806    \x05\x12\x04\xd2\x01\x02\x06\n\r\n\x05\x04\x01\x02\0\x01\x12\x04\xd2\x01\
6807    \x07*\n\r\n\x05\x04\x01\x02\0\x03\x12\x04\xd2\x01-.\nL\n\x04\x04\x01\x02\
6808    \x01\x12\x04\xd5\x01\x02\x1f\x1a>\x20If\x20true,\x20perform\x20constant\
6809    \x20folding\x20optimization\x20on\x20the\x20graph.\n\n\r\n\x05\x04\x01\
6810    \x02\x01\x05\x12\x04\xd5\x01\x02\x06\n\r\n\x05\x04\x01\x02\x01\x01\x12\
6811    \x04\xd5\x01\x07\x1a\n\r\n\x05\x04\x01\x02\x01\x03\x12\x04\xd5\x01\x1d\
6812    \x1e\n\xdc\x02\n\x04\x04\x01\x02\x02\x12\x04\xdc\x01\x02)\x1a\xcd\x02\
6813    \x20Constant\x20folding\x20optimization\x20replaces\x20tensors\x20whose\
6814    \x20values\x20can\x20be\n\x20predetermined,\x20with\x20constant\x20nodes\
6815    .\x20To\x20avoid\x20inserting\x20too\x20large\x20constants,\n\x20the\x20\
6816    size\x20of\x20each\x20constant\x20created\x20can\x20be\x20limited.\x20If\
6817    \x20this\x20value\x20is\x20zero,\x20a\n\x20default\x20limit\x20of\x2010\
6818    \x20MiB\x20will\x20be\x20applied.\x20If\x20constant\x20folding\x20optimi\
6819    zation\n\x20is\x20disabled,\x20this\x20value\x20is\x20ignored.\n\n\r\n\
6820    \x05\x04\x01\x02\x02\x05\x12\x04\xdc\x01\x02\x07\n\r\n\x05\x04\x01\x02\
6821    \x02\x01\x12\x04\xdc\x01\x08$\n\r\n\x05\x04\x01\x02\x02\x03\x12\x04\xdc\
6822    \x01'(\n@\n\x04\x04\x01\x02\x03\x12\x04\xdf\x01\x02\x20\x1a2\x20If\x20tr\
6823    ue,\x20perform\x20function\x20inlining\x20on\x20the\x20graph.\n\n\r\n\
6824    \x05\x04\x01\x02\x03\x05\x12\x04\xdf\x01\x02\x06\n\r\n\x05\x04\x01\x02\
6825    \x03\x01\x12\x04\xdf\x01\x07\x1b\n\r\n\x05\x04\x01\x02\x03\x03\x12\x04\
6826    \xdf\x01\x1e\x1f\n$\n\x04\x04\x01\x04\0\x12\x06\xe2\x01\x02\xeb\x01\x03\
6827    \x1a\x14\x20Optimization\x20level\n\n\r\n\x05\x04\x01\x04\0\x01\x12\x04\
6828    \xe2\x01\x07\x0c\n\x84\x01\n\x06\x04\x01\x04\0\x02\0\x12\x04\xe7\x01\x04\
6829    \x0b\x1at\x20L1\x20is\x20the\x20default\x20level.\n\x20Optimization\x20p\
6830    erformed\x20at\x20L1\x20:\n\x201.\x20Common\x20subexpression\x20eliminat\
6831    ion\n\x202.\x20Constant\x20folding\n\n\x0f\n\x07\x04\x01\x04\0\x02\0\x01\
6832    \x12\x04\xe7\x01\x04\x06\n\x0f\n\x07\x04\x01\x04\0\x02\0\x02\x12\x04\xe7\
6833    \x01\t\n\n\"\n\x06\x04\x01\x04\0\x02\x01\x12\x04\xea\x01\x04\x0c\x1a\x12\
6834    \x20No\x20optimizations\n\n\x0f\n\x07\x04\x01\x04\0\x02\x01\x01\x12\x04\
6835    \xea\x01\x04\x06\n\x0f\n\x07\x04\x01\x04\0\x02\x01\x02\x12\x04\xea\x01\t\
6836    \x0b\n\xa5\x01\n\x04\x04\x01\x02\x04\x12\x04\xef\x01\x02\x16\x1a\x96\x01\
6837    \x20Overall\x20optimization\x20level.\x20The\x20actual\x20optimizations\
6838    \x20applied\x20will\x20be\x20the\n\x20logical\x20OR\x20of\x20the\x20flag\
6839    s\x20that\x20this\x20level\x20implies\x20and\x20any\x20flags\x20already\
6840    \x20set.\n\n\r\n\x05\x04\x01\x02\x04\x06\x12\x04\xef\x01\x02\x07\n\r\n\
6841    \x05\x04\x01\x02\x04\x01\x12\x04\xef\x01\x08\x11\n\r\n\x05\x04\x01\x02\
6842    \x04\x03\x12\x04\xef\x01\x14\x15\nE\n\x04\x04\x01\x04\x01\x12\x06\xf2\
6843    \x01\x02\xfb\x01\x03\x1a5\x20Control\x20the\x20use\x20of\x20the\x20compi\
6844    ler/jit.\x20\x20Experimental.\n\n\r\n\x05\x04\x01\x04\x01\x01\x12\x04\
6845    \xf2\x01\x07\x15\nL\n\x06\x04\x01\x04\x01\x02\0\x12\x04\xf3\x01\x04\x10\
6846    \"<\x20Default\x20setting\x20(\"off\"\x20now,\x20but\x20later\x20expecte\
6847    d\x20to\x20be\x20\"on\")\n\n\x0f\n\x07\x04\x01\x04\x01\x02\0\x01\x12\x04\
6848    \xf3\x01\x04\x0b\n\x0f\n\x07\x04\x01\x04\x01\x02\0\x02\x12\x04\xf3\x01\
6849    \x0e\x0f\n\x0e\n\x06\x04\x01\x04\x01\x02\x01\x12\x04\xf4\x01\x04\r\n\x0f\
6850    \n\x07\x04\x01\x04\x01\x02\x01\x01\x12\x04\xf4\x01\x04\x07\n\x0f\n\x07\
6851    \x04\x01\x04\x01\x02\x01\x02\x12\x04\xf4\x01\n\x0c\n\x84\x02\n\x06\x04\
6852    \x01\x04\x01\x02\x02\x12\x04\xf9\x01\x04\r\x1a\xf3\x01\x20The\x20followi\
6853    ng\x20settings\x20turn\x20on\x20compilation,\x20with\x20higher\x20values\
6854    \x20being\n\x20more\x20aggressive.\x20\x20Higher\x20values\x20may\x20red\
6855    uce\x20opportunities\x20for\x20parallelism\n\x20and\x20may\x20use\x20mor\
6856    e\x20memory.\x20\x20(At\x20present,\x20there\x20is\x20no\x20distinction,\
6857    \x20but\x20this\n\x20is\x20expected\x20to\x20change.)\n\n\x0f\n\x07\x04\
6858    \x01\x04\x01\x02\x02\x01\x12\x04\xf9\x01\x04\x08\n\x0f\n\x07\x04\x01\x04\
6859    \x01\x02\x02\x02\x12\x04\xf9\x01\x0b\x0c\n\x0e\n\x06\x04\x01\x04\x01\x02\
6860    \x03\x12\x04\xfa\x01\x04\r\n\x0f\n\x07\x04\x01\x04\x01\x02\x03\x01\x12\
6861    \x04\xfa\x01\x04\x08\n\x0f\n\x07\x04\x01\x04\x01\x02\x03\x02\x12\x04\xfa\
6862    \x01\x0b\x0c\n\x0c\n\x04\x04\x01\x02\x05\x12\x04\xfc\x01\x02&\n\r\n\x05\
6863    \x04\x01\x02\x05\x06\x12\x04\xfc\x01\x02\x10\n\r\n\x05\x04\x01\x02\x05\
6864    \x01\x12\x04\xfc\x01\x11!\n\r\n\x05\x04\x01\x02\x05\x03\x12\x04\xfc\x01$\
6865    %\n\x0c\n\x02\x04\x02\x12\x06\xff\x01\0\xac\x02\x01\n\x0b\n\x03\x04\x02\
6866    \x01\x12\x04\xff\x01\x08\x14\n4\n\x03\x04\x02\n\x12\x04\x81\x02\x023\x1a\
6867    '\x20Removed,\x20use\x20optimizer_options\x20below.\n\n\x0c\n\x04\x04\
6868    \x02\n\0\x12\x04\x81\x02\x0b2\n\x0b\n\x03\x04\x02\t\x12\x04\x82\x02\x02\
6869    \r\n\x0c\n\x04\x04\x02\t\0\x12\x04\x82\x02\x0b\x0c\n\r\n\x05\x04\x02\t\0\
6870    \x01\x12\x04\x82\x02\x0b\x0c\n\r\n\x05\x04\x02\t\0\x02\x12\x04\x82\x02\
6871    \x0b\x0c\ni\n\x04\x04\x02\x02\0\x12\x04\x86\x02\x02\"\x1a[\x20If\x20true\
6872    ,\x20use\x20control\x20flow\x20to\x20schedule\x20the\x20activation\x20of\
6873    \x20Recv\x20nodes.\n\x20(Currently\x20ignored.)\n\n\r\n\x05\x04\x02\x02\
6874    \0\x05\x12\x04\x86\x02\x02\x06\n\r\n\x05\x04\x02\x02\0\x01\x12\x04\x86\
6875    \x02\x07\x1d\n\r\n\x05\x04\x02\x02\0\x03\x12\x04\x86\x02\x20!\n;\n\x04\
6876    \x04\x02\x02\x01\x12\x04\x89\x02\x02)\x1a-\x20Options\x20controlling\x20\
6877    how\x20graph\x20is\x20optimized.\n\n\r\n\x05\x04\x02\x02\x01\x06\x12\x04\
6878    \x89\x02\x02\x12\n\r\n\x05\x04\x02\x02\x01\x01\x12\x04\x89\x02\x13$\n\r\
6879    \n\x05\x04\x02\x02\x01\x03\x12\x04\x89\x02'(\n\xa8\x01\n\x04\x04\x02\x02\
6880    \x02\x12\x04\x8e\x02\x02\x1d\x1a\x99\x01\x20The\x20number\x20of\x20steps\
6881    \x20to\x20run\x20before\x20returning\x20a\x20cost\x20model\x20detailing\
6882    \n\x20the\x20memory\x20usage\x20and\x20performance\x20of\x20each\x20node\
6883    \x20of\x20the\x20graph.\x200\x20means\n\x20no\x20cost\x20model.\n\n\r\n\
6884    \x05\x04\x02\x02\x02\x05\x12\x04\x8e\x02\x02\x07\n\r\n\x05\x04\x02\x02\
6885    \x02\x01\x12\x04\x8e\x02\x08\x18\n\r\n\x05\x04\x02\x02\x02\x03\x12\x04\
6886    \x8e\x02\x1b\x1c\n]\n\x04\x04\x02\x02\x03\x12\x04\x92\x02\x02#\x1aO\x20T\
6887    he\x20number\x20of\x20steps\x20to\x20skip\x20before\x20collecting\x20sta\
6888    tistics\x20for\x20the\n\x20cost\x20model.\n\n\r\n\x05\x04\x02\x02\x03\
6889    \x05\x12\x04\x92\x02\x02\x07\n\r\n\x05\x04\x02\x02\x03\x01\x12\x04\x92\
6890    \x02\x08\x1e\n\r\n\x05\x04\x02\x02\x03\x03\x12\x04\x92\x02!\"\nk\n\x04\
6891    \x04\x02\x02\x04\x12\x04\x96\x02\x02\x18\x1a]\x20Annotate\x20each\x20Nod\
6892    e\x20with\x20Op\x20output\x20shape\x20data,\x20to\x20the\x20extent\x20it\
6893    \x20can\n\x20be\x20statically\x20inferred.\n\n\r\n\x05\x04\x02\x02\x04\
6894    \x05\x12\x04\x96\x02\x02\x06\n\r\n\x05\x04\x02\x02\x04\x01\x12\x04\x96\
6895    \x02\x07\x13\n\r\n\x05\x04\x02\x02\x04\x03\x12\x04\x96\x02\x16\x17\n\xee\
6896    \x02\n\x04\x04\x02\x02\x05\x12\x04\x9f\x02\x02\x1e\x1a\xdf\x02\x20Only\
6897    \x20place\x20the\x20subgraphs\x20that\x20are\x20run,\x20rather\x20than\
6898    \x20the\x20entire\x20graph.\n\n\x20This\x20is\x20useful\x20for\x20intera\
6899    ctive\x20graph\x20building,\x20where\x20one\x20might\n\x20produce\x20gra\
6900    phs\x20that\x20cannot\x20be\x20placed\x20during\x20the\x20debugging\n\
6901    \x20process.\x20\x20In\x20particular,\x20it\x20allows\x20the\x20client\
6902    \x20to\x20continue\x20work\x20in\n\x20a\x20session\x20after\x20adding\
6903    \x20a\x20node\x20to\x20a\x20graph\x20whose\x20placement\n\x20constraints\
6904    \x20are\x20unsatisfiable.\n\n\r\n\x05\x04\x02\x02\x05\x05\x12\x04\x9f\
6905    \x02\x02\x06\n\r\n\x05\x04\x02\x02\x05\x01\x12\x04\x9f\x02\x07\x19\n\r\n\
6906    \x05\x04\x02\x02\x05\x03\x12\x04\x9f\x02\x1c\x1d\nM\n\x04\x04\x02\x02\
6907    \x06\x12\x04\xa2\x02\x02$\x1a?\x20If\x20true,\x20transfer\x20float\x20va\
6908    lues\x20between\x20processes\x20as\x20bfloat16.\n\n\r\n\x05\x04\x02\x02\
6909    \x06\x05\x12\x04\xa2\x02\x02\x06\n\r\n\x05\x04\x02\x02\x06\x01\x12\x04\
6910    \xa2\x02\x07\x1f\n\r\n\x05\x04\x02\x02\x06\x03\x12\x04\xa2\x02\"#\n~\n\
6911    \x04\x04\x02\x02\x07\x12\x04\xa6\x02\x02\x1a\x1ap\x20If\x20>\x200,\x20re\
6912    cord\x20a\x20timeline\x20every\x20this\x20many\x20steps.\n\x20EXPERIMENT\
6913    AL:\x20This\x20currently\x20has\x20no\x20effect\x20in\x20MasterSession.\
6914    \n\n\r\n\x05\x04\x02\x02\x07\x05\x12\x04\xa6\x02\x02\x07\n\r\n\x05\x04\
6915    \x02\x02\x07\x01\x12\x04\xa6\x02\x08\x15\n\r\n\x05\x04\x02\x02\x07\x03\
6916    \x12\x04\xa6\x02\x18\x19\n\xd8\x01\n\x04\x04\x02\x02\x08\x12\x04\xab\x02\
6917    \x02&\x1a\xc9\x01\x20Options\x20that\x20control\x20the\x20type\x20and\
6918    \x20amount\x20of\x20graph\x20rewriting.\n\x20Not\x20currently\x20configu\
6919    rable\x20via\x20the\x20public\x20Python\x20API\x20(i.e.\x20there\x20is\
6920    \x20no\x20API\n\x20stability\x20guarantee\x20if\x20you\x20import\x20Rewr\
6921    iterConfig\x20explicitly).\n\n\r\n\x05\x04\x02\x02\x08\x06\x12\x04\xab\
6922    \x02\x02\x10\n\r\n\x05\x04\x02\x02\x08\x01\x12\x04\xab\x02\x11\x20\n\r\n\
6923    \x05\x04\x02\x02\x08\x03\x12\x04\xab\x02#%\n\x0c\n\x02\x04\x03\x12\x06\
6924    \xae\x02\0\xc5\x02\x01\n\x0b\n\x03\x04\x03\x01\x12\x04\xae\x02\x08\x1d\n\
6925    \xbb\x01\n\x04\x04\x03\x02\0\x12\x04\xb3\x02\x02\x18\x1a\xac\x01\x20The\
6926    \x20number\x20of\x20threads\x20in\x20the\x20pool.\n\n\x200\x20means\x20t\
6927    he\x20system\x20picks\x20a\x20value\x20based\x20on\x20where\x20this\x20o\
6928    ption\x20proto\x20is\x20used\n\x20(see\x20the\x20declaration\x20of\x20th\
6929    e\x20specific\x20field\x20for\x20more\x20info).\n\n\r\n\x05\x04\x03\x02\
6930    \0\x05\x12\x04\xb3\x02\x02\x07\n\r\n\x05\x04\x03\x02\0\x01\x12\x04\xb3\
6931    \x02\x08\x13\n\r\n\x05\x04\x03\x02\0\x03\x12\x04\xb3\x02\x16\x17\n\xf7\
6932    \x05\n\x04\x04\x03\x02\x01\x12\x04\xc4\x02\x02\x19\x1a\xe8\x05\x20The\
6933    \x20global\x20name\x20of\x20the\x20threadpool.\n\n\x20If\x20empty,\x20th\
6934    en\x20the\x20threadpool\x20is\x20made\x20and\x20used\x20according\x20to\
6935    \x20the\x20scope\x20it's\n\x20in\x20-\x20e.g.,\x20for\x20a\x20session\
6936    \x20threadpool,\x20it\x20is\x20used\x20by\x20that\x20session\x20only.\n\
6937    \n\x20If\x20non-empty,\x20then:\n\x20-\x20a\x20global\x20threadpool\x20a\
6938    ssociated\x20with\x20this\x20name\x20is\x20looked\n\x20\x20\x20up\x20or\
6939    \x20created.\x20This\x20allows,\x20for\x20example,\x20sharing\x20one\x20\
6940    threadpool\x20across\n\x20\x20\x20many\x20sessions\x20(e.g.,\x20like\x20\
6941    the\x20default\x20behavior,\x20if\n\x20\x20\x20inter_op_parallelism_thre\
6942    ads\x20is\x20not\x20configured),\x20but\x20still\x20partitioning\n\x20\
6943    \x20\x20into\x20a\x20large\x20and\x20small\x20pool.\n\x20-\x20if\x20the\
6944    \x20threadpool\x20for\x20this\x20global_name\x20already\x20exists,\x20th\
6945    en\x20it\x20is\x20an\n\x20\x20\x20error\x20if\x20the\x20existing\x20pool\
6946    \x20was\x20created\x20using\x20a\x20different\x20num_threads\n\x20\x20\
6947    \x20value\x20as\x20is\x20specified\x20on\x20this\x20call.\n\x20-\x20thre\
6948    adpools\x20created\x20this\x20way\x20are\x20never\x20garbage\x20collecte\
6949    d.\n\n\r\n\x05\x04\x03\x02\x01\x05\x12\x04\xc4\x02\x02\x08\n\r\n\x05\x04\
6950    \x03\x02\x01\x01\x12\x04\xc4\x02\t\x14\n\r\n\x05\x04\x03\x02\x01\x03\x12\
6951    \x04\xc4\x02\x17\x18\n\x0c\n\x02\x04\x04\x12\x06\xc7\x02\0\xe0\x02\x01\n\
6952    \x0b\n\x03\x04\x04\x01\x12\x04\xc7\x02\x08\x12\n\x88\x02\n\x04\x04\x04\
6953    \x02\0\x12\x04\xcd\x02\x02(\x1a\xf9\x01\x20If\x20true,\x20always\x20use\
6954    \x20RPC\x20to\x20contact\x20the\x20session\x20target.\n\n\x20If\x20false\
6955    \x20(the\x20default\x20option),\x20TensorFlow\x20may\x20use\x20an\x20opt\
6956    imized\n\x20transport\x20for\x20client-master\x20communication\x20that\
6957    \x20avoids\x20the\x20RPC\n\x20stack.\x20This\x20option\x20is\x20primaril\
6958    y\x20for\x20used\x20testing\x20the\x20RPC\x20stack.\n\n\r\n\x05\x04\x04\
6959    \x02\0\x05\x12\x04\xcd\x02\x02\x06\n\r\n\x05\x04\x04\x02\0\x01\x12\x04\
6960    \xcd\x02\x07#\n\r\n\x05\x04\x04\x02\0\x03\x12\x04\xcd\x02&'\nO\n\x04\x04\
6961    \x04\x02\x01\x12\x04\xd0\x02\x02#\x1aA\x20The\x20compression\x20algorith\
6962    m\x20to\x20be\x20used.\x20One\x20of\x20\"deflate\",\x20\"gzip\".\n\n\r\n\
6963    \x05\x04\x04\x02\x01\x05\x12\x04\xd0\x02\x02\x08\n\r\n\x05\x04\x04\x02\
6964    \x01\x01\x12\x04\xd0\x02\t\x1e\n\r\n\x05\x04\x04\x02\x01\x03\x12\x04\xd0\
6965    \x02!\"\nu\n\x04\x04\x04\x02\x02\x12\x04\xd4\x02\x02\x1e\x1ag\x20If\x20c\
6966    ompression_algorithm\x20is\x20set,\x20the\x20compression\x20level\x20to\
6967    \x20be\x20used.\n\x20From\x200\x20(no\x20compression),\x20up\x20to\x203.\
6968    \n\n\r\n\x05\x04\x04\x02\x02\x05\x12\x04\xd4\x02\x02\x07\n\r\n\x05\x04\
6969    \x04\x02\x02\x01\x12\x04\xd4\x02\x08\x19\n\r\n\x05\x04\x04\x02\x02\x03\
6970    \x12\x04\xd4\x02\x1c\x1d\n\xc3\x03\n\x04\x04\x04\x02\x03\x12\x04\xdc\x02\
6971    \x02\x1e\x1a\xb4\x03\x20Setting\x20cache_rpc_response\x20to\x20true\x20w\
6972    ill\x20enable\x20sender\x20side\x20caching\x20of\n\x20response\x20for\
6973    \x20RecvTensorAsync\x20and\x20RecvBufAsync\x20to\x20allow\x20receiver\
6974    \x20to\x20retry\n\x20requests\x20.\x20This\x20is\x20only\x20necessary\
6975    \x20when\x20the\x20network\x20fabric\x20is\x20experiencing\x20a\n\x20sig\
6976    nificant\x20error\x20rate.\x20\x20Without\x20it\x20we'll\x20fail\x20a\
6977    \x20step\x20on\x20an\x20network\x20error,\n\x20while\x20with\x20it\x20we\
6978    'll\x20be\x20able\x20to\x20complete\x20long\x20steps\x20(like\x20complex\
6979    \n\x20initializations)\x20in\x20the\x20face\x20of\x20some\x20network\x20\
6980    errors\x20during\x20RecvTensor.\n\n\r\n\x05\x04\x04\x02\x03\x05\x12\x04\
6981    \xdc\x02\x02\x06\n\r\n\x05\x04\x04\x02\x03\x01\x12\x04\xdc\x02\x07\x19\n\
6982    \r\n\x05\x04\x04\x02\x03\x03\x12\x04\xdc\x02\x1c\x1d\nO\n\x04\x04\x04\
6983    \x02\x04\x12\x04\xdf\x02\x02.\x1aA\x20Disables\x20TCP\x20connection\x20s\
6984    haring\x20when\x20opening\x20a\x20new\x20RPC\x20channel.\n\n\r\n\x05\x04\
6985    \x04\x02\x04\x05\x12\x04\xdf\x02\x02\x06\n\r\n\x05\x04\x04\x02\x04\x01\
6986    \x12\x04\xdf\x02\x07)\n\r\n\x05\x04\x04\x02\x04\x03\x12\x04\xdf\x02,-\n\
6987    \xad\x02\n\x02\x04\x05\x12\x06\xea\x02\0\xef\x02\x01\x1a\x9e\x02\x20Meta\
6988    data\x20about\x20the\x20session.\n\n\x20This\x20can\x20be\x20used\x20by\
6989    \x20the\x20runtime\x20and\x20the\x20Ops\x20for\x20debugging,\x20monitori\
6990    ng,\x20etc.\n\n\x20The\x20(name,\x20version)\x20tuple\x20is\x20expected\
6991    \x20to\x20be\x20a\x20unique\x20identifier\x20for\n\x20sessions\x20within\
6992    \x20the\x20same\x20process.\n\n\x20NOTE:\x20This\x20is\x20currently\x20u\
6993    sed\x20and\x20propagated\x20only\x20by\x20the\x20direct\x20session.\n\n\
6994    \x0b\n\x03\x04\x05\x01\x12\x04\xea\x02\x08\x17\n\x0c\n\x04\x04\x05\x02\0\
6995    \x12\x04\xeb\x02\x02\x12\n\r\n\x05\x04\x05\x02\0\x05\x12\x04\xeb\x02\x02\
6996    \x08\n\r\n\x05\x04\x05\x02\0\x01\x12\x04\xeb\x02\t\r\n\r\n\x05\x04\x05\
6997    \x02\0\x03\x12\x04\xeb\x02\x10\x11\nB\n\x04\x04\x05\x02\x01\x12\x04\xee\
6998    \x02\x02\x14\x1a4\x20The\x20version\x20is\x20optional.\x20If\x20set,\x20\
6999    needs\x20to\x20be\x20>=\x200.\n\n\r\n\x05\x04\x05\x02\x01\x05\x12\x04\
7000    \xee\x02\x02\x07\n\r\n\x05\x04\x05\x02\x01\x01\x12\x04\xee\x02\x08\x0f\n\
7001    \r\n\x05\x04\x05\x02\x01\x03\x12\x04\xee\x02\x12\x13\ns\n\x02\x04\x06\
7002    \x12\x06\xf3\x02\0\xe0\x04\x01\x1ae\x20Session\x20configuration\x20param\
7003    eters.\n\x20The\x20system\x20picks\x20appropriate\x20values\x20for\x20fi\
7004    elds\x20that\x20are\x20not\x20set.\n\n\x0b\n\x03\x04\x06\x01\x12\x04\xf3\
7005    \x02\x08\x13\n\xd5\x01\n\x04\x04\x06\x02\0\x12\x04\xf8\x02\x02&\x1a\xc6\
7006    \x01\x20Map\x20from\x20device\x20type\x20name\x20(e.g.,\x20\"CPU\"\x20or\
7007    \x20\"GPU\"\x20)\x20to\x20maximum\n\x20number\x20of\x20devices\x20of\x20\
7008    that\x20type\x20to\x20use.\x20\x20If\x20a\x20particular\x20device\n\x20t\
7009    ype\x20is\x20not\x20found\x20in\x20the\x20map,\x20the\x20system\x20picks\
7010    \x20an\x20appropriate\n\x20number.\n\n\r\n\x05\x04\x06\x02\0\x06\x12\x04\
7011    \xf8\x02\x02\x14\n\r\n\x05\x04\x06\x02\0\x01\x12\x04\xf8\x02\x15!\n\r\n\
7012    \x05\x04\x06\x02\0\x03\x12\x04\xf8\x02$%\n\xee\x05\n\x04\x04\x06\x02\x01\
7013    \x12\x04\x88\x03\x02)\x1a\xdf\x05\x20The\x20execution\x20of\x20an\x20ind\
7014    ividual\x20op\x20(for\x20some\x20op\x20types)\x20can\x20be\n\x20parallel\
7015    ized\x20on\x20a\x20pool\x20of\x20intra_op_parallelism_threads.\n\x200\
7016    \x20means\x20the\x20system\x20picks\x20an\x20appropriate\x20number.\n\n\
7017    \x20If\x20you\x20create\x20an\x20ordinary\x20session,\x20e.g.,\x20from\
7018    \x20Python\x20or\x20C++,\n\x20then\x20there\x20is\x20exactly\x20one\x20i\
7019    ntra\x20op\x20thread\x20pool\x20per\x20process.\n\x20The\x20first\x20ses\
7020    sion\x20created\x20determines\x20the\x20number\x20of\x20threads\x20in\
7021    \x20this\x20pool.\n\x20All\x20subsequent\x20sessions\x20reuse/share\x20t\
7022    his\x20one\x20global\x20pool.\n\n\x20There\x20are\x20notable\x20exceptio\
7023    ns\x20to\x20the\x20default\x20behavior\x20describe\x20above:\n\x201.\x20\
7024    There\x20is\x20an\x20environment\x20variable\x20\x20for\x20overriding\
7025    \x20this\x20thread\x20pool,\n\x20\x20\x20\x20named\x20TF_OVERRIDE_GLOBAL\
7026    _THREADPOOL.\n\x202.\x20When\x20connecting\x20to\x20a\x20server,\x20such\
7027    \x20as\x20a\x20remote\x20`tf.train.Server`\n\x20\x20\x20\x20instance,\
7028    \x20then\x20this\x20option\x20will\x20be\x20ignored\x20altogether.\n\n\r\
7029    \n\x05\x04\x06\x02\x01\x05\x12\x04\x88\x03\x02\x07\n\r\n\x05\x04\x06\x02\
7030    \x01\x01\x12\x04\x88\x03\x08$\n\r\n\x05\x04\x06\x02\x01\x03\x12\x04\x88\
7031    \x03'(\n\xbd\x03\n\x04\x04\x06\x02\x02\x12\x04\x93\x03\x02)\x1a\xae\x03\
7032    \x20Nodes\x20that\x20perform\x20blocking\x20operations\x20are\x20enqueue\
7033    d\x20on\x20a\x20pool\x20of\n\x20inter_op_parallelism_threads\x20availabl\
7034    e\x20in\x20each\x20process.\n\n\x200\x20means\x20the\x20system\x20picks\
7035    \x20an\x20appropriate\x20number.\n\x20Negative\x20means\x20all\x20operat\
7036    ions\x20are\x20performed\x20in\x20caller's\x20thread.\n\n\x20Note\x20tha\
7037    t\x20the\x20first\x20Session\x20created\x20in\x20the\x20process\x20sets\
7038    \x20the\n\x20number\x20of\x20threads\x20for\x20all\x20future\x20sessions\
7039    \x20unless\x20use_per_session_threads\x20is\n\x20true\x20or\x20session_i\
7040    nter_op_thread_pool\x20is\x20configured.\n\n\r\n\x05\x04\x06\x02\x02\x05\
7041    \x12\x04\x93\x03\x02\x07\n\r\n\x05\x04\x06\x02\x02\x01\x12\x04\x93\x03\
7042    \x08$\n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\x93\x03'(\n\xd0\x03\n\x04\
7043    \x04\x06\x02\x03\x12\x04\x9e\x03\x02#\x1a\xc1\x03\x20If\x20true,\x20use\
7044    \x20a\x20new\x20set\x20of\x20threads\x20for\x20this\x20session\x20rather\
7045    \x20than\x20the\x20global\n\x20pool\x20of\x20threads.\x20Only\x20support\
7046    ed\x20by\x20direct\x20sessions.\n\n\x20If\x20false,\x20use\x20the\x20glo\
7047    bal\x20threads\x20created\x20by\x20the\x20first\x20session,\x20or\x20the\
7048    \n\x20per-session\x20thread\x20pools\x20configured\x20by\x20session_inte\
7049    r_op_thread_pool.\n\n\x20This\x20option\x20is\x20deprecated.\x20The\x20s\
7050    ame\x20effect\x20can\x20be\x20achieved\x20by\x20setting\n\x20session_int\
7051    er_op_thread_pool\x20to\x20have\x20one\x20element,\x20whose\x20num_threa\
7052    ds\x20equals\n\x20inter_op_parallelism_threads.\n\n\r\n\x05\x04\x06\x02\
7053    \x03\x05\x12\x04\x9e\x03\x02\x06\n\r\n\x05\x04\x06\x02\x03\x01\x12\x04\
7054    \x9e\x03\x07\x1e\n\r\n\x05\x04\x06\x02\x03\x03\x12\x04\x9e\x03!\"\n\x91\
7055    \x08\n\x04\x04\x06\x02\x04\x12\x04\xb3\x03\x02C\x1a\x82\x08\x20This\x20o\
7056    ption\x20is\x20experimental\x20-\x20it\x20may\x20be\x20replaced\x20with\
7057    \x20a\x20different\x20mechanism\n\x20in\x20the\x20future.\n\n\x20Configu\
7058    res\x20session\x20thread\x20pools.\x20If\x20this\x20is\x20configured,\
7059    \x20then\x20RunOptions\x20for\n\x20a\x20Run\x20call\x20can\x20select\x20\
7060    the\x20thread\x20pool\x20to\x20use.\n\n\x20The\x20intended\x20use\x20is\
7061    \x20for\x20when\x20some\x20session\x20invocations\x20need\x20to\x20run\
7062    \x20in\x20a\n\x20background\x20pool\x20limited\x20to\x20a\x20small\x20nu\
7063    mber\x20of\x20threads:\n\x20-\x20For\x20example,\x20a\x20session\x20may\
7064    \x20be\x20configured\x20to\x20have\x20one\x20large\x20pool\x20(for\n\x20\
7065    regular\x20compute)\x20and\x20one\x20small\x20pool\x20(for\x20periodic,\
7066    \x20low\x20priority\x20work);\n\x20using\x20the\x20small\x20pool\x20is\
7067    \x20currently\x20the\x20mechanism\x20for\x20limiting\x20the\x20inter-op\
7068    \n\x20parallelism\x20of\x20the\x20low\x20priority\x20work.\x20\x20Note\
7069    \x20that\x20it\x20does\x20not\x20limit\x20the\n\x20parallelism\x20of\x20\
7070    work\x20spawned\x20by\x20a\x20single\x20op\x20kernel\x20implementation.\
7071    \n\x20-\x20Using\x20this\x20setting\x20is\x20normally\x20not\x20needed\
7072    \x20in\x20training,\x20but\x20may\x20help\x20some\n\x20serving\x20use\
7073    \x20cases.\n\x20-\x20It\x20is\x20also\x20generally\x20recommended\x20to\
7074    \x20set\x20the\x20global_name\x20field\x20of\x20this\n\x20proto,\x20to\
7075    \x20avoid\x20creating\x20multiple\x20large\x20pools.\x20It\x20is\x20typi\
7076    cally\x20better\x20to\n\x20run\x20the\x20non-low-priority\x20work,\x20ev\
7077    en\x20across\x20sessions,\x20in\x20a\x20single\x20large\n\x20pool.\n\n\r\
7078    \n\x05\x04\x06\x02\x04\x04\x12\x04\xb3\x03\x02\n\n\r\n\x05\x04\x06\x02\
7079    \x04\x06\x12\x04\xb3\x03\x0b\x20\n\r\n\x05\x04\x06\x02\x04\x01\x12\x04\
7080    \xb3\x03!=\n\r\n\x05\x04\x06\x02\x04\x03\x12\x04\xb3\x03@B\n\xbd\x01\n\
7081    \x04\x04\x06\x02\x05\x12\x04\xb8\x03\x02\x1d\x1a\xae\x01\x20Assignment\
7082    \x20of\x20Nodes\x20to\x20Devices\x20is\x20recomputed\x20every\x20placeme\
7083    nt_period\n\x20steps\x20until\x20the\x20system\x20warms\x20up\x20(at\x20\
7084    which\x20point\x20the\x20recomputation\n\x20typically\x20slows\x20down\
7085    \x20automatically).\n\n\r\n\x05\x04\x06\x02\x05\x05\x12\x04\xb8\x03\x02\
7086    \x07\n\r\n\x05\x04\x06\x02\x05\x01\x12\x04\xb8\x03\x08\x18\n\r\n\x05\x04\
7087    \x06\x02\x05\x03\x12\x04\xb8\x03\x1b\x1c\n\xc5\x01\n\x04\x04\x06\x02\x06\
7088    \x12\x04\xbd\x03\x02%\x1a\xb6\x01\x20When\x20any\x20filters\x20are\x20pr\
7089    esent\x20sessions\x20will\x20ignore\x20all\x20devices\x20which\x20do\x20\
7090    not\n\x20match\x20the\x20filters.\x20Each\x20filter\x20can\x20be\x20part\
7091    ially\x20specified,\x20e.g.\x20\"/job:ps\"\n\x20\"/job:worker/replica:3\
7092    \",\x20etc.\n\n\r\n\x05\x04\x06\x02\x06\x04\x12\x04\xbd\x03\x02\n\n\r\n\
7093    \x05\x04\x06\x02\x06\x05\x12\x04\xbd\x03\x0b\x11\n\r\n\x05\x04\x06\x02\
7094    \x06\x01\x12\x04\xbd\x03\x12\x20\n\r\n\x05\x04\x06\x02\x06\x03\x12\x04\
7095    \xbd\x03#$\n/\n\x04\x04\x06\x02\x07\x12\x04\xc0\x03\x02\x1d\x1a!\x20Opti\
7096    ons\x20that\x20apply\x20to\x20all\x20GPUs.\n\n\r\n\x05\x04\x06\x02\x07\
7097    \x06\x12\x04\xc0\x03\x02\x0c\n\r\n\x05\x04\x06\x02\x07\x01\x12\x04\xc0\
7098    \x03\r\x18\n\r\n\x05\x04\x06\x02\x07\x03\x12\x04\xc0\x03\x1b\x1c\n\x9a\
7099    \x02\n\x04\x04\x06\x02\x08\x12\x04\xc9\x03\x02\x20\x1a\x8b\x02\x20Whethe\
7100    r\x20soft\x20placement\x20is\x20allowed.\x20If\x20allow_soft_placement\
7101    \x20is\x20true,\n\x20an\x20op\x20will\x20be\x20placed\x20on\x20CPU\x20if\
7102    \n\x20\x20\x201.\x20there's\x20no\x20GPU\x20implementation\x20for\x20the\
7103    \x20OP\n\x20or\n\x20\x20\x202.\x20no\x20GPU\x20devices\x20are\x20known\
7104    \x20or\x20registered\n\x20or\n\x20\x20\x203.\x20need\x20to\x20co-locate\
7105    \x20with\x20reftype\x20input(s)\x20which\x20are\x20from\x20CPU.\n\n\r\n\
7106    \x05\x04\x06\x02\x08\x05\x12\x04\xc9\x03\x02\x06\n\r\n\x05\x04\x06\x02\
7107    \x08\x01\x12\x04\xc9\x03\x07\x1b\n\r\n\x05\x04\x06\x02\x08\x03\x12\x04\
7108    \xc9\x03\x1e\x1f\n;\n\x04\x04\x06\x02\t\x12\x04\xcc\x03\x02\x20\x1a-\x20\
7109    Whether\x20device\x20placements\x20should\x20be\x20logged.\n\n\r\n\x05\
7110    \x04\x06\x02\t\x05\x12\x04\xcc\x03\x02\x06\n\r\n\x05\x04\x06\x02\t\x01\
7111    \x12\x04\xcc\x03\x07\x1b\n\r\n\x05\x04\x06\x02\t\x03\x12\x04\xcc\x03\x1e\
7112    \x1f\n1\n\x04\x04\x06\x02\n\x12\x04\xcf\x03\x02\"\x1a#\x20Options\x20tha\
7113    t\x20apply\x20to\x20all\x20graphs.\n\n\r\n\x05\x04\x06\x02\n\x06\x12\x04\
7114    \xcf\x03\x02\x0e\n\r\n\x05\x04\x06\x02\n\x01\x12\x04\xcf\x03\x0f\x1c\n\r\
7115    \n\x05\x04\x06\x02\n\x03\x12\x04\xcf\x03\x1f!\n\xce\x01\n\x04\x04\x06\
7116    \x02\x0b\x12\x04\xd4\x03\x02%\x1a\xbf\x01\x20Global\x20timeout\x20for\
7117    \x20all\x20blocking\x20operations\x20in\x20this\x20session.\x20\x20If\
7118    \x20non-zero,\n\x20and\x20not\x20overridden\x20on\x20a\x20per-operation\
7119    \x20basis,\x20this\x20value\x20will\x20be\x20used\x20as\x20the\n\x20dead\
7120    line\x20for\x20all\x20blocking\x20operations.\n\n\r\n\x05\x04\x06\x02\
7121    \x0b\x05\x12\x04\xd4\x03\x02\x07\n\r\n\x05\x04\x06\x02\x0b\x01\x12\x04\
7122    \xd4\x03\x08\x1f\n\r\n\x05\x04\x06\x02\x0b\x03\x12\x04\xd4\x03\"$\nR\n\
7123    \x04\x04\x06\x02\x0c\x12\x04\xd7\x03\x02\x1e\x1aD\x20Options\x20that\x20\
7124    apply\x20when\x20this\x20session\x20uses\x20the\x20distributed\x20runtim\
7125    e.\n\n\r\n\x05\x04\x06\x02\x0c\x06\x12\x04\xd7\x03\x02\x0c\n\r\n\x05\x04\
7126    \x06\x02\x0c\x01\x12\x04\xd7\x03\r\x18\n\r\n\x05\x04\x06\x02\x0c\x03\x12\
7127    \x04\xd7\x03\x1b\x1d\nD\n\x04\x04\x06\x02\r\x12\x04\xda\x03\x02\x1e\x1a6\
7128    \x20Optional\x20list\x20of\x20all\x20workers\x20to\x20use\x20in\x20this\
7129    \x20session.\n\n\r\n\x05\x04\x06\x02\r\x06\x12\x04\xda\x03\x02\x0c\n\r\n\
7130    \x05\x04\x06\x02\r\x01\x12\x04\xda\x03\r\x18\n\r\n\x05\x04\x06\x02\r\x03\
7131    \x12\x04\xda\x03\x1b\x1d\n\xe1\x01\n\x04\x04\x06\x02\x0e\x12\x04\xdf\x03\
7132    \x02\"\x1a\xd2\x01\x20If\x20true,\x20any\x20resources\x20such\x20as\x20V\
7133    ariables\x20used\x20in\x20the\x20session\x20will\x20not\x20be\n\x20share\
7134    d\x20with\x20other\x20sessions.\x20However,\x20when\x20clusterspec\x20pr\
7135    opagation\x20is\n\x20enabled,\x20this\x20field\x20is\x20ignored\x20and\
7136    \x20sessions\x20are\x20always\x20isolated.\n\n\r\n\x05\x04\x06\x02\x0e\
7137    \x05\x12\x04\xdf\x03\x02\x06\n\r\n\x05\x04\x06\x02\x0e\x01\x12\x04\xdf\
7138    \x03\x07\x1c\n\r\n\x05\x04\x06\x02\x0e\x03\x12\x04\xdf\x03\x1f!\n\xca\
7139    \x01\n\x04\x04\x06\x02\x0f\x12\x04\xe5\x03\x02-\x1a\xbb\x01\x20When\x20t\
7140    rue,\x20WorkerSessions\x20are\x20created\x20with\x20device\x20attributes\
7141    \x20from\x20the\n\x20full\x20cluster.\n\x20This\x20is\x20helpful\x20when\
7142    \x20a\x20worker\x20wants\x20to\x20partition\x20a\x20graph\n\x20(for\x20e\
7143    xample\x20during\x20a\x20PartitionedCallOp).\n\n\r\n\x05\x04\x06\x02\x0f\
7144    \x05\x12\x04\xe5\x03\x02\x06\n\r\n\x05\x04\x06\x02\x0f\x01\x12\x04\xe5\
7145    \x03\x07'\n\r\n\x05\x04\x06\x02\x0f\x03\x12\x04\xe5\x03*,\n\xab\x01\n\
7146    \x04\x04\x06\x03\x01\x12\x06\xea\x03\x02\xdb\x04\x03\x1a\x9a\x01\x20Ever\
7147    ything\x20inside\x20Experimental\x20is\x20subject\x20to\x20change\x20and\
7148    \x20is\x20not\x20subject\n\x20to\x20API\x20stability\x20guarantees\x20in\
7149    \n\x20https://www.tensorflow.org/guide/version_compat.\n\n\r\n\x05\x04\
7150    \x06\x03\x01\x01\x12\x04\xea\x03\n\x16\n1\n\x06\x04\x06\x03\x01\x02\0\
7151    \x12\x04\xec\x03\x04'\x1a!\x20Task\x20name\x20for\x20group\x20resolution\
7152    .\n\n\x0f\n\x07\x04\x06\x03\x01\x02\0\x05\x12\x04\xec\x03\x04\n\n\x0f\n\
7153    \x07\x04\x06\x03\x01\x02\0\x01\x12\x04\xec\x03\x0b\"\n\x0f\n\x07\x04\x06\
7154    \x03\x01\x02\0\x03\x12\x04\xec\x03%&\n\xd6\x01\n\x05\x04\x06\x03\x01\t\
7155    \x12\x04\xf2\x03\x04\x0f\x1a\xc6\x01\x20We\x20removed\x20the\x20flag\x20\
7156    client_handles_error_formatting.\x20Marking\x20the\x20tag\n\x20number\
7157    \x20as\x20reserved.\n\x20TODO(shikharagarwal):\x20Should\x20we\x20just\
7158    \x20remove\x20this\x20tag\x20so\x20that\x20it\x20can\x20be\n\x20used\x20\
7159    in\x20future\x20for\x20other\x20purpose?\n\n\x0e\n\x06\x04\x06\x03\x01\t\
7160    \0\x12\x04\xf2\x03\r\x0e\n\x0f\n\x07\x04\x06\x03\x01\t\0\x01\x12\x04\xf2\
7161    \x03\r\x0e\n\x0f\n\x07\x04\x06\x03\x01\t\0\x02\x12\x04\xf2\x03\r\x0e\nq\
7162    \n\x06\x04\x06\x03\x01\x02\x01\x12\x04\xf6\x03\x04\x1d\x1aa\x20Which\x20\
7163    executor\x20to\x20use,\x20the\x20default\x20executor\x20will\x20be\x20us\
7164    ed\n\x20if\x20it\x20is\x20an\x20empty\x20string\x20or\x20\"DEFAULT\"\n\n\
7165    \x0f\n\x07\x04\x06\x03\x01\x02\x01\x05\x12\x04\xf6\x03\x04\n\n\x0f\n\x07\
7166    \x04\x06\x03\x01\x02\x01\x01\x12\x04\xf6\x03\x0b\x18\n\x0f\n\x07\x04\x06\
7167    \x03\x01\x02\x01\x03\x12\x04\xf6\x03\x1b\x1c\n\xcc\x01\n\x06\x04\x06\x03\
7168    \x01\x02\x02\x12\x04\xfb\x03\x04!\x1a\xbb\x01\x20Guidance\x20to\x20forma\
7169    tting\x20of\x20large\x20RecvBuf\x20fields\x20for\x20transfer.\n\x20Any\
7170    \x20positive\x20value\x20sets\x20the\x20max\x20chunk\x20size.\x20\x200\
7171    \x20defaults\x20to\x204096.\n\x20Any\x20negative\x20value\x20indicates\
7172    \x20no\x20max,\x20i.e.\x20one\x20chunk\x20only.\n\n\x0f\n\x07\x04\x06\
7173    \x03\x01\x02\x02\x05\x12\x04\xfb\x03\x04\t\n\x0f\n\x07\x04\x06\x03\x01\
7174    \x02\x02\x01\x12\x04\xfb\x03\n\x1c\n\x0f\n\x07\x04\x06\x03\x01\x02\x02\
7175    \x03\x12\x04\xfb\x03\x1f\x20\n\xdd\x01\n\x06\x04\x06\x03\x01\x02\x03\x12\
7176    \x04\x80\x04\x04\x1f\x1a\xcc\x01\x20If\x20true,\x20and\x20supported\x20b\
7177    y\x20the\x20platform,\x20the\x20runtime\x20will\x20attempt\x20to\n\x20us\
7178    e\x20NUMA\x20affinity\x20where\x20applicable.\x20\x20One\x20consequence\
7179    \x20will\x20be\x20the\n\x20existence\x20of\x20as\x20many\x20CPU\x20devic\
7180    es\x20as\x20there\x20are\x20available\x20NUMA\x20nodes.\n\n\x0f\n\x07\
7181    \x04\x06\x03\x01\x02\x03\x05\x12\x04\x80\x04\x04\x08\n\x0f\n\x07\x04\x06\
7182    \x03\x01\x02\x03\x01\x12\x04\x80\x04\t\x1a\n\x0f\n\x07\x04\x06\x03\x01\
7183    \x02\x03\x03\x12\x04\x80\x04\x1d\x1e\n\x8c\x01\n\x06\x04\x06\x03\x01\x02\
7184    \x04\x12\x04\x84\x04\x04;\x1a|\x20If\x20true,\x20make\x20collective\x20o\
7185    p\x20execution\x20order\x20sequential\x20and\x20deterministic\n\x20for\
7186    \x20potentially\x20concurrent\x20collective\x20instances.\n\n\x0f\n\x07\
7187    \x04\x06\x03\x01\x02\x04\x05\x12\x04\x84\x04\x04\x08\n\x0f\n\x07\x04\x06\
7188    \x03\x01\x02\x04\x01\x12\x04\x84\x04\t6\n\x0f\n\x07\x04\x06\x03\x01\x02\
7189    \x04\x03\x12\x04\x84\x049:\n]\n\x06\x04\x06\x03\x01\x02\x05\x12\x04\x88\
7190    \x04\x04\x1d\x1aM\x20If\x20true,\x20use\x20NCCL\x20for\x20CollectiveOps.\
7191    \x20\x20This\x20feature\x20is\x20highly\n\x20experimental.\n\n\x0f\n\x07\
7192    \x04\x06\x03\x01\x02\x05\x05\x12\x04\x88\x04\x04\x08\n\x0f\n\x07\x04\x06\
7193    \x03\x01\x02\x05\x01\x12\x04\x88\x04\t\x18\n\x0f\n\x07\x04\x06\x03\x01\
7194    \x02\x05\x03\x12\x04\x88\x04\x1b\x1c\n\xda\x07\n\x06\x04\x06\x03\x01\x02\
7195    \x06\x12\x04\x9e\x04\x04<\x1a\xc9\x07\x20In\x20the\x20following,\x20sess\
7196    ion\x20state\x20means\x20the\x20value\x20of\x20a\x20variable,\x20element\
7197    s\n\x20in\x20a\x20hash\x20table,\x20or\x20any\x20other\x20resource,\x20a\
7198    ccessible\x20by\x20worker\x20sessions\n\x20held\x20by\x20a\x20TF\x20serv\
7199    er.\n\n\x20When\x20ClusterSpec\x20propagation\x20is\x20enabled,\x20the\
7200    \x20value\x20of\n\x20isolate_session_state\x20is\x20ignored\x20when\x20d\
7201    eciding\x20whether\x20to\x20share\x20session\n\x20states\x20in\x20a\x20T\
7202    F\x20server\x20(for\x20backwards\x20compatibility\x20reasons).\n\x20-\
7203    \x20If\x20share_session_state_in_clusterspec_propagation\x20is\x20true,\
7204    \x20the\x20session\n\x20states\x20are\x20shared.\n\x20-\x20If\x20share_s\
7205    ession_state_in_clusterspec_propagation\x20is\x20false,\x20session\n\x20\
7206    states\x20are\x20isolated.\n\n\x20When\x20clusterspec\x20propagation\x20\
7207    is\x20not\x20used,\x20the\x20value\x20of\n\x20share_session_state_in_clu\
7208    sterspec_propagation\x20is\x20ignored\x20when\x20deciding\n\x20whether\
7209    \x20to\x20share\x20session\x20states\x20in\x20a\x20TF\x20server.\n\x20-\
7210    \x20If\x20isolate_session_state\x20is\x20true,\x20session\x20states\x20a\
7211    re\x20isolated.\n\x20-\x20If\x20isolate_session_state\x20is\x20false,\
7212    \x20session\x20states\x20are\x20shared.\n\n\x20TODO(b/129330037):\x20Add\
7213    \x20a\x20single\x20API\x20that\x20consistently\x20treats\n\x20isolate_se\
7214    ssion_state\x20and\x20ClusterSpec\x20propagation.\n\n\x0f\n\x07\x04\x06\
7215    \x03\x01\x02\x06\x05\x12\x04\x9e\x04\x04\x08\n\x0f\n\x07\x04\x06\x03\x01\
7216    \x02\x06\x01\x12\x04\x9e\x04\t7\n\x0f\n\x07\x04\x06\x03\x01\x02\x06\x03\
7217    \x12\x04\x9e\x04:;\n\xf2\x01\n\x06\x04\x06\x03\x01\x02\x07\x12\x04\xa4\
7218    \x04\x04%\x1a\xe1\x01\x20If\x20using\x20a\x20direct\x20session,\x20disab\
7219    le\x20spinning\x20while\x20waiting\x20for\x20work\x20in\n\x20the\x20thre\
7220    ad\x20pool.\x20This\x20may\x20result\x20in\x20higher\x20latency\x20for\
7221    \x20completing\x20ops,\n\x20but\x20in\x20the\x20case\x20where\x20there\
7222    \x20is\x20a\x20lot\x20of\x20spinning\x20may\x20result\x20in\x20lower\n\
7223    \x20CPU\x20usage.\n\n\x0f\n\x07\x04\x06\x03\x01\x02\x07\x05\x12\x04\xa4\
7224    \x04\x04\x08\n\x0f\n\x07\x04\x06\x03\x01\x02\x07\x01\x12\x04\xa4\x04\t\
7225    \x20\n\x0f\n\x07\x04\x06\x03\x01\x02\x07\x03\x12\x04\xa4\x04#$\n\x80\x01\
7226    \n\x06\x04\x06\x03\x01\x02\x08\x12\x04\xa8\x04\x04/\x1ap\x20This\x20was\
7227    \x20promoted\x20to\x20a\x20non-experimental\x20API.\x20Please\x20use\n\
7228    \x20ConfigProto.share_cluster_devices_in_session\x20instead.\n\n\x0f\n\
7229    \x07\x04\x06\x03\x01\x02\x08\x05\x12\x04\xa8\x04\x04\x08\n\x0f\n\x07\x04\
7230    \x06\x03\x01\x02\x08\x01\x12\x04\xa8\x04\t)\n\x0f\n\x07\x04\x06\x03\x01\
7231    \x02\x08\x03\x12\x04\xa8\x04,.\n\xcf\x01\n\x06\x04\x06\x03\x01\x02\t\x12\
7232    \x04\xb0\x04\x04*\x1a\xbe\x01\x20Metadata\x20about\x20the\x20session.\n\
7233    \n\x20If\x20set,\x20this\x20can\x20be\x20used\x20by\x20the\x20runtime\
7234    \x20and\x20the\x20Ops\x20for\x20debugging,\n\x20monitoring,\x20etc.\n\n\
7235    \x20NOTE:\x20This\x20is\x20currently\x20used\x20and\x20propagated\x20onl\
7236    y\x20by\x20the\x20direct\x20session.\n\n\x0f\n\x07\x04\x06\x03\x01\x02\t\
7237    \x06\x12\x04\xb0\x04\x04\x13\n\x0f\n\x07\x04\x06\x03\x01\x02\t\x01\x12\
7238    \x04\xb0\x04\x14$\n\x0f\n\x07\x04\x06\x03\x01\x02\t\x03\x12\x04\xb0\x04'\
7239    )\n\x98\x02\n\x06\x04\x06\x03\x01\x02\n\x12\x04\xb8\x04\x04(\x1a\x87\x02\
7240    \x20If\x20true,\x20the\x20session\x20may\x20treat\x20the\x20graph\x20as\
7241    \x20being\x20static\x20for\x20optimization\n\x20purposes.\n\n\x20If\x20t\
7242    his\x20option\x20is\x20set\x20to\x20true\x20when\x20a\x20session\x20is\
7243    \x20created,\x20the\x20full\n\x20GraphDef\x20must\x20be\x20passed\x20in\
7244    \x20a\x20single\x20call\x20to\x20Session::Create(),\x20and\n\x20Session:\
7245    :Extend()\x20may\x20not\x20be\x20supported.\n\n\x0f\n\x07\x04\x06\x03\
7246    \x01\x02\n\x05\x12\x04\xb8\x04\x04\x08\n\x0f\n\x07\x04\x06\x03\x01\x02\n\
7247    \x01\x12\x04\xb8\x04\t\"\n\x0f\n\x07\x04\x06\x03\x01\x02\n\x03\x12\x04\
7248    \xb8\x04%'\n\x86\x05\n\x06\x04\x06\x03\x01\x02\x0b\x12\x04\xc5\x04\x04!\
7249    \x1a\xf5\x04\x20Whether\x20to\x20enable\x20the\x20MLIR-based\x20TF->XLA\
7250    \x20bridge.\n\n\x20This\x20is\x20a\x20replacement\x20to\x20the\x20existi\
7251    ng\x20bridge,\x20and\x20not\x20ready\x20for\n\x20production\x20usage\x20\
7252    yet.\n\x20If\x20this\x20option\x20is\x20set\x20to\x20true\x20when\x20a\
7253    \x20session\x20is\x20created,\x20MLIR\x20is\x20used\x20to\n\x20perform\
7254    \x20the\x20set\x20of\x20graph\x20transformations\x20to\x20put\x20the\x20\
7255    graph\x20in\x20a\x20form\x20that\n\x20can\x20be\x20executed\x20with\x20d\
7256    elegation\x20of\x20some\x20computations\x20to\x20an\x20accelerator.\n\
7257    \x20This\x20builds\x20on\x20the\x20model\x20of\x20XLA\x20where\x20a\x20s\
7258    ubset\x20of\x20the\x20graph\x20is\n\x20encapsulated\x20and\x20attached\
7259    \x20to\x20a\x20\"compile\"\x20operation,\x20whose\x20result\x20is\x20fed\
7260    \n\x20to\x20an\x20\"execute\"\x20operation.\x20The\x20kernel\x20for\x20t\
7261    hese\x20operations\x20is\x20responsible\n\x20to\x20lower\x20the\x20encap\
7262    sulated\x20graph\x20to\x20a\x20particular\x20device.\n\n\x0f\n\x07\x04\
7263    \x06\x03\x01\x02\x0b\x05\x12\x04\xc5\x04\x04\x08\n\x0f\n\x07\x04\x06\x03\
7264    \x01\x02\x0b\x01\x12\x04\xc5\x04\t\x1b\n\x0f\n\x07\x04\x06\x03\x01\x02\
7265    \x0b\x03\x12\x04\xc5\x04\x1e\x20\n\x98\x02\n\x06\x04\x06\x03\x01\x02\x0c\
7266    \x12\x04\xcc\x04\x04-\x1a\x87\x02\x20Whether\x20to\x20enable\x20the\x20M\
7267    LIR-based\x20Graph\x20optimizations.\n\n\x20This\x20will\x20become\x20a\
7268    \x20part\x20of\x20standard\x20Tensorflow\x20graph\x20optimization\n\x20p\
7269    ipeline,\x20currently\x20this\x20is\x20only\x20used\x20for\x20gradual\
7270    \x20migration\x20and\x20testing\n\x20new\x20passes\x20that\x20are\x20rep\
7271    lacing\x20existing\x20optimizations\x20in\x20Grappler.\n\n\x0f\n\x07\x04\
7272    \x06\x03\x01\x02\x0c\x05\x12\x04\xcc\x04\x04\x08\n\x0f\n\x07\x04\x06\x03\
7273    \x01\x02\x0c\x01\x12\x04\xcc\x04\t'\n\x0f\n\x07\x04\x06\x03\x01\x02\x0c\
7274    \x03\x12\x04\xcc\x04*,\n\xe8\x01\n\x06\x04\x06\x03\x01\x02\r\x12\x04\xd3\
7275    \x04\x04.\x1a\xd7\x01\x20If\x20true,\x20the\x20session\x20will\x20not\
7276    \x20store\x20an\x20additional\x20copy\x20of\x20the\x20graph\x20for\n\x20\
7277    each\x20subgraph.\n\n\x20If\x20this\x20option\x20is\x20set\x20to\x20true\
7278    \x20when\x20a\x20session\x20is\x20created,\x20the\n\x20`RunOptions.outpu\
7279    t_partition_graphs`\x20options\x20must\x20not\x20be\x20set.\n\n\x0f\n\
7280    \x07\x04\x06\x03\x01\x02\r\x05\x12\x04\xd3\x04\x04\x08\n\x0f\n\x07\x04\
7281    \x06\x03\x01\x02\r\x01\x12\x04\xd3\x04\t(\n\x0f\n\x07\x04\x06\x03\x01\
7282    \x02\r\x03\x12\x04\xd3\x04+-\n\x8d\x02\n\x06\x04\x06\x03\x01\x02\x0e\x12\
7283    \x04\xda\x04\x04+\x1a\xfc\x01\x20Minimum\x20number\x20of\x20batches\x20r\
7284    un\x20through\x20the\x20XLA\x20graph\x20before\x20XLA\x20fusion\n\x20aut\
7285    otuner\x20is\x20enabled.\x20Default\x20value\x20of\x20zero\x20disables\
7286    \x20the\x20autotuner.\n\n\x20The\x20XLA\x20fusion\x20autotuner\x20can\
7287    \x20improve\x20performance\x20by\x20executing\x20a\x20heuristic\n\x20sea\
7288    rch\x20on\x20the\x20compiler\x20parameters.\n\n\x0f\n\x07\x04\x06\x03\
7289    \x01\x02\x0e\x05\x12\x04\xda\x04\x04\t\n\x0f\n\x07\x04\x06\x03\x01\x02\
7290    \x0e\x01\x12\x04\xda\x04\n%\n\x0f\n\x07\x04\x06\x03\x01\x02\x0e\x03\x12\
7291    \x04\xda\x04(*\n\x0c\n\x04\x04\x06\x02\x10\x12\x04\xdd\x04\x02!\n\r\n\
7292    \x05\x04\x06\x02\x10\x06\x12\x04\xdd\x04\x02\x0e\n\r\n\x05\x04\x06\x02\
7293    \x10\x01\x12\x04\xdd\x04\x0f\x1b\n\r\n\x05\x04\x06\x02\x10\x03\x12\x04\
7294    \xdd\x04\x1e\x20\n0\n\x02\x04\x07\x12\x06\xe3\x04\0\xa1\x05\x01\x1a\"\
7295    \x20Options\x20for\x20a\x20single\x20Run()\x20call.\n\n\x0b\n\x03\x04\
7296    \x07\x01\x12\x04\xe3\x04\x08\x12\n\x84\x01\n\x04\x04\x07\x04\0\x12\x06\
7297    \xe6\x04\x02\xeb\x04\x03\x1at\x20TODO(pbar)\x20Turn\x20this\x20into\x20a\
7298    \x20TraceOptions\x20proto\x20which\x20allows\n\x20tracing\x20to\x20be\
7299    \x20controlled\x20in\x20a\x20more\x20orthogonal\x20manner?\n\n\r\n\x05\
7300    \x04\x07\x04\0\x01\x12\x04\xe6\x04\x07\x11\n\x0e\n\x06\x04\x07\x04\0\x02\
7301    \0\x12\x04\xe7\x04\x04\x11\n\x0f\n\x07\x04\x07\x04\0\x02\0\x01\x12\x04\
7302    \xe7\x04\x04\x0c\n\x0f\n\x07\x04\x07\x04\0\x02\0\x02\x12\x04\xe7\x04\x0f\
7303    \x10\n\x0e\n\x06\x04\x07\x04\0\x02\x01\x12\x04\xe8\x04\x04\x17\n\x0f\n\
7304    \x07\x04\x07\x04\0\x02\x01\x01\x12\x04\xe8\x04\x04\x12\n\x0f\n\x07\x04\
7305    \x07\x04\0\x02\x01\x02\x12\x04\xe8\x04\x15\x16\n\x0e\n\x06\x04\x07\x04\0\
7306    \x02\x02\x12\x04\xe9\x04\x04\x17\n\x0f\n\x07\x04\x07\x04\0\x02\x02\x01\
7307    \x12\x04\xe9\x04\x04\x12\n\x0f\n\x07\x04\x07\x04\0\x02\x02\x02\x12\x04\
7308    \xe9\x04\x15\x16\n\x0e\n\x06\x04\x07\x04\0\x02\x03\x12\x04\xea\x04\x04\
7309    \x13\n\x0f\n\x07\x04\x07\x04\0\x02\x03\x01\x12\x04\xea\x04\x04\x0e\n\x0f\
7310    \n\x07\x04\x07\x04\0\x02\x03\x02\x12\x04\xea\x04\x11\x12\n\x0c\n\x04\x04\
7311    \x07\x02\0\x12\x04\xec\x04\x02\x1d\n\r\n\x05\x04\x07\x02\0\x06\x12\x04\
7312    \xec\x04\x02\x0c\n\r\n\x05\x04\x07\x02\0\x01\x12\x04\xec\x04\r\x18\n\r\n\
7313    \x05\x04\x07\x02\0\x03\x12\x04\xec\x04\x1b\x1c\nG\n\x04\x04\x07\x02\x01\
7314    \x12\x04\xef\x04\x02\x1a\x1a9\x20Time\x20to\x20wait\x20for\x20operation\
7315    \x20to\x20complete\x20in\x20milliseconds.\n\n\r\n\x05\x04\x07\x02\x01\
7316    \x05\x12\x04\xef\x04\x02\x07\n\r\n\x05\x04\x07\x02\x01\x01\x12\x04\xef\
7317    \x04\x08\x15\n\r\n\x05\x04\x07\x02\x01\x03\x12\x04\xef\x04\x18\x19\n\x9d\
7318    \x03\n\x04\x04\x07\x02\x02\x12\x04\xf7\x04\x02!\x1a\x8e\x03\x20The\x20th\
7319    read\x20pool\x20to\x20use,\x20if\x20session_inter_op_thread_pool\x20is\
7320    \x20configured.\n\x20To\x20use\x20the\x20caller\x20thread\x20set\x20this\
7321    \x20to\x20-1\x20-\x20this\x20uses\x20the\x20caller\x20thread\n\x20to\x20\
7322    execute\x20Session::Run()\x20and\x20thus\x20avoids\x20a\x20context\x20sw\
7323    itch.\x20Using\x20the\n\x20caller\x20thread\x20to\x20execute\x20Session:\
7324    :Run()\x20should\x20be\x20done\x20ONLY\x20for\x20simple\n\x20graphs,\x20\
7325    where\x20the\x20overhead\x20of\x20an\x20additional\x20context\x20switch\
7326    \x20is\n\x20comparable\x20with\x20the\x20overhead\x20of\x20Session::Run(\
7327    ).\n\n\r\n\x05\x04\x07\x02\x02\x05\x12\x04\xf7\x04\x02\x07\n\r\n\x05\x04\
7328    \x07\x02\x02\x01\x12\x04\xf7\x04\x08\x1c\n\r\n\x05\x04\x07\x02\x02\x03\
7329    \x12\x04\xf7\x04\x1f\x20\np\n\x04\x04\x07\x02\x03\x12\x04\xfb\x04\x02#\
7330    \x1ab\x20Whether\x20the\x20partition\x20graph(s)\x20executed\x20by\x20th\
7331    e\x20executor(s)\x20should\x20be\n\x20outputted\x20via\x20RunMetadata.\n\
7332    \n\r\n\x05\x04\x07\x02\x03\x05\x12\x04\xfb\x04\x02\x06\n\r\n\x05\x04\x07\
7333    \x02\x03\x01\x12\x04\xfb\x04\x07\x1e\n\r\n\x05\x04\x07\x02\x03\x03\x12\
7334    \x04\xfb\x04!\"\nT\n\x04\x04\x07\x02\x04\x12\x04\xfe\x04\x02!\x1aF\x20EX\
7335    PERIMENTAL.\x20\x20Options\x20used\x20to\x20initialize\x20DebuggerState,\
7336    \x20if\x20enabled.\n\n\r\n\x05\x04\x07\x02\x04\x06\x12\x04\xfe\x04\x02\
7337    \x0e\n\r\n\x05\x04\x07\x02\x04\x01\x12\x04\xfe\x04\x0f\x1c\n\r\n\x05\x04\
7338    \x07\x02\x04\x03\x12\x04\xfe\x04\x1f\x20\n\xe7\x01\n\x04\x04\x07\x02\x05\
7339    \x12\x04\x85\x05\x02.\x1a\xd8\x01\x20When\x20enabled,\x20causes\x20tenso\
7340    r\x20allocation\x20information\x20to\x20be\x20included\x20in\n\x20the\
7341    \x20error\x20message\x20when\x20the\x20Run()\x20call\x20fails\x20because\
7342    \x20the\x20allocator\x20ran\n\x20out\x20of\x20memory\x20(OOM).\n\n\x20En\
7343    abling\x20this\x20option\x20can\x20slow\x20down\x20the\x20Run()\x20call.\
7344    \n\n\r\n\x05\x04\x07\x02\x05\x05\x12\x04\x85\x05\x02\x06\n\r\n\x05\x04\
7345    \x07\x02\x05\x01\x12\x04\x85\x05\x07)\n\r\n\x05\x04\x07\x02\x05\x03\x12\
7346    \x04\x85\x05,-\n\xab\x01\n\x04\x04\x07\x03\0\x12\x06\x8a\x05\x02\x9c\x05\
7347    \x03\x1a\x9a\x01\x20Everything\x20inside\x20Experimental\x20is\x20subjec\
7348    t\x20to\x20change\x20and\x20is\x20not\x20subject\n\x20to\x20API\x20stabi\
7349    lity\x20guarantees\x20in\n\x20https://www.tensorflow.org/guide/version_c\
7350    ompat.\n\n\r\n\x05\x04\x07\x03\0\x01\x12\x04\x8a\x05\n\x16\n\xec\x01\n\
7351    \x06\x04\x07\x03\0\x02\0\x12\x04\x8f\x05\x04#\x1a\xdb\x01\x20If\x20non-z\
7352    ero,\x20declares\x20that\x20this\x20graph\x20is\x20going\x20to\x20use\
7353    \x20collective\n\x20ops\x20and\x20must\x20synchronize\x20step_ids\x20wit\
7354    h\x20any\x20other\x20graph\x20with\x20this\n\x20same\x20group_key\x20val\
7355    ue\x20(in\x20a\x20distributed\x20computation\x20where\x20tasks\n\x20run\
7356    \x20disjoint\x20graphs).\n\n\x0f\n\x07\x04\x07\x03\0\x02\0\x05\x12\x04\
7357    \x8f\x05\x04\t\n\x0f\n\x07\x04\x07\x03\0\x02\0\x01\x12\x04\x8f\x05\n\x1e\
7358    \n\x0f\n\x07\x04\x07\x03\0\x02\0\x03\x12\x04\x8f\x05!\"\n\xf2\x01\n\x06\
7359    \x04\x07\x03\0\x02\x01\x12\x04\x94\x05\x04\"\x1a\xe1\x01\x20If\x20true,\
7360    \x20then\x20operations\x20(using\x20the\x20inter-op\x20pool)\x20across\
7361    \x20all\n\x20session::run()\x20calls\x20will\x20be\x20centrally\x20sched\
7362    uled,\x20optimizing\x20for\x20(median\n\x20and\x20tail)\x20latency.\n\
7363    \x20Consider\x20using\x20this\x20option\x20for\x20CPU-bound\x20workloads\
7364    \x20like\x20inference.\n\n\x0f\n\x07\x04\x07\x03\0\x02\x01\x05\x12\x04\
7365    \x94\x05\x04\x08\n\x0f\n\x07\x04\x07\x03\0\x02\x01\x01\x12\x04\x94\x05\t\
7366    \x1d\n\x0f\n\x07\x04\x07\x03\0\x02\x01\x03\x12\x04\x94\x05\x20!\n8\n\x06\
7367    \x04\x07\x03\0\x03\0\x12\x06\x96\x05\x04\x9a\x05\x05\x1a&\x20Options\x20\
7368    for\x20run\x20handler\x20thread\x20pool.\n\n\x0f\n\x07\x04\x07\x03\0\x03\
7369    \0\x01\x12\x04\x96\x05\x0c!\n\xa3\x01\n\x08\x04\x07\x03\0\x03\0\x02\0\
7370    \x12\x04\x99\x05\x06\x19\x1a\x90\x01\x20Priority\x20of\x20the\x20request\
7371    .\x20The\x20run\x20handler\x20thread\x20pool\x20will\x20schedule\x20ops\
7372    \n\x20based\x20on\x20the\x20priority\x20number.\x20The\x20larger\x20numb\
7373    er\x20means\x20higher\x20priority.\n\n\x11\n\t\x04\x07\x03\0\x03\0\x02\0\
7374    \x05\x12\x04\x99\x05\x06\x0b\n\x11\n\t\x04\x07\x03\0\x03\0\x02\0\x01\x12\
7375    \x04\x99\x05\x0c\x14\n\x11\n\t\x04\x07\x03\0\x03\0\x02\0\x03\x12\x04\x99\
7376    \x05\x17\x18\n\x0e\n\x06\x04\x07\x03\0\x02\x02\x12\x04\x9b\x05\x047\n\
7377    \x0f\n\x07\x04\x07\x03\0\x02\x02\x06\x12\x04\x9b\x05\x04\x19\n\x0f\n\x07\
7378    \x04\x07\x03\0\x02\x02\x01\x12\x04\x9b\x05\x1a2\n\x0f\n\x07\x04\x07\x03\
7379    \0\x02\x02\x03\x12\x04\x9b\x0556\n\x0c\n\x04\x04\x07\x02\x06\x12\x04\x9e\
7380    \x05\x02\x20\n\r\n\x05\x04\x07\x02\x06\x06\x12\x04\x9e\x05\x02\x0e\n\r\n\
7381    \x05\x04\x07\x02\x06\x01\x12\x04\x9e\x05\x0f\x1b\n\r\n\x05\x04\x07\x02\
7382    \x06\x03\x12\x04\x9e\x05\x1e\x1f\n\x0b\n\x03\x04\x07\t\x12\x04\xa0\x05\
7383    \x02\r\n\x0c\n\x04\x04\x07\t\0\x12\x04\xa0\x05\x0b\x0c\n\r\n\x05\x04\x07\
7384    \t\0\x01\x12\x04\xa0\x05\x0b\x0c\n\r\n\x05\x04\x07\t\0\x02\x12\x04\xa0\
7385    \x05\x0b\x0c\nK\n\x02\x04\x08\x12\x06\xa4\x05\0\xc2\x05\x01\x1a=\x20Meta\
7386    data\x20output\x20(i.e.,\x20non-Tensor)\x20for\x20a\x20single\x20Run()\
7387    \x20call.\n\n\x0b\n\x03\x04\x08\x01\x12\x04\xa4\x05\x08\x13\n\xbb\x01\n\
7388    \x04\x04\x08\x02\0\x12\x04\xa8\x05\x02\x1b\x1a\xac\x01\x20Statistics\x20\
7389    traced\x20for\x20this\x20step.\x20Populated\x20if\x20tracing\x20is\x20tu\
7390    rned\x20on\x20via\x20the\n\x20\"RunOptions\"\x20proto.\n\x20EXPERIMENTAL\
7391    :\x20The\x20format\x20and\x20set\x20of\x20events\x20may\x20change\x20in\
7392    \x20future\x20versions.\n\n\r\n\x05\x04\x08\x02\0\x06\x12\x04\xa8\x05\
7393    \x02\x0b\n\r\n\x05\x04\x08\x02\0\x01\x12\x04\xa8\x05\x0c\x16\n\r\n\x05\
7394    \x04\x08\x02\0\x03\x12\x04\xa8\x05\x19\x1a\nK\n\x04\x04\x08\x02\x01\x12\
7395    \x04\xab\x05\x02\x1e\x1a=\x20The\x20cost\x20graph\x20for\x20the\x20compu\
7396    tation\x20defined\x20by\x20the\x20run\x20call.\n\n\r\n\x05\x04\x08\x02\
7397    \x01\x06\x12\x04\xab\x05\x02\x0e\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\
7398    \xab\x05\x0f\x19\n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\xab\x05\x1c\x1d\n\
7399    ?\n\x04\x04\x08\x02\x02\x12\x04\xae\x05\x02)\x1a1\x20Graphs\x20of\x20the\
7400    \x20partitions\x20executed\x20by\x20executors.\n\n\r\n\x05\x04\x08\x02\
7401    \x02\x04\x12\x04\xae\x05\x02\n\n\r\n\x05\x04\x08\x02\x02\x06\x12\x04\xae\
7402    \x05\x0b\x13\n\r\n\x05\x04\x08\x02\x02\x01\x12\x04\xae\x05\x14$\n\r\n\
7403    \x05\x04\x08\x02\x02\x03\x12\x04\xae\x05'(\n\x0e\n\x04\x04\x08\x03\0\x12\
7404    \x06\xb0\x05\x02\xb6\x05\x03\n\r\n\x05\x04\x08\x03\0\x01\x12\x04\xb0\x05\
7405    \n\x18\nW\n\x06\x04\x08\x03\0\x02\0\x12\x04\xb2\x05\x04+\x1aG\x20TODO(na\
7406    reshmodi):\x20Include\x20some\x20sort\x20of\x20function/cache-key\x20ide\
7407    ntifier?\n\n\x0f\n\x07\x04\x08\x03\0\x02\0\x04\x12\x04\xb2\x05\x04\x0c\n\
7408    \x0f\n\x07\x04\x08\x03\0\x02\0\x06\x12\x04\xb2\x05\r\x15\n\x0f\n\x07\x04\
7409    \x08\x03\0\x02\0\x01\x12\x04\xb2\x05\x16&\n\x0f\n\x07\x04\x08\x03\0\x02\
7410    \0\x03\x12\x04\xb2\x05)*\n\x0e\n\x06\x04\x08\x03\0\x02\x01\x12\x04\xb4\
7411    \x05\x04(\n\x0f\n\x07\x04\x08\x03\0\x02\x01\x06\x12\x04\xb4\x05\x04\x0c\
7412    \n\x0f\n\x07\x04\x08\x03\0\x02\x01\x01\x12\x04\xb4\x05\r#\n\x0f\n\x07\
7413    \x04\x08\x03\0\x02\x01\x03\x12\x04\xb4\x05&'\n\x0e\n\x06\x04\x08\x03\0\
7414    \x02\x02\x12\x04\xb5\x05\x04)\n\x0f\n\x07\x04\x08\x03\0\x02\x02\x06\x12\
7415    \x04\xb5\x05\x04\x0c\n\x0f\n\x07\x04\x08\x03\0\x02\x02\x01\x12\x04\xb5\
7416    \x05\r$\n\x0f\n\x07\x04\x08\x03\0\x02\x02\x03\x12\x04\xb5\x05'(\n\xb8\
7417    \x05\n\x04\x04\x08\x02\x03\x12\x04\xc1\x05\x02.\x1a\xa9\x05\x20This\x20i\
7418    s\x20only\x20populated\x20for\x20graphs\x20that\x20are\x20run\x20as\x20f\
7419    unctions\x20in\x20TensorFlow\n\x20V2.\x20There\x20will\x20be\x20an\x20en\
7420    try\x20below\x20for\x20each\x20function\x20that\x20is\x20traced.\n\x20Th\
7421    e\x20main\x20use\x20cases\x20of\x20the\x20post_optimization_graph\x20and\
7422    \x20the\x20partition_graphs\n\x20is\x20to\x20give\x20the\x20caller\x20in\
7423    sight\x20into\x20the\x20graphs\x20that\x20were\x20actually\x20run\x20by\
7424    \x20the\n\x20runtime.\x20Additional\x20information\x20(such\x20as\x20tho\
7425    se\x20in\x20step_stats)\x20will\x20match\n\x20these\x20graphs.\n\x20We\
7426    \x20also\x20include\x20the\x20pre_optimization_graph\x20since\x20it\x20i\
7427    s\x20usually\x20easier\x20to\n\x20read,\x20and\x20is\x20helpful\x20in\
7428    \x20situations\x20where\x20the\x20caller\x20wants\x20to\x20get\x20a\x20h\
7429    igh\n\x20level\x20idea\x20of\x20what\x20the\x20built\x20graph\x20looks\
7430    \x20like\x20(since\x20the\x20various\x20graph\n\x20optimization\x20passe\
7431    s\x20might\x20change\x20the\x20structure\x20of\x20the\x20graph\x20signif\
7432    icantly).\n\n\r\n\x05\x04\x08\x02\x03\x04\x12\x04\xc1\x05\x02\n\n\r\n\
7433    \x05\x04\x08\x02\x03\x06\x12\x04\xc1\x05\x0b\x19\n\r\n\x05\x04\x08\x02\
7434    \x03\x01\x12\x04\xc1\x05\x1a)\n\r\n\x05\x04\x08\x02\x03\x03\x12\x04\xc1\
7435    \x05,-\nI\n\x02\x04\t\x12\x06\xc5\x05\0\xcd\x05\x01\x1a;\x20Defines\x20a\
7436    \x20connection\x20between\x20two\x20tensors\x20in\x20a\x20`GraphDef`.\n\
7437    \n\x0b\n\x03\x04\t\x01\x12\x04\xc5\x05\x08\x18\nq\n\x04\x04\t\x02\0\x12\
7438    \x04\xc8\x05\x02\x19\x1ac\x20A\x20tensor\x20name.\x20The\x20value\x20of\
7439    \x20this\x20tensor\x20will\x20be\x20substituted\x20for\n\x20the\x20tenso\
7440    r\x20named\x20in\x20`to_tensor`.\n\n\r\n\x05\x04\t\x02\0\x05\x12\x04\xc8\
7441    \x05\x02\x08\n\r\n\x05\x04\t\x02\0\x01\x12\x04\xc8\x05\t\x14\n\r\n\x05\
7442    \x04\t\x02\0\x03\x12\x04\xc8\x05\x17\x18\ny\n\x04\x04\t\x02\x01\x12\x04\
7443    \xcc\x05\x02\x17\x1ak\x20A\x20tensor\x20name.\x20The\x20value\x20of\x20t\
7444    his\x20tensor\x20will\x20be\x20bound\x20to\x20the\n\x20value\x20of\x20th\
7445    e\x20tensor\x20named\x20in\x20`from_tensor`.\n\n\r\n\x05\x04\t\x02\x01\
7446    \x05\x12\x04\xcc\x05\x02\x08\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\xcc\x05\
7447    \t\x12\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\xcc\x05\x15\x16\n\xa9\x01\n\
7448    \x02\x04\n\x12\x06\xd3\x05\0\xa7\x06\x01\x1a\x9a\x01\x20Defines\x20a\x20\
7449    subgraph\x20in\x20another\x20`GraphDef`\x20as\x20a\x20set\x20of\x20feed\
7450    \x20points\x20and\x20nodes\n\x20to\x20be\x20fetched\x20or\x20executed.\n\
7451    \n\x20Compare\x20with\x20the\x20arguments\x20to\x20`Session::Run()`.\n\n\
7452    \x0b\n\x03\x04\n\x01\x12\x04\xd3\x05\x08\x17\nU\n\x04\x04\n\x02\0\x12\
7453    \x04\xd5\x05\x02\x1b\x1aG\x20Tensors\x20to\x20be\x20fed\x20in\x20the\x20\
7454    callable.\x20Each\x20feed\x20is\x20the\x20name\x20of\x20a\x20tensor.\n\n\
7455    \r\n\x05\x04\n\x02\0\x04\x12\x04\xd5\x05\x02\n\n\r\n\x05\x04\n\x02\0\x05\
7456    \x12\x04\xd5\x05\x0b\x11\n\r\n\x05\x04\n\x02\0\x01\x12\x04\xd5\x05\x12\
7457    \x16\n\r\n\x05\x04\n\x02\0\x03\x12\x04\xd5\x05\x19\x1a\n\xe2\x01\n\x04\
7458    \x04\n\x02\x01\x12\x04\xda\x05\x02\x1c\x1a\xd3\x01\x20Fetches.\x20A\x20l\
7459    ist\x20of\x20tensor\x20names.\x20The\x20caller\x20of\x20the\x20callable\
7460    \x20expects\x20a\n\x20tensor\x20to\x20be\x20returned\x20for\x20each\x20f\
7461    etch[i]\x20(see\x20RunStepResponse.tensor).\x20The\n\x20order\x20of\x20s\
7462    pecified\x20fetches\x20does\x20not\x20change\x20the\x20execution\x20orde\
7463    r.\n\n\r\n\x05\x04\n\x02\x01\x04\x12\x04\xda\x05\x02\n\n\r\n\x05\x04\n\
7464    \x02\x01\x05\x12\x04\xda\x05\x0b\x11\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\
7465    \xda\x05\x12\x17\n\r\n\x05\x04\n\x02\x01\x03\x12\x04\xda\x05\x1a\x1b\n\
7466    \x88\x01\n\x04\x04\n\x02\x02\x12\x04\xde\x05\x02\x1d\x1az\x20Target\x20N\
7467    odes.\x20A\x20list\x20of\x20node\x20names.\x20The\x20named\x20nodes\x20w\
7468    ill\x20be\x20run\x20by\x20the\n\x20callable\x20but\x20their\x20outputs\
7469    \x20will\x20not\x20be\x20returned.\n\n\r\n\x05\x04\n\x02\x02\x04\x12\x04\
7470    \xde\x05\x02\n\n\r\n\x05\x04\n\x02\x02\x05\x12\x04\xde\x05\x0b\x11\n\r\n\
7471    \x05\x04\n\x02\x02\x01\x12\x04\xde\x05\x12\x18\n\r\n\x05\x04\n\x02\x02\
7472    \x03\x12\x04\xde\x05\x1b\x1c\n9\n\x04\x04\n\x02\x03\x12\x04\xe1\x05\x02\
7473    \x1d\x1a+\x20Options\x20that\x20will\x20be\x20applied\x20to\x20each\x20r\
7474    un.\n\n\r\n\x05\x04\n\x02\x03\x06\x12\x04\xe1\x05\x02\x0c\n\r\n\x05\x04\
7475    \n\x02\x03\x01\x12\x04\xe1\x05\r\x18\n\r\n\x05\x04\n\x02\x03\x03\x12\x04\
7476    \xe1\x05\x1b\x1c\n\xb0\x01\n\x04\x04\n\x02\x04\x12\x04\xe6\x05\x022\x1a\
7477    \xa1\x01\x20Tensors\x20to\x20be\x20connected\x20in\x20the\x20callable.\
7478    \x20Each\x20TensorConnection\x20denotes\n\x20a\x20pair\x20of\x20tensors\
7479    \x20in\x20the\x20graph,\x20between\x20which\x20an\x20edge\x20will\x20be\
7480    \x20created\n\x20in\x20the\x20callable.\n\n\r\n\x05\x04\n\x02\x04\x04\
7481    \x12\x04\xe6\x05\x02\n\n\r\n\x05\x04\n\x02\x04\x06\x12\x04\xe6\x05\x0b\
7482    \x1b\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xe6\x05\x1c-\n\r\n\x05\x04\n\
7483    \x02\x04\x03\x12\x04\xe6\x0501\n\xb7\r\n\x04\x04\n\x02\x05\x12\x04\x97\
7484    \x06\x02'\x1a\xa8\r\x20The\x20Tensor\x20objects\x20fed\x20in\x20the\x20c\
7485    allable\x20and\x20fetched\x20from\x20the\x20callable\n\x20are\x20expecte\
7486    d\x20to\x20be\x20backed\x20by\x20host\x20(CPU)\x20memory\x20by\x20defaul\
7487    t.\n\n\x20The\x20options\x20below\x20allow\x20changing\x20that\x20-\x20f\
7488    eeding\x20tensors\x20backed\x20by\n\x20device\x20memory,\x20or\x20return\
7489    ing\x20tensors\x20that\x20are\x20backed\x20by\x20device\x20memory.\n\n\
7490    \x20The\x20maps\x20below\x20map\x20the\x20name\x20of\x20a\x20feed/fetch\
7491    \x20tensor\x20(which\x20appears\x20in\n\x20'feed'\x20or\x20'fetch'\x20fi\
7492    elds\x20above),\x20to\x20the\x20fully\x20qualified\x20name\x20of\x20the\
7493    \x20device\n\x20owning\x20the\x20memory\x20backing\x20the\x20contents\
7494    \x20of\x20the\x20tensor.\n\n\x20For\x20example,\x20creating\x20a\x20call\
7495    able\x20with\x20the\x20following\x20options:\n\n\x20CallableOptions\x20{\
7496    \n\x20\x20\x20feed:\x20\"a:0\"\n\x20\x20\x20feed:\x20\"b:0\"\n\n\x20\x20\
7497    \x20fetch:\x20\"x:0\"\n\x20\x20\x20fetch:\x20\"y:0\"\n\n\x20\x20\x20feed\
7498    _devices:\x20{\n\x20\x20\x20\x20\x20\"a:0\":\x20\"/job:localhost/replica\
7499    :0/task:0/device:GPU:0\"\n\x20\x20\x20}\n\n\x20\x20\x20fetch_devices:\
7500    \x20{\n\x20\x20\x20\x20\x20\"y:0\":\x20\"/job:localhost/replica:0/task:0\
7501    /device:GPU:0\"\n\x20\x20}\n\x20}\n\n\x20means\x20that\x20the\x20Callabl\
7502    e\x20expects:\n\x20-\x20The\x20first\x20argument\x20(\"a:0\")\x20is\x20a\
7503    \x20Tensor\x20backed\x20by\x20GPU\x20memory.\n\x20-\x20The\x20second\x20\
7504    argument\x20(\"b:0\")\x20is\x20a\x20Tensor\x20backed\x20by\x20host\x20me\
7505    mory.\n\x20and\x20of\x20its\x20return\x20values:\n\x20-\x20The\x20first\
7506    \x20output\x20(\"x:0\")\x20will\x20be\x20backed\x20by\x20host\x20memory.\
7507    \n\x20-\x20The\x20second\x20output\x20(\"y:0\")\x20will\x20be\x20backed\
7508    \x20by\x20GPU\x20memory.\n\n\x20FEEDS:\n\x20It\x20is\x20the\x20responsib\
7509    ility\x20of\x20the\x20caller\x20to\x20ensure\x20that\x20the\x20memory\
7510    \x20of\x20the\x20fed\n\x20tensors\x20will\x20be\x20correctly\x20initiali\
7511    zed\x20and\x20synchronized\x20before\x20it\x20is\n\x20accessed\x20by\x20\
7512    operations\x20executed\x20during\x20the\x20call\x20to\x20Session::RunCal\
7513    lable().\n\n\x20This\x20is\x20typically\x20ensured\x20by\x20using\x20the\
7514    \x20TensorFlow\x20memory\x20allocators\n\x20(Device::GetAllocator())\x20\
7515    to\x20create\x20the\x20Tensor\x20to\x20be\x20fed.\n\n\x20Alternatively,\
7516    \x20for\x20CUDA-enabled\x20GPU\x20devices,\x20this\x20typically\x20means\
7517    \x20that\x20the\n\x20operation\x20that\x20produced\x20the\x20contents\
7518    \x20of\x20the\x20tensor\x20has\x20completed,\x20i.e.,\x20the\n\x20CUDA\
7519    \x20stream\x20has\x20been\x20synchronized\x20(e.g.,\x20via\x20cuCtxSynch\
7520    ronize()\x20or\n\x20cuStreamSynchronize()).\n\n\r\n\x05\x04\n\x02\x05\
7521    \x06\x12\x04\x97\x06\x02\x15\n\r\n\x05\x04\n\x02\x05\x01\x12\x04\x97\x06\
7522    \x16\"\n\r\n\x05\x04\n\x02\x05\x03\x12\x04\x97\x06%&\n\x0c\n\x04\x04\n\
7523    \x02\x06\x12\x04\x98\x06\x02(\n\r\n\x05\x04\n\x02\x06\x06\x12\x04\x98\
7524    \x06\x02\x15\n\r\n\x05\x04\n\x02\x06\x01\x12\x04\x98\x06\x16#\n\r\n\x05\
7525    \x04\n\x02\x06\x03\x12\x04\x98\x06&'\n\xf5\x04\n\x04\x04\n\x02\x07\x12\
7526    \x04\xa4\x06\x02\x1b\x1a\xe6\x04\x20By\x20default,\x20RunCallable()\x20w\
7527    ill\x20synchronize\x20the\x20GPU\x20stream\x20before\x20returning\n\x20f\
7528    etched\x20tensors\x20on\x20a\x20GPU\x20device,\x20to\x20ensure\x20that\
7529    \x20the\x20values\x20in\x20those\x20tensors\n\x20have\x20been\x20produce\
7530    d.\x20This\x20simplifies\x20interacting\x20with\x20the\x20tensors,\x20bu\
7531    t\n\x20potentially\x20incurs\x20a\x20performance\x20hit.\n\n\x20If\x20th\
7532    is\x20options\x20is\x20set\x20to\x20true,\x20the\x20caller\x20is\x20resp\
7533    onsible\x20for\x20ensuring\n\x20that\x20the\x20values\x20in\x20the\x20fe\
7534    tched\x20tensors\x20have\x20been\x20produced\x20before\x20they\x20are\n\
7535    \x20used.\x20The\x20caller\x20can\x20do\x20this\x20by\x20invoking\x20`De\
7536    vice::Sync()`\x20on\x20the\x20underlying\n\x20device(s),\x20or\x20by\x20\
7537    feeding\x20the\x20tensors\x20back\x20to\x20the\x20same\x20Session\x20usi\
7538    ng\n\x20`feed_devices`\x20with\x20the\x20same\x20corresponding\x20device\
7539    \x20name.\n\n\r\n\x05\x04\n\x02\x07\x05\x12\x04\xa4\x06\x02\x06\n\r\n\
7540    \x05\x04\n\x02\x07\x01\x12\x04\xa4\x06\x07\x16\n\r\n\x05\x04\n\x02\x07\
7541    \x03\x12\x04\xa4\x06\x19\x1ab\x06proto3\
7542";
7543
7544static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy::INIT;
7545
7546fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
7547    ::protobuf::parse_from_bytes(file_descriptor_proto_data).unwrap()
7548}
7549
7550pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
7551    unsafe {
7552        file_descriptor_proto_lazy.get(|| {
7553            parse_descriptor_proto()
7554        })
7555    }
7556}