#![allow(unknown_lints)]
#![allow(clippy::all)]
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(box_pointers)]
#![allow(dead_code)]
#![allow(missing_docs)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(non_upper_case_globals)]
#![allow(trivial_casts)]
#![allow(unsafe_code)]
#![allow(unused_imports)]
#![allow(unused_results)]
use protobuf::Message as Message_imported_for_functions;
use protobuf::ProtobufEnum as ProtobufEnum_imported_for_functions;
#[derive(PartialEq,Clone,Default)]
pub struct AutoParallelOptions {
pub enable: bool,
pub num_replicas: i32,
pub unknown_fields: ::protobuf::UnknownFields,
pub cached_size: ::protobuf::CachedSize,
}
impl<'a> ::std::default::Default for &'a AutoParallelOptions {
fn default() -> &'a AutoParallelOptions {
<AutoParallelOptions as ::protobuf::Message>::default_instance()
}
}
impl AutoParallelOptions {
pub fn new() -> AutoParallelOptions {
::std::default::Default::default()
}
pub fn get_enable(&self) -> bool {
self.enable
}
pub fn clear_enable(&mut self) {
self.enable = false;
}
pub fn set_enable(&mut self, v: bool) {
self.enable = v;
}
pub fn get_num_replicas(&self) -> i32 {
self.num_replicas
}
pub fn clear_num_replicas(&mut self) {
self.num_replicas = 0;
}
pub fn set_num_replicas(&mut self, v: i32) {
self.num_replicas = v;
}
}
impl ::protobuf::Message for AutoParallelOptions {
fn is_initialized(&self) -> bool {
true
}
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
while !is.eof()? {
let (field_number, wire_type) = is.read_tag_unpack()?;
match field_number {
1 => {
if wire_type != ::protobuf::wire_format::WireTypeVarint {
return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
}
let tmp = is.read_bool()?;
self.enable = tmp;
},
2 => {
if wire_type != ::protobuf::wire_format::WireTypeVarint {
return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
}
let tmp = is.read_int32()?;
self.num_replicas = tmp;
},
_ => {
::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
},
};
}
::std::result::Result::Ok(())
}
#[allow(unused_variables)]
fn compute_size(&self) -> u32 {
let mut my_size = 0;
if self.enable != false {
my_size += 2;
}
if self.num_replicas != 0 {
my_size += ::protobuf::rt::value_size(2, self.num_replicas, ::protobuf::wire_format::WireTypeVarint);
}
my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
self.cached_size.set(my_size);
my_size
}
fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
if self.enable != false {
os.write_bool(1, self.enable)?;
}
if self.num_replicas != 0 {
os.write_int32(2, self.num_replicas)?;
}
os.write_unknown_fields(self.get_unknown_fields())?;
::std::result::Result::Ok(())
}
fn get_cached_size(&self) -> u32 {
self.cached_size.get()
}
fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
&self.unknown_fields
}
fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
&mut self.unknown_fields
}
fn as_any(&self) -> &dyn (::std::any::Any) {
self as &dyn (::std::any::Any)
}
fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
self as &mut dyn (::std::any::Any)
}
fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
self
}
fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
Self::descriptor_static()
}
fn new() -> AutoParallelOptions {
AutoParallelOptions::new()
}
fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
unsafe {
descriptor.get(|| {
let mut fields = ::std::vec::Vec::new();
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
"enable",
|m: &AutoParallelOptions| { &m.enable },
|m: &mut AutoParallelOptions| { &mut m.enable },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
"num_replicas",
|m: &AutoParallelOptions| { &m.num_replicas },
|m: &mut AutoParallelOptions| { &mut m.num_replicas },
));
::protobuf::reflect::MessageDescriptor::new_pb_name::<AutoParallelOptions>(
"AutoParallelOptions",
fields,
file_descriptor_proto()
)
})
}
}
fn default_instance() -> &'static AutoParallelOptions {
static mut instance: ::protobuf::lazy::Lazy<AutoParallelOptions> = ::protobuf::lazy::Lazy::INIT;
unsafe {
instance.get(AutoParallelOptions::new)
}
}
}
impl ::protobuf::Clear for AutoParallelOptions {
fn clear(&mut self) {
self.enable = false;
self.num_replicas = 0;
self.unknown_fields.clear();
}
}
impl ::std::fmt::Debug for AutoParallelOptions {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for AutoParallelOptions {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Message(self)
}
}
#[derive(PartialEq,Clone,Default)]
pub struct ScopedAllocatorOptions {
pub enable_op: ::protobuf::RepeatedField<::std::string::String>,
pub unknown_fields: ::protobuf::UnknownFields,
pub cached_size: ::protobuf::CachedSize,
}
impl<'a> ::std::default::Default for &'a ScopedAllocatorOptions {
fn default() -> &'a ScopedAllocatorOptions {
<ScopedAllocatorOptions as ::protobuf::Message>::default_instance()
}
}
impl ScopedAllocatorOptions {
pub fn new() -> ScopedAllocatorOptions {
::std::default::Default::default()
}
pub fn get_enable_op(&self) -> &[::std::string::String] {
&self.enable_op
}
pub fn clear_enable_op(&mut self) {
self.enable_op.clear();
}
pub fn set_enable_op(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
self.enable_op = v;
}
pub fn mut_enable_op(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
&mut self.enable_op
}
pub fn take_enable_op(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
::std::mem::replace(&mut self.enable_op, ::protobuf::RepeatedField::new())
}
}
impl ::protobuf::Message for ScopedAllocatorOptions {
fn is_initialized(&self) -> bool {
true
}
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
while !is.eof()? {
let (field_number, wire_type) = is.read_tag_unpack()?;
match field_number {
1 => {
::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.enable_op)?;
},
_ => {
::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
},
};
}
::std::result::Result::Ok(())
}
#[allow(unused_variables)]
fn compute_size(&self) -> u32 {
let mut my_size = 0;
for value in &self.enable_op {
my_size += ::protobuf::rt::string_size(1, &value);
};
my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
self.cached_size.set(my_size);
my_size
}
fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
for v in &self.enable_op {
os.write_string(1, &v)?;
};
os.write_unknown_fields(self.get_unknown_fields())?;
::std::result::Result::Ok(())
}
fn get_cached_size(&self) -> u32 {
self.cached_size.get()
}
fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
&self.unknown_fields
}
fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
&mut self.unknown_fields
}
fn as_any(&self) -> &dyn (::std::any::Any) {
self as &dyn (::std::any::Any)
}
fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
self as &mut dyn (::std::any::Any)
}
fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
self
}
fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
Self::descriptor_static()
}
fn new() -> ScopedAllocatorOptions {
ScopedAllocatorOptions::new()
}
fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
unsafe {
descriptor.get(|| {
let mut fields = ::std::vec::Vec::new();
fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"enable_op",
|m: &ScopedAllocatorOptions| { &m.enable_op },
|m: &mut ScopedAllocatorOptions| { &mut m.enable_op },
));
::protobuf::reflect::MessageDescriptor::new_pb_name::<ScopedAllocatorOptions>(
"ScopedAllocatorOptions",
fields,
file_descriptor_proto()
)
})
}
}
fn default_instance() -> &'static ScopedAllocatorOptions {
static mut instance: ::protobuf::lazy::Lazy<ScopedAllocatorOptions> = ::protobuf::lazy::Lazy::INIT;
unsafe {
instance.get(ScopedAllocatorOptions::new)
}
}
}
impl ::protobuf::Clear for ScopedAllocatorOptions {
fn clear(&mut self) {
self.enable_op.clear();
self.unknown_fields.clear();
}
}
impl ::std::fmt::Debug for ScopedAllocatorOptions {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for ScopedAllocatorOptions {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Message(self)
}
}
#[derive(PartialEq,Clone,Default)]
pub struct RewriterConfig {
pub layout_optimizer: RewriterConfig_Toggle,
pub constant_folding: RewriterConfig_Toggle,
pub shape_optimization: RewriterConfig_Toggle,
pub remapping: RewriterConfig_Toggle,
pub arithmetic_optimization: RewriterConfig_Toggle,
pub dependency_optimization: RewriterConfig_Toggle,
pub loop_optimization: RewriterConfig_Toggle,
pub function_optimization: RewriterConfig_Toggle,
pub debug_stripper: RewriterConfig_Toggle,
pub disable_model_pruning: bool,
pub scoped_allocator_optimization: RewriterConfig_Toggle,
pub pin_to_host_optimization: RewriterConfig_Toggle,
pub implementation_selector: RewriterConfig_Toggle,
pub auto_mixed_precision: RewriterConfig_Toggle,
pub disable_meta_optimizer: bool,
pub meta_optimizer_iterations: RewriterConfig_NumIterationsType,
pub min_graph_nodes: i32,
pub memory_optimization: RewriterConfig_MemOptType,
pub memory_optimizer_target_node_name_scope: ::std::string::String,
pub meta_optimizer_timeout_ms: i64,
pub auto_parallel: ::protobuf::SingularPtrField<AutoParallelOptions>,
pub fail_on_optimizer_errors: bool,
pub scoped_allocator_opts: ::protobuf::SingularPtrField<ScopedAllocatorOptions>,
pub optimizers: ::protobuf::RepeatedField<::std::string::String>,
pub custom_optimizers: ::protobuf::RepeatedField<RewriterConfig_CustomGraphOptimizer>,
pub inter_optimizer_verifier_config: ::protobuf::SingularPtrField<super::verifier_config::VerifierConfig>,
pub post_optimization_verifier_config: ::protobuf::SingularPtrField<super::verifier_config::VerifierConfig>,
pub unknown_fields: ::protobuf::UnknownFields,
pub cached_size: ::protobuf::CachedSize,
}
impl<'a> ::std::default::Default for &'a RewriterConfig {
fn default() -> &'a RewriterConfig {
<RewriterConfig as ::protobuf::Message>::default_instance()
}
}
impl RewriterConfig {
pub fn new() -> RewriterConfig {
::std::default::Default::default()
}
pub fn get_layout_optimizer(&self) -> RewriterConfig_Toggle {
self.layout_optimizer
}
pub fn clear_layout_optimizer(&mut self) {
self.layout_optimizer = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_layout_optimizer(&mut self, v: RewriterConfig_Toggle) {
self.layout_optimizer = v;
}
pub fn get_constant_folding(&self) -> RewriterConfig_Toggle {
self.constant_folding
}
pub fn clear_constant_folding(&mut self) {
self.constant_folding = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_constant_folding(&mut self, v: RewriterConfig_Toggle) {
self.constant_folding = v;
}
pub fn get_shape_optimization(&self) -> RewriterConfig_Toggle {
self.shape_optimization
}
pub fn clear_shape_optimization(&mut self) {
self.shape_optimization = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_shape_optimization(&mut self, v: RewriterConfig_Toggle) {
self.shape_optimization = v;
}
pub fn get_remapping(&self) -> RewriterConfig_Toggle {
self.remapping
}
pub fn clear_remapping(&mut self) {
self.remapping = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_remapping(&mut self, v: RewriterConfig_Toggle) {
self.remapping = v;
}
pub fn get_arithmetic_optimization(&self) -> RewriterConfig_Toggle {
self.arithmetic_optimization
}
pub fn clear_arithmetic_optimization(&mut self) {
self.arithmetic_optimization = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_arithmetic_optimization(&mut self, v: RewriterConfig_Toggle) {
self.arithmetic_optimization = v;
}
pub fn get_dependency_optimization(&self) -> RewriterConfig_Toggle {
self.dependency_optimization
}
pub fn clear_dependency_optimization(&mut self) {
self.dependency_optimization = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_dependency_optimization(&mut self, v: RewriterConfig_Toggle) {
self.dependency_optimization = v;
}
pub fn get_loop_optimization(&self) -> RewriterConfig_Toggle {
self.loop_optimization
}
pub fn clear_loop_optimization(&mut self) {
self.loop_optimization = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_loop_optimization(&mut self, v: RewriterConfig_Toggle) {
self.loop_optimization = v;
}
pub fn get_function_optimization(&self) -> RewriterConfig_Toggle {
self.function_optimization
}
pub fn clear_function_optimization(&mut self) {
self.function_optimization = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_function_optimization(&mut self, v: RewriterConfig_Toggle) {
self.function_optimization = v;
}
pub fn get_debug_stripper(&self) -> RewriterConfig_Toggle {
self.debug_stripper
}
pub fn clear_debug_stripper(&mut self) {
self.debug_stripper = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_debug_stripper(&mut self, v: RewriterConfig_Toggle) {
self.debug_stripper = v;
}
pub fn get_disable_model_pruning(&self) -> bool {
self.disable_model_pruning
}
pub fn clear_disable_model_pruning(&mut self) {
self.disable_model_pruning = false;
}
pub fn set_disable_model_pruning(&mut self, v: bool) {
self.disable_model_pruning = v;
}
pub fn get_scoped_allocator_optimization(&self) -> RewriterConfig_Toggle {
self.scoped_allocator_optimization
}
pub fn clear_scoped_allocator_optimization(&mut self) {
self.scoped_allocator_optimization = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_scoped_allocator_optimization(&mut self, v: RewriterConfig_Toggle) {
self.scoped_allocator_optimization = v;
}
pub fn get_pin_to_host_optimization(&self) -> RewriterConfig_Toggle {
self.pin_to_host_optimization
}
pub fn clear_pin_to_host_optimization(&mut self) {
self.pin_to_host_optimization = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_pin_to_host_optimization(&mut self, v: RewriterConfig_Toggle) {
self.pin_to_host_optimization = v;
}
pub fn get_implementation_selector(&self) -> RewriterConfig_Toggle {
self.implementation_selector
}
pub fn clear_implementation_selector(&mut self) {
self.implementation_selector = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_implementation_selector(&mut self, v: RewriterConfig_Toggle) {
self.implementation_selector = v;
}
pub fn get_auto_mixed_precision(&self) -> RewriterConfig_Toggle {
self.auto_mixed_precision
}
pub fn clear_auto_mixed_precision(&mut self) {
self.auto_mixed_precision = RewriterConfig_Toggle::DEFAULT;
}
pub fn set_auto_mixed_precision(&mut self, v: RewriterConfig_Toggle) {
self.auto_mixed_precision = v;
}
pub fn get_disable_meta_optimizer(&self) -> bool {
self.disable_meta_optimizer
}
pub fn clear_disable_meta_optimizer(&mut self) {
self.disable_meta_optimizer = false;
}
pub fn set_disable_meta_optimizer(&mut self, v: bool) {
self.disable_meta_optimizer = v;
}
pub fn get_meta_optimizer_iterations(&self) -> RewriterConfig_NumIterationsType {
self.meta_optimizer_iterations
}
pub fn clear_meta_optimizer_iterations(&mut self) {
self.meta_optimizer_iterations = RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS;
}
pub fn set_meta_optimizer_iterations(&mut self, v: RewriterConfig_NumIterationsType) {
self.meta_optimizer_iterations = v;
}
pub fn get_min_graph_nodes(&self) -> i32 {
self.min_graph_nodes
}
pub fn clear_min_graph_nodes(&mut self) {
self.min_graph_nodes = 0;
}
pub fn set_min_graph_nodes(&mut self, v: i32) {
self.min_graph_nodes = v;
}
pub fn get_memory_optimization(&self) -> RewriterConfig_MemOptType {
self.memory_optimization
}
pub fn clear_memory_optimization(&mut self) {
self.memory_optimization = RewriterConfig_MemOptType::DEFAULT_MEM_OPT;
}
pub fn set_memory_optimization(&mut self, v: RewriterConfig_MemOptType) {
self.memory_optimization = v;
}
pub fn get_memory_optimizer_target_node_name_scope(&self) -> &str {
&self.memory_optimizer_target_node_name_scope
}
pub fn clear_memory_optimizer_target_node_name_scope(&mut self) {
self.memory_optimizer_target_node_name_scope.clear();
}
pub fn set_memory_optimizer_target_node_name_scope(&mut self, v: ::std::string::String) {
self.memory_optimizer_target_node_name_scope = v;
}
pub fn mut_memory_optimizer_target_node_name_scope(&mut self) -> &mut ::std::string::String {
&mut self.memory_optimizer_target_node_name_scope
}
pub fn take_memory_optimizer_target_node_name_scope(&mut self) -> ::std::string::String {
::std::mem::replace(&mut self.memory_optimizer_target_node_name_scope, ::std::string::String::new())
}
pub fn get_meta_optimizer_timeout_ms(&self) -> i64 {
self.meta_optimizer_timeout_ms
}
pub fn clear_meta_optimizer_timeout_ms(&mut self) {
self.meta_optimizer_timeout_ms = 0;
}
pub fn set_meta_optimizer_timeout_ms(&mut self, v: i64) {
self.meta_optimizer_timeout_ms = v;
}
pub fn get_auto_parallel(&self) -> &AutoParallelOptions {
self.auto_parallel.as_ref().unwrap_or_else(|| AutoParallelOptions::default_instance())
}
pub fn clear_auto_parallel(&mut self) {
self.auto_parallel.clear();
}
pub fn has_auto_parallel(&self) -> bool {
self.auto_parallel.is_some()
}
pub fn set_auto_parallel(&mut self, v: AutoParallelOptions) {
self.auto_parallel = ::protobuf::SingularPtrField::some(v);
}
pub fn mut_auto_parallel(&mut self) -> &mut AutoParallelOptions {
if self.auto_parallel.is_none() {
self.auto_parallel.set_default();
}
self.auto_parallel.as_mut().unwrap()
}
pub fn take_auto_parallel(&mut self) -> AutoParallelOptions {
self.auto_parallel.take().unwrap_or_else(|| AutoParallelOptions::new())
}
pub fn get_fail_on_optimizer_errors(&self) -> bool {
self.fail_on_optimizer_errors
}
pub fn clear_fail_on_optimizer_errors(&mut self) {
self.fail_on_optimizer_errors = false;
}
pub fn set_fail_on_optimizer_errors(&mut self, v: bool) {
self.fail_on_optimizer_errors = v;
}
pub fn get_scoped_allocator_opts(&self) -> &ScopedAllocatorOptions {
self.scoped_allocator_opts.as_ref().unwrap_or_else(|| ScopedAllocatorOptions::default_instance())
}
pub fn clear_scoped_allocator_opts(&mut self) {
self.scoped_allocator_opts.clear();
}
pub fn has_scoped_allocator_opts(&self) -> bool {
self.scoped_allocator_opts.is_some()
}
pub fn set_scoped_allocator_opts(&mut self, v: ScopedAllocatorOptions) {
self.scoped_allocator_opts = ::protobuf::SingularPtrField::some(v);
}
pub fn mut_scoped_allocator_opts(&mut self) -> &mut ScopedAllocatorOptions {
if self.scoped_allocator_opts.is_none() {
self.scoped_allocator_opts.set_default();
}
self.scoped_allocator_opts.as_mut().unwrap()
}
pub fn take_scoped_allocator_opts(&mut self) -> ScopedAllocatorOptions {
self.scoped_allocator_opts.take().unwrap_or_else(|| ScopedAllocatorOptions::new())
}
pub fn get_optimizers(&self) -> &[::std::string::String] {
&self.optimizers
}
pub fn clear_optimizers(&mut self) {
self.optimizers.clear();
}
pub fn set_optimizers(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
self.optimizers = v;
}
pub fn mut_optimizers(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
&mut self.optimizers
}
pub fn take_optimizers(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
::std::mem::replace(&mut self.optimizers, ::protobuf::RepeatedField::new())
}
pub fn get_custom_optimizers(&self) -> &[RewriterConfig_CustomGraphOptimizer] {
&self.custom_optimizers
}
pub fn clear_custom_optimizers(&mut self) {
self.custom_optimizers.clear();
}
pub fn set_custom_optimizers(&mut self, v: ::protobuf::RepeatedField<RewriterConfig_CustomGraphOptimizer>) {
self.custom_optimizers = v;
}
pub fn mut_custom_optimizers(&mut self) -> &mut ::protobuf::RepeatedField<RewriterConfig_CustomGraphOptimizer> {
&mut self.custom_optimizers
}
pub fn take_custom_optimizers(&mut self) -> ::protobuf::RepeatedField<RewriterConfig_CustomGraphOptimizer> {
::std::mem::replace(&mut self.custom_optimizers, ::protobuf::RepeatedField::new())
}
pub fn get_inter_optimizer_verifier_config(&self) -> &super::verifier_config::VerifierConfig {
self.inter_optimizer_verifier_config.as_ref().unwrap_or_else(|| super::verifier_config::VerifierConfig::default_instance())
}
pub fn clear_inter_optimizer_verifier_config(&mut self) {
self.inter_optimizer_verifier_config.clear();
}
pub fn has_inter_optimizer_verifier_config(&self) -> bool {
self.inter_optimizer_verifier_config.is_some()
}
pub fn set_inter_optimizer_verifier_config(&mut self, v: super::verifier_config::VerifierConfig) {
self.inter_optimizer_verifier_config = ::protobuf::SingularPtrField::some(v);
}
pub fn mut_inter_optimizer_verifier_config(&mut self) -> &mut super::verifier_config::VerifierConfig {
if self.inter_optimizer_verifier_config.is_none() {
self.inter_optimizer_verifier_config.set_default();
}
self.inter_optimizer_verifier_config.as_mut().unwrap()
}
pub fn take_inter_optimizer_verifier_config(&mut self) -> super::verifier_config::VerifierConfig {
self.inter_optimizer_verifier_config.take().unwrap_or_else(|| super::verifier_config::VerifierConfig::new())
}
pub fn get_post_optimization_verifier_config(&self) -> &super::verifier_config::VerifierConfig {
self.post_optimization_verifier_config.as_ref().unwrap_or_else(|| super::verifier_config::VerifierConfig::default_instance())
}
pub fn clear_post_optimization_verifier_config(&mut self) {
self.post_optimization_verifier_config.clear();
}
pub fn has_post_optimization_verifier_config(&self) -> bool {
self.post_optimization_verifier_config.is_some()
}
pub fn set_post_optimization_verifier_config(&mut self, v: super::verifier_config::VerifierConfig) {
self.post_optimization_verifier_config = ::protobuf::SingularPtrField::some(v);
}
pub fn mut_post_optimization_verifier_config(&mut self) -> &mut super::verifier_config::VerifierConfig {
if self.post_optimization_verifier_config.is_none() {
self.post_optimization_verifier_config.set_default();
}
self.post_optimization_verifier_config.as_mut().unwrap()
}
pub fn take_post_optimization_verifier_config(&mut self) -> super::verifier_config::VerifierConfig {
self.post_optimization_verifier_config.take().unwrap_or_else(|| super::verifier_config::VerifierConfig::new())
}
}
impl ::protobuf::Message for RewriterConfig {
fn is_initialized(&self) -> bool {
for v in &self.auto_parallel {
if !v.is_initialized() {
return false;
}
};
for v in &self.scoped_allocator_opts {
if !v.is_initialized() {
return false;
}
};
for v in &self.custom_optimizers {
if !v.is_initialized() {
return false;
}
};
for v in &self.inter_optimizer_verifier_config {
if !v.is_initialized() {
return false;
}
};
for v in &self.post_optimization_verifier_config {
if !v.is_initialized() {
return false;
}
};
true
}
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
while !is.eof()? {
let (field_number, wire_type) = is.read_tag_unpack()?;
match field_number {
1 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.layout_optimizer, 1, &mut self.unknown_fields)?
},
3 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.constant_folding, 3, &mut self.unknown_fields)?
},
13 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.shape_optimization, 13, &mut self.unknown_fields)?
},
14 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.remapping, 14, &mut self.unknown_fields)?
},
7 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.arithmetic_optimization, 7, &mut self.unknown_fields)?
},
8 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.dependency_optimization, 8, &mut self.unknown_fields)?
},
9 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.loop_optimization, 9, &mut self.unknown_fields)?
},
10 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.function_optimization, 10, &mut self.unknown_fields)?
},
11 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.debug_stripper, 11, &mut self.unknown_fields)?
},
2 => {
if wire_type != ::protobuf::wire_format::WireTypeVarint {
return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
}
let tmp = is.read_bool()?;
self.disable_model_pruning = tmp;
},
15 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.scoped_allocator_optimization, 15, &mut self.unknown_fields)?
},
18 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.pin_to_host_optimization, 18, &mut self.unknown_fields)?
},
22 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.implementation_selector, 22, &mut self.unknown_fields)?
},
23 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.auto_mixed_precision, 23, &mut self.unknown_fields)?
},
19 => {
if wire_type != ::protobuf::wire_format::WireTypeVarint {
return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
}
let tmp = is.read_bool()?;
self.disable_meta_optimizer = tmp;
},
12 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.meta_optimizer_iterations, 12, &mut self.unknown_fields)?
},
17 => {
if wire_type != ::protobuf::wire_format::WireTypeVarint {
return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
}
let tmp = is.read_int32()?;
self.min_graph_nodes = tmp;
},
4 => {
::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.memory_optimization, 4, &mut self.unknown_fields)?
},
6 => {
::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.memory_optimizer_target_node_name_scope)?;
},
20 => {
if wire_type != ::protobuf::wire_format::WireTypeVarint {
return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
}
let tmp = is.read_int64()?;
self.meta_optimizer_timeout_ms = tmp;
},
5 => {
::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.auto_parallel)?;
},
21 => {
if wire_type != ::protobuf::wire_format::WireTypeVarint {
return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
}
let tmp = is.read_bool()?;
self.fail_on_optimizer_errors = tmp;
},
16 => {
::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.scoped_allocator_opts)?;
},
100 => {
::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.optimizers)?;
},
200 => {
::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.custom_optimizers)?;
},
300 => {
::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.inter_optimizer_verifier_config)?;
},
301 => {
::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.post_optimization_verifier_config)?;
},
_ => {
::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
},
};
}
::std::result::Result::Ok(())
}
#[allow(unused_variables)]
fn compute_size(&self) -> u32 {
let mut my_size = 0;
if self.layout_optimizer != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(1, self.layout_optimizer);
}
if self.constant_folding != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(3, self.constant_folding);
}
if self.shape_optimization != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(13, self.shape_optimization);
}
if self.remapping != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(14, self.remapping);
}
if self.arithmetic_optimization != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(7, self.arithmetic_optimization);
}
if self.dependency_optimization != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(8, self.dependency_optimization);
}
if self.loop_optimization != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(9, self.loop_optimization);
}
if self.function_optimization != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(10, self.function_optimization);
}
if self.debug_stripper != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(11, self.debug_stripper);
}
if self.disable_model_pruning != false {
my_size += 2;
}
if self.scoped_allocator_optimization != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(15, self.scoped_allocator_optimization);
}
if self.pin_to_host_optimization != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(18, self.pin_to_host_optimization);
}
if self.implementation_selector != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(22, self.implementation_selector);
}
if self.auto_mixed_precision != RewriterConfig_Toggle::DEFAULT {
my_size += ::protobuf::rt::enum_size(23, self.auto_mixed_precision);
}
if self.disable_meta_optimizer != false {
my_size += 3;
}
if self.meta_optimizer_iterations != RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS {
my_size += ::protobuf::rt::enum_size(12, self.meta_optimizer_iterations);
}
if self.min_graph_nodes != 0 {
my_size += ::protobuf::rt::value_size(17, self.min_graph_nodes, ::protobuf::wire_format::WireTypeVarint);
}
if self.memory_optimization != RewriterConfig_MemOptType::DEFAULT_MEM_OPT {
my_size += ::protobuf::rt::enum_size(4, self.memory_optimization);
}
if !self.memory_optimizer_target_node_name_scope.is_empty() {
my_size += ::protobuf::rt::string_size(6, &self.memory_optimizer_target_node_name_scope);
}
if self.meta_optimizer_timeout_ms != 0 {
my_size += ::protobuf::rt::value_size(20, self.meta_optimizer_timeout_ms, ::protobuf::wire_format::WireTypeVarint);
}
if let Some(ref v) = self.auto_parallel.as_ref() {
let len = v.compute_size();
my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
}
if self.fail_on_optimizer_errors != false {
my_size += 3;
}
if let Some(ref v) = self.scoped_allocator_opts.as_ref() {
let len = v.compute_size();
my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
}
for value in &self.optimizers {
my_size += ::protobuf::rt::string_size(100, &value);
};
for value in &self.custom_optimizers {
let len = value.compute_size();
my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
};
if let Some(ref v) = self.inter_optimizer_verifier_config.as_ref() {
let len = v.compute_size();
my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
}
if let Some(ref v) = self.post_optimization_verifier_config.as_ref() {
let len = v.compute_size();
my_size += 2 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
}
my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
self.cached_size.set(my_size);
my_size
}
fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
if self.layout_optimizer != RewriterConfig_Toggle::DEFAULT {
os.write_enum(1, self.layout_optimizer.value())?;
}
if self.constant_folding != RewriterConfig_Toggle::DEFAULT {
os.write_enum(3, self.constant_folding.value())?;
}
if self.shape_optimization != RewriterConfig_Toggle::DEFAULT {
os.write_enum(13, self.shape_optimization.value())?;
}
if self.remapping != RewriterConfig_Toggle::DEFAULT {
os.write_enum(14, self.remapping.value())?;
}
if self.arithmetic_optimization != RewriterConfig_Toggle::DEFAULT {
os.write_enum(7, self.arithmetic_optimization.value())?;
}
if self.dependency_optimization != RewriterConfig_Toggle::DEFAULT {
os.write_enum(8, self.dependency_optimization.value())?;
}
if self.loop_optimization != RewriterConfig_Toggle::DEFAULT {
os.write_enum(9, self.loop_optimization.value())?;
}
if self.function_optimization != RewriterConfig_Toggle::DEFAULT {
os.write_enum(10, self.function_optimization.value())?;
}
if self.debug_stripper != RewriterConfig_Toggle::DEFAULT {
os.write_enum(11, self.debug_stripper.value())?;
}
if self.disable_model_pruning != false {
os.write_bool(2, self.disable_model_pruning)?;
}
if self.scoped_allocator_optimization != RewriterConfig_Toggle::DEFAULT {
os.write_enum(15, self.scoped_allocator_optimization.value())?;
}
if self.pin_to_host_optimization != RewriterConfig_Toggle::DEFAULT {
os.write_enum(18, self.pin_to_host_optimization.value())?;
}
if self.implementation_selector != RewriterConfig_Toggle::DEFAULT {
os.write_enum(22, self.implementation_selector.value())?;
}
if self.auto_mixed_precision != RewriterConfig_Toggle::DEFAULT {
os.write_enum(23, self.auto_mixed_precision.value())?;
}
if self.disable_meta_optimizer != false {
os.write_bool(19, self.disable_meta_optimizer)?;
}
if self.meta_optimizer_iterations != RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS {
os.write_enum(12, self.meta_optimizer_iterations.value())?;
}
if self.min_graph_nodes != 0 {
os.write_int32(17, self.min_graph_nodes)?;
}
if self.memory_optimization != RewriterConfig_MemOptType::DEFAULT_MEM_OPT {
os.write_enum(4, self.memory_optimization.value())?;
}
if !self.memory_optimizer_target_node_name_scope.is_empty() {
os.write_string(6, &self.memory_optimizer_target_node_name_scope)?;
}
if self.meta_optimizer_timeout_ms != 0 {
os.write_int64(20, self.meta_optimizer_timeout_ms)?;
}
if let Some(ref v) = self.auto_parallel.as_ref() {
os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
os.write_raw_varint32(v.get_cached_size())?;
v.write_to_with_cached_sizes(os)?;
}
if self.fail_on_optimizer_errors != false {
os.write_bool(21, self.fail_on_optimizer_errors)?;
}
if let Some(ref v) = self.scoped_allocator_opts.as_ref() {
os.write_tag(16, ::protobuf::wire_format::WireTypeLengthDelimited)?;
os.write_raw_varint32(v.get_cached_size())?;
v.write_to_with_cached_sizes(os)?;
}
for v in &self.optimizers {
os.write_string(100, &v)?;
};
for v in &self.custom_optimizers {
os.write_tag(200, ::protobuf::wire_format::WireTypeLengthDelimited)?;
os.write_raw_varint32(v.get_cached_size())?;
v.write_to_with_cached_sizes(os)?;
};
if let Some(ref v) = self.inter_optimizer_verifier_config.as_ref() {
os.write_tag(300, ::protobuf::wire_format::WireTypeLengthDelimited)?;
os.write_raw_varint32(v.get_cached_size())?;
v.write_to_with_cached_sizes(os)?;
}
if let Some(ref v) = self.post_optimization_verifier_config.as_ref() {
os.write_tag(301, ::protobuf::wire_format::WireTypeLengthDelimited)?;
os.write_raw_varint32(v.get_cached_size())?;
v.write_to_with_cached_sizes(os)?;
}
os.write_unknown_fields(self.get_unknown_fields())?;
::std::result::Result::Ok(())
}
fn get_cached_size(&self) -> u32 {
self.cached_size.get()
}
fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
&self.unknown_fields
}
fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
&mut self.unknown_fields
}
fn as_any(&self) -> &dyn (::std::any::Any) {
self as &dyn (::std::any::Any)
}
fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
self as &mut dyn (::std::any::Any)
}
fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
self
}
fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
Self::descriptor_static()
}
fn new() -> RewriterConfig {
RewriterConfig::new()
}
fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
unsafe {
descriptor.get(|| {
let mut fields = ::std::vec::Vec::new();
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"layout_optimizer",
|m: &RewriterConfig| { &m.layout_optimizer },
|m: &mut RewriterConfig| { &mut m.layout_optimizer },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"constant_folding",
|m: &RewriterConfig| { &m.constant_folding },
|m: &mut RewriterConfig| { &mut m.constant_folding },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"shape_optimization",
|m: &RewriterConfig| { &m.shape_optimization },
|m: &mut RewriterConfig| { &mut m.shape_optimization },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"remapping",
|m: &RewriterConfig| { &m.remapping },
|m: &mut RewriterConfig| { &mut m.remapping },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"arithmetic_optimization",
|m: &RewriterConfig| { &m.arithmetic_optimization },
|m: &mut RewriterConfig| { &mut m.arithmetic_optimization },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"dependency_optimization",
|m: &RewriterConfig| { &m.dependency_optimization },
|m: &mut RewriterConfig| { &mut m.dependency_optimization },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"loop_optimization",
|m: &RewriterConfig| { &m.loop_optimization },
|m: &mut RewriterConfig| { &mut m.loop_optimization },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"function_optimization",
|m: &RewriterConfig| { &m.function_optimization },
|m: &mut RewriterConfig| { &mut m.function_optimization },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"debug_stripper",
|m: &RewriterConfig| { &m.debug_stripper },
|m: &mut RewriterConfig| { &mut m.debug_stripper },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
"disable_model_pruning",
|m: &RewriterConfig| { &m.disable_model_pruning },
|m: &mut RewriterConfig| { &mut m.disable_model_pruning },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"scoped_allocator_optimization",
|m: &RewriterConfig| { &m.scoped_allocator_optimization },
|m: &mut RewriterConfig| { &mut m.scoped_allocator_optimization },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"pin_to_host_optimization",
|m: &RewriterConfig| { &m.pin_to_host_optimization },
|m: &mut RewriterConfig| { &mut m.pin_to_host_optimization },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"implementation_selector",
|m: &RewriterConfig| { &m.implementation_selector },
|m: &mut RewriterConfig| { &mut m.implementation_selector },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_Toggle>>(
"auto_mixed_precision",
|m: &RewriterConfig| { &m.auto_mixed_precision },
|m: &mut RewriterConfig| { &mut m.auto_mixed_precision },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
"disable_meta_optimizer",
|m: &RewriterConfig| { &m.disable_meta_optimizer },
|m: &mut RewriterConfig| { &mut m.disable_meta_optimizer },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_NumIterationsType>>(
"meta_optimizer_iterations",
|m: &RewriterConfig| { &m.meta_optimizer_iterations },
|m: &mut RewriterConfig| { &mut m.meta_optimizer_iterations },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
"min_graph_nodes",
|m: &RewriterConfig| { &m.min_graph_nodes },
|m: &mut RewriterConfig| { &mut m.min_graph_nodes },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RewriterConfig_MemOptType>>(
"memory_optimization",
|m: &RewriterConfig| { &m.memory_optimization },
|m: &mut RewriterConfig| { &mut m.memory_optimization },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"memory_optimizer_target_node_name_scope",
|m: &RewriterConfig| { &m.memory_optimizer_target_node_name_scope },
|m: &mut RewriterConfig| { &mut m.memory_optimizer_target_node_name_scope },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
"meta_optimizer_timeout_ms",
|m: &RewriterConfig| { &m.meta_optimizer_timeout_ms },
|m: &mut RewriterConfig| { &mut m.meta_optimizer_timeout_ms },
));
fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<AutoParallelOptions>>(
"auto_parallel",
|m: &RewriterConfig| { &m.auto_parallel },
|m: &mut RewriterConfig| { &mut m.auto_parallel },
));
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
"fail_on_optimizer_errors",
|m: &RewriterConfig| { &m.fail_on_optimizer_errors },
|m: &mut RewriterConfig| { &mut m.fail_on_optimizer_errors },
));
fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ScopedAllocatorOptions>>(
"scoped_allocator_opts",
|m: &RewriterConfig| { &m.scoped_allocator_opts },
|m: &mut RewriterConfig| { &mut m.scoped_allocator_opts },
));
fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"optimizers",
|m: &RewriterConfig| { &m.optimizers },
|m: &mut RewriterConfig| { &mut m.optimizers },
));
fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RewriterConfig_CustomGraphOptimizer>>(
"custom_optimizers",
|m: &RewriterConfig| { &m.custom_optimizers },
|m: &mut RewriterConfig| { &mut m.custom_optimizers },
));
fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::verifier_config::VerifierConfig>>(
"inter_optimizer_verifier_config",
|m: &RewriterConfig| { &m.inter_optimizer_verifier_config },
|m: &mut RewriterConfig| { &mut m.inter_optimizer_verifier_config },
));
fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::verifier_config::VerifierConfig>>(
"post_optimization_verifier_config",
|m: &RewriterConfig| { &m.post_optimization_verifier_config },
|m: &mut RewriterConfig| { &mut m.post_optimization_verifier_config },
));
::protobuf::reflect::MessageDescriptor::new_pb_name::<RewriterConfig>(
"RewriterConfig",
fields,
file_descriptor_proto()
)
})
}
}
fn default_instance() -> &'static RewriterConfig {
static mut instance: ::protobuf::lazy::Lazy<RewriterConfig> = ::protobuf::lazy::Lazy::INIT;
unsafe {
instance.get(RewriterConfig::new)
}
}
}
impl ::protobuf::Clear for RewriterConfig {
fn clear(&mut self) {
self.layout_optimizer = RewriterConfig_Toggle::DEFAULT;
self.constant_folding = RewriterConfig_Toggle::DEFAULT;
self.shape_optimization = RewriterConfig_Toggle::DEFAULT;
self.remapping = RewriterConfig_Toggle::DEFAULT;
self.arithmetic_optimization = RewriterConfig_Toggle::DEFAULT;
self.dependency_optimization = RewriterConfig_Toggle::DEFAULT;
self.loop_optimization = RewriterConfig_Toggle::DEFAULT;
self.function_optimization = RewriterConfig_Toggle::DEFAULT;
self.debug_stripper = RewriterConfig_Toggle::DEFAULT;
self.disable_model_pruning = false;
self.scoped_allocator_optimization = RewriterConfig_Toggle::DEFAULT;
self.pin_to_host_optimization = RewriterConfig_Toggle::DEFAULT;
self.implementation_selector = RewriterConfig_Toggle::DEFAULT;
self.auto_mixed_precision = RewriterConfig_Toggle::DEFAULT;
self.disable_meta_optimizer = false;
self.meta_optimizer_iterations = RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS;
self.min_graph_nodes = 0;
self.memory_optimization = RewriterConfig_MemOptType::DEFAULT_MEM_OPT;
self.memory_optimizer_target_node_name_scope.clear();
self.meta_optimizer_timeout_ms = 0;
self.auto_parallel.clear();
self.fail_on_optimizer_errors = false;
self.scoped_allocator_opts.clear();
self.optimizers.clear();
self.custom_optimizers.clear();
self.inter_optimizer_verifier_config.clear();
self.post_optimization_verifier_config.clear();
self.unknown_fields.clear();
}
}
impl ::std::fmt::Debug for RewriterConfig {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for RewriterConfig {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Message(self)
}
}
#[derive(PartialEq,Clone,Default)]
pub struct RewriterConfig_CustomGraphOptimizer {
pub name: ::std::string::String,
pub parameter_map: ::std::collections::HashMap<::std::string::String, super::attr_value::AttrValue>,
pub unknown_fields: ::protobuf::UnknownFields,
pub cached_size: ::protobuf::CachedSize,
}
impl<'a> ::std::default::Default for &'a RewriterConfig_CustomGraphOptimizer {
fn default() -> &'a RewriterConfig_CustomGraphOptimizer {
<RewriterConfig_CustomGraphOptimizer as ::protobuf::Message>::default_instance()
}
}
impl RewriterConfig_CustomGraphOptimizer {
pub fn new() -> RewriterConfig_CustomGraphOptimizer {
::std::default::Default::default()
}
pub fn get_name(&self) -> &str {
&self.name
}
pub fn clear_name(&mut self) {
self.name.clear();
}
pub fn set_name(&mut self, v: ::std::string::String) {
self.name = v;
}
pub fn mut_name(&mut self) -> &mut ::std::string::String {
&mut self.name
}
pub fn take_name(&mut self) -> ::std::string::String {
::std::mem::replace(&mut self.name, ::std::string::String::new())
}
pub fn get_parameter_map(&self) -> &::std::collections::HashMap<::std::string::String, super::attr_value::AttrValue> {
&self.parameter_map
}
pub fn clear_parameter_map(&mut self) {
self.parameter_map.clear();
}
pub fn set_parameter_map(&mut self, v: ::std::collections::HashMap<::std::string::String, super::attr_value::AttrValue>) {
self.parameter_map = v;
}
pub fn mut_parameter_map(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, super::attr_value::AttrValue> {
&mut self.parameter_map
}
pub fn take_parameter_map(&mut self) -> ::std::collections::HashMap<::std::string::String, super::attr_value::AttrValue> {
::std::mem::replace(&mut self.parameter_map, ::std::collections::HashMap::new())
}
}
impl ::protobuf::Message for RewriterConfig_CustomGraphOptimizer {
fn is_initialized(&self) -> bool {
true
}
fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
while !is.eof()? {
let (field_number, wire_type) = is.read_tag_unpack()?;
match field_number {
1 => {
::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
},
2 => {
::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::attr_value::AttrValue>>(wire_type, is, &mut self.parameter_map)?;
},
_ => {
::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
},
};
}
::std::result::Result::Ok(())
}
#[allow(unused_variables)]
fn compute_size(&self) -> u32 {
let mut my_size = 0;
if !self.name.is_empty() {
my_size += ::protobuf::rt::string_size(1, &self.name);
}
my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::attr_value::AttrValue>>(2, &self.parameter_map);
my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
self.cached_size.set(my_size);
my_size
}
fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
if !self.name.is_empty() {
os.write_string(1, &self.name)?;
}
::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::attr_value::AttrValue>>(2, &self.parameter_map, os)?;
os.write_unknown_fields(self.get_unknown_fields())?;
::std::result::Result::Ok(())
}
fn get_cached_size(&self) -> u32 {
self.cached_size.get()
}
fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
&self.unknown_fields
}
fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
&mut self.unknown_fields
}
fn as_any(&self) -> &dyn (::std::any::Any) {
self as &dyn (::std::any::Any)
}
fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
self as &mut dyn (::std::any::Any)
}
fn into_any(self: Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
self
}
fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
Self::descriptor_static()
}
fn new() -> RewriterConfig_CustomGraphOptimizer {
RewriterConfig_CustomGraphOptimizer::new()
}
fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::MessageDescriptor> = ::protobuf::lazy::Lazy::INIT;
unsafe {
descriptor.get(|| {
let mut fields = ::std::vec::Vec::new();
fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
"name",
|m: &RewriterConfig_CustomGraphOptimizer| { &m.name },
|m: &mut RewriterConfig_CustomGraphOptimizer| { &mut m.name },
));
fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::attr_value::AttrValue>>(
"parameter_map",
|m: &RewriterConfig_CustomGraphOptimizer| { &m.parameter_map },
|m: &mut RewriterConfig_CustomGraphOptimizer| { &mut m.parameter_map },
));
::protobuf::reflect::MessageDescriptor::new_pb_name::<RewriterConfig_CustomGraphOptimizer>(
"RewriterConfig.CustomGraphOptimizer",
fields,
file_descriptor_proto()
)
})
}
}
fn default_instance() -> &'static RewriterConfig_CustomGraphOptimizer {
static mut instance: ::protobuf::lazy::Lazy<RewriterConfig_CustomGraphOptimizer> = ::protobuf::lazy::Lazy::INIT;
unsafe {
instance.get(RewriterConfig_CustomGraphOptimizer::new)
}
}
}
impl ::protobuf::Clear for RewriterConfig_CustomGraphOptimizer {
fn clear(&mut self) {
self.name.clear();
self.parameter_map.clear();
self.unknown_fields.clear();
}
}
impl ::std::fmt::Debug for RewriterConfig_CustomGraphOptimizer {
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
::protobuf::text_format::fmt(self, f)
}
}
impl ::protobuf::reflect::ProtobufValue for RewriterConfig_CustomGraphOptimizer {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Message(self)
}
}
#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum RewriterConfig_Toggle {
DEFAULT = 0,
ON = 1,
OFF = 2,
AGGRESSIVE = 3,
}
impl ::protobuf::ProtobufEnum for RewriterConfig_Toggle {
fn value(&self) -> i32 {
*self as i32
}
fn from_i32(value: i32) -> ::std::option::Option<RewriterConfig_Toggle> {
match value {
0 => ::std::option::Option::Some(RewriterConfig_Toggle::DEFAULT),
1 => ::std::option::Option::Some(RewriterConfig_Toggle::ON),
2 => ::std::option::Option::Some(RewriterConfig_Toggle::OFF),
3 => ::std::option::Option::Some(RewriterConfig_Toggle::AGGRESSIVE),
_ => ::std::option::Option::None
}
}
fn values() -> &'static [Self] {
static values: &'static [RewriterConfig_Toggle] = &[
RewriterConfig_Toggle::DEFAULT,
RewriterConfig_Toggle::ON,
RewriterConfig_Toggle::OFF,
RewriterConfig_Toggle::AGGRESSIVE,
];
values
}
fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy::INIT;
unsafe {
descriptor.get(|| {
::protobuf::reflect::EnumDescriptor::new_pb_name::<RewriterConfig_Toggle>("RewriterConfig.Toggle", file_descriptor_proto())
})
}
}
}
impl ::std::marker::Copy for RewriterConfig_Toggle {
}
impl ::std::default::Default for RewriterConfig_Toggle {
fn default() -> Self {
RewriterConfig_Toggle::DEFAULT
}
}
impl ::protobuf::reflect::ProtobufValue for RewriterConfig_Toggle {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Enum(self.descriptor())
}
}
#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum RewriterConfig_NumIterationsType {
DEFAULT_NUM_ITERS = 0,
ONE = 1,
TWO = 2,
}
impl ::protobuf::ProtobufEnum for RewriterConfig_NumIterationsType {
fn value(&self) -> i32 {
*self as i32
}
fn from_i32(value: i32) -> ::std::option::Option<RewriterConfig_NumIterationsType> {
match value {
0 => ::std::option::Option::Some(RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS),
1 => ::std::option::Option::Some(RewriterConfig_NumIterationsType::ONE),
2 => ::std::option::Option::Some(RewriterConfig_NumIterationsType::TWO),
_ => ::std::option::Option::None
}
}
fn values() -> &'static [Self] {
static values: &'static [RewriterConfig_NumIterationsType] = &[
RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS,
RewriterConfig_NumIterationsType::ONE,
RewriterConfig_NumIterationsType::TWO,
];
values
}
fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy::INIT;
unsafe {
descriptor.get(|| {
::protobuf::reflect::EnumDescriptor::new_pb_name::<RewriterConfig_NumIterationsType>("RewriterConfig.NumIterationsType", file_descriptor_proto())
})
}
}
}
impl ::std::marker::Copy for RewriterConfig_NumIterationsType {
}
impl ::std::default::Default for RewriterConfig_NumIterationsType {
fn default() -> Self {
RewriterConfig_NumIterationsType::DEFAULT_NUM_ITERS
}
}
impl ::protobuf::reflect::ProtobufValue for RewriterConfig_NumIterationsType {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Enum(self.descriptor())
}
}
#[derive(Clone,PartialEq,Eq,Debug,Hash)]
pub enum RewriterConfig_MemOptType {
DEFAULT_MEM_OPT = 0,
NO_MEM_OPT = 1,
MANUAL = 2,
SWAPPING_HEURISTICS = 4,
RECOMPUTATION_HEURISTICS = 5,
SCHEDULING_HEURISTICS = 6,
HEURISTICS = 3,
}
impl ::protobuf::ProtobufEnum for RewriterConfig_MemOptType {
fn value(&self) -> i32 {
*self as i32
}
fn from_i32(value: i32) -> ::std::option::Option<RewriterConfig_MemOptType> {
match value {
0 => ::std::option::Option::Some(RewriterConfig_MemOptType::DEFAULT_MEM_OPT),
1 => ::std::option::Option::Some(RewriterConfig_MemOptType::NO_MEM_OPT),
2 => ::std::option::Option::Some(RewriterConfig_MemOptType::MANUAL),
4 => ::std::option::Option::Some(RewriterConfig_MemOptType::SWAPPING_HEURISTICS),
5 => ::std::option::Option::Some(RewriterConfig_MemOptType::RECOMPUTATION_HEURISTICS),
6 => ::std::option::Option::Some(RewriterConfig_MemOptType::SCHEDULING_HEURISTICS),
3 => ::std::option::Option::Some(RewriterConfig_MemOptType::HEURISTICS),
_ => ::std::option::Option::None
}
}
fn values() -> &'static [Self] {
static values: &'static [RewriterConfig_MemOptType] = &[
RewriterConfig_MemOptType::DEFAULT_MEM_OPT,
RewriterConfig_MemOptType::NO_MEM_OPT,
RewriterConfig_MemOptType::MANUAL,
RewriterConfig_MemOptType::SWAPPING_HEURISTICS,
RewriterConfig_MemOptType::RECOMPUTATION_HEURISTICS,
RewriterConfig_MemOptType::SCHEDULING_HEURISTICS,
RewriterConfig_MemOptType::HEURISTICS,
];
values
}
fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy::INIT;
unsafe {
descriptor.get(|| {
::protobuf::reflect::EnumDescriptor::new_pb_name::<RewriterConfig_MemOptType>("RewriterConfig.MemOptType", file_descriptor_proto())
})
}
}
}
impl ::std::marker::Copy for RewriterConfig_MemOptType {
}
impl ::std::default::Default for RewriterConfig_MemOptType {
fn default() -> Self {
RewriterConfig_MemOptType::DEFAULT_MEM_OPT
}
}
impl ::protobuf::reflect::ProtobufValue for RewriterConfig_MemOptType {
fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
::protobuf::reflect::ReflectValueRef::Enum(self.descriptor())
}
}
static file_descriptor_proto_data: &'static [u8] = b"\
\n.tensorflow/core/protobuf/rewriter_config.proto\x12\ntensorflow\x1a*te\
nsorflow/core/framework/attr_value.proto\x1a.tensorflow/core/protobuf/ve\
rifier_config.proto\"P\n\x13AutoParallelOptions\x12\x16\n\x06enable\x18\
\x01\x20\x01(\x08R\x06enable\x12!\n\x0cnum_replicas\x18\x02\x20\x01(\x05\
R\x0bnumReplicas\"5\n\x16ScopedAllocatorOptions\x12\x1b\n\tenable_op\x18\
\x01\x20\x03(\tR\x08enableOp\"\xe8\x14\n\x0eRewriterConfig\x12L\n\x10lay\
out_optimizer\x18\x01\x20\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\
\x0flayoutOptimizer\x12L\n\x10constant_folding\x18\x03\x20\x01(\x0e2!.te\
nsorflow.RewriterConfig.ToggleR\x0fconstantFolding\x12P\n\x12shape_optim\
ization\x18\r\x20\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\x11shapeO\
ptimization\x12?\n\tremapping\x18\x0e\x20\x01(\x0e2!.tensorflow.Rewriter\
Config.ToggleR\tremapping\x12Z\n\x17arithmetic_optimization\x18\x07\x20\
\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\x16arithmeticOptimization\
\x12Z\n\x17dependency_optimization\x18\x08\x20\x01(\x0e2!.tensorflow.Rew\
riterConfig.ToggleR\x16dependencyOptimization\x12N\n\x11loop_optimizatio\
n\x18\t\x20\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\x10loopOptimiza\
tion\x12V\n\x15function_optimization\x18\n\x20\x01(\x0e2!.tensorflow.Rew\
riterConfig.ToggleR\x14functionOptimization\x12H\n\x0edebug_stripper\x18\
\x0b\x20\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\rdebugStripper\x12\
2\n\x15disable_model_pruning\x18\x02\x20\x01(\x08R\x13disableModelPrunin\
g\x12e\n\x1dscoped_allocator_optimization\x18\x0f\x20\x01(\x0e2!.tensorf\
low.RewriterConfig.ToggleR\x1bscopedAllocatorOptimization\x12Z\n\x18pin_\
to_host_optimization\x18\x12\x20\x01(\x0e2!.tensorflow.RewriterConfig.To\
ggleR\x15pinToHostOptimization\x12Z\n\x17implementation_selector\x18\x16\
\x20\x01(\x0e2!.tensorflow.RewriterConfig.ToggleR\x16implementationSelec\
tor\x12S\n\x14auto_mixed_precision\x18\x17\x20\x01(\x0e2!.tensorflow.Rew\
riterConfig.ToggleR\x12autoMixedPrecision\x124\n\x16disable_meta_optimiz\
er\x18\x13\x20\x01(\x08R\x14disableMetaOptimizer\x12h\n\x19meta_optimize\
r_iterations\x18\x0c\x20\x01(\x0e2,.tensorflow.RewriterConfig.NumIterati\
onsTypeR\x17metaOptimizerIterations\x12&\n\x0fmin_graph_nodes\x18\x11\
\x20\x01(\x05R\rminGraphNodes\x12V\n\x13memory_optimization\x18\x04\x20\
\x01(\x0e2%.tensorflow.RewriterConfig.MemOptTypeR\x12memoryOptimization\
\x12S\n'memory_optimizer_target_node_name_scope\x18\x06\x20\x01(\tR\"mem\
oryOptimizerTargetNodeNameScope\x129\n\x19meta_optimizer_timeout_ms\x18\
\x14\x20\x01(\x03R\x16metaOptimizerTimeoutMs\x12D\n\rauto_parallel\x18\
\x05\x20\x01(\x0b2\x1f.tensorflow.AutoParallelOptionsR\x0cautoParallel\
\x127\n\x18fail_on_optimizer_errors\x18\x15\x20\x01(\x08R\x15failOnOptim\
izerErrors\x12V\n\x15scoped_allocator_opts\x18\x10\x20\x01(\x0b2\".tenso\
rflow.ScopedAllocatorOptionsR\x13scopedAllocatorOpts\x12\x1e\n\noptimize\
rs\x18d\x20\x03(\tR\noptimizers\x12]\n\x11custom_optimizers\x18\xc8\x01\
\x20\x03(\x0b2/.tensorflow.RewriterConfig.CustomGraphOptimizerR\x10custo\
mOptimizers\x12b\n\x1finter_optimizer_verifier_config\x18\xac\x02\x20\
\x01(\x0b2\x1a.tensorflow.VerifierConfigR\x1cinterOptimizerVerifierConfi\
g\x12f\n!post_optimization_verifier_config\x18\xad\x02\x20\x01(\x0b2\x1a\
.tensorflow.VerifierConfigR\x1epostOptimizationVerifierConfig\x1a\xea\
\x01\n\x14CustomGraphOptimizer\x12\x12\n\x04name\x18\x01\x20\x01(\tR\x04\
name\x12f\n\rparameter_map\x18\x02\x20\x03(\x0b2A.tensorflow.RewriterCon\
fig.CustomGraphOptimizer.ParameterMapEntryR\x0cparameterMap\x1aV\n\x11Pa\
rameterMapEntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12+\n\x05va\
lue\x18\x02\x20\x01(\x0b2\x15.tensorflow.AttrValueR\x05value:\x028\x01\"\
6\n\x06Toggle\x12\x0b\n\x07DEFAULT\x10\0\x12\x06\n\x02ON\x10\x01\x12\x07\
\n\x03OFF\x10\x02\x12\x0e\n\nAGGRESSIVE\x10\x03\"<\n\x11NumIterationsTyp\
e\x12\x15\n\x11DEFAULT_NUM_ITERS\x10\0\x12\x07\n\x03ONE\x10\x01\x12\x07\
\n\x03TWO\x10\x02\"\x9f\x01\n\nMemOptType\x12\x13\n\x0fDEFAULT_MEM_OPT\
\x10\0\x12\x0e\n\nNO_MEM_OPT\x10\x01\x12\n\n\x06MANUAL\x10\x02\x12\x17\n\
\x13SWAPPING_HEURISTICS\x10\x04\x12\x1c\n\x18RECOMPUTATION_HEURISTICS\
\x10\x05\x12\x19\n\x15SCHEDULING_HEURISTICS\x10\x06\x12\x0e\n\nHEURISTIC\
S\x10\x03B\x7f\n\x18org.tensorflow.frameworkB\x14RewriterConfigProtosP\
\x01ZHgithub.com/tensorflow/tensorflow/tensorflow/go/core/core_protos_go\
_proto\xf8\x01\x01J\x94@\n\x07\x12\x05\0\0\xb9\x01\x01\n\x08\n\x01\x0c\
\x12\x03\0\0\x12\n\x08\n\x01\x02\x12\x03\x02\0\x13\n\t\n\x02\x03\0\x12\
\x03\x04\04\n\t\n\x02\x03\x01\x12\x03\x05\08\n\x08\n\x01\x08\x12\x03\x07\
\0\x1f\n\t\n\x02\x08\x1f\x12\x03\x07\0\x1f\n\x08\n\x01\x08\x12\x03\x08\0\
5\n\t\n\x02\x08\x08\x12\x03\x08\05\n\x08\n\x01\x08\x12\x03\t\0\"\n\t\n\
\x02\x08\n\x12\x03\t\0\"\n\x08\n\x01\x08\x12\x03\n\01\n\t\n\x02\x08\x01\
\x12\x03\n\01\n\x08\n\x01\x08\x12\x03\x0b\0_\n\t\n\x02\x08\x0b\x12\x03\
\x0b\0_\n\n\n\x02\x04\0\x12\x04\r\0\x10\x01\n\n\n\x03\x04\0\x01\x12\x03\
\r\x08\x1b\n\x0b\n\x04\x04\0\x02\0\x12\x03\x0e\x02\x12\n\x0c\n\x05\x04\0\
\x02\0\x05\x12\x03\x0e\x02\x06\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x0e\
\x07\r\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x0e\x10\x11\n\x0b\n\x04\x04\0\
\x02\x01\x12\x03\x0f\x02\x19\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x0f\
\x02\x07\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03\x0f\x08\x14\n\x0c\n\x05\
\x04\0\x02\x01\x03\x12\x03\x0f\x17\x18\n\n\n\x02\x04\x01\x12\x04\x12\0\
\x15\x01\n\n\n\x03\x04\x01\x01\x12\x03\x12\x08\x1e\nC\n\x04\x04\x01\x02\
\0\x12\x03\x14\x02\x20\x1a6\x20If\x20present,\x20only\x20perform\x20opti\
mization\x20for\x20these\x20ops.\n\n\x0c\n\x05\x04\x01\x02\0\x04\x12\x03\
\x14\x02\n\n\x0c\n\x05\x04\x01\x02\0\x05\x12\x03\x14\x0b\x11\n\x0c\n\x05\
\x04\x01\x02\0\x01\x12\x03\x14\x12\x1b\n\x0c\n\x05\x04\x01\x02\0\x03\x12\
\x03\x14\x1e\x1f\ns\n\x02\x04\x02\x12\x05\x17\0\xb9\x01\x01\"f\x20Graph\
\x20rewriting\x20is\x20experimental\x20and\x20subject\x20to\x20change,\
\x20not\x20covered\x20by\x20any\n\x20API\x20stability\x20guarantees.\n\n\
\n\n\x03\x04\x02\x01\x12\x03\x17\x08\x16\n\xc6\x01\n\x04\x04\x02\x04\0\
\x12\x04\x1f\x02'\x032\xb7\x01\x20Configuration\x20options\x20for\x20the\
\x20meta-optimizer.\x20Unless\x20otherwise\x20noted,\x20these\n\x20confi\
guration\x20options\x20do\x20not\x20apply\x20to\x20explicitly\x20trigger\
ed\x20optimization\n\x20passes\x20in\x20the\x20optimizers\x20field.\n\n\
\x0c\n\x05\x04\x02\x04\0\x01\x12\x03\x1f\x07\r\n\r\n\x06\x04\x02\x04\0\
\x02\0\x12\x03\x20\x04\x10\n\x0e\n\x07\x04\x02\x04\0\x02\0\x01\x12\x03\
\x20\x04\x0b\n\x0e\n\x07\x04\x02\x04\0\x02\0\x02\x12\x03\x20\x0e\x0f\n\r\
\n\x06\x04\x02\x04\0\x02\x01\x12\x03!\x04\x0b\n\x0e\n\x07\x04\x02\x04\0\
\x02\x01\x01\x12\x03!\x04\x06\n\x0e\n\x07\x04\x02\x04\0\x02\x01\x02\x12\
\x03!\t\n\n\r\n\x06\x04\x02\x04\0\x02\x02\x12\x03\"\x04\x0c\n\x0e\n\x07\
\x04\x02\x04\0\x02\x02\x01\x12\x03\"\x04\x07\n\x0e\n\x07\x04\x02\x04\0\
\x02\x02\x02\x12\x03\"\n\x0b\n\xaf\x01\n\x06\x04\x02\x04\0\x02\x03\x12\
\x03&\x04\x13\x1a\x9f\x01\x20Enable\x20some\x20aggressive\x20optimizatio\
ns\x20that\x20use\x20assumptions\x20that\x20TF\x20graphs\n\x20may\x20bre\
ak.\x20For\x20example,\x20assume\x20the\x20shape\x20of\x20a\x20placehold\
er\x20matches\x20its\n\x20actual\x20feed.\n\n\x0e\n\x07\x04\x02\x04\0\
\x02\x03\x01\x12\x03&\x04\x0e\n\x0e\n\x07\x04\x02\x04\0\x02\x03\x02\x12\
\x03&\x11\x12\nj\n\x04\x04\x02\x04\x01\x12\x04+\x02/\x03\x1a\\\x20Enum\
\x20controlling\x20the\x20number\x20of\x20times\x20to\x20run\x20optimize\
rs.\x20The\x20default\x20is\x20to\n\x20run\x20them\x20twice.\n\n\x0c\n\
\x05\x04\x02\x04\x01\x01\x12\x03+\x07\x18\n\r\n\x06\x04\x02\x04\x01\x02\
\0\x12\x03,\x04\x1a\n\x0e\n\x07\x04\x02\x04\x01\x02\0\x01\x12\x03,\x04\
\x15\n\x0e\n\x07\x04\x02\x04\x01\x02\0\x02\x12\x03,\x18\x19\n\r\n\x06\
\x04\x02\x04\x01\x02\x01\x12\x03-\x04\x0c\n\x0e\n\x07\x04\x02\x04\x01\
\x02\x01\x01\x12\x03-\x04\x07\n\x0e\n\x07\x04\x02\x04\x01\x02\x01\x02\
\x12\x03-\n\x0b\n\r\n\x06\x04\x02\x04\x01\x02\x02\x12\x03.\x04\x0c\n\x0e\
\n\x07\x04\x02\x04\x01\x02\x02\x01\x12\x03.\x04\x07\n\x0e\n\x07\x04\x02\
\x04\x01\x02\x02\x02\x12\x03.\n\x0b\nu\n\x04\x04\x02\x02\0\x12\x033\x02\
\x1e\x1ah\x20Optimize\x20tensor\x20layouts\x20(default\x20is\x20ON)\n\
\x20e.g.\x20This\x20will\x20try\x20to\x20use\x20NCHW\x20layout\x20on\x20\
GPU\x20which\x20is\x20faster.\n\n\x0c\n\x05\x04\x02\x02\0\x06\x12\x033\
\x02\x08\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x033\t\x19\n\x0c\n\x05\x04\
\x02\x02\0\x03\x12\x033\x1c\x1d\n\x91\x01\n\x04\x04\x02\x02\x01\x12\x037\
\x02\x1e\x1a\x83\x01\x20Fold\x20constants\x20(default\x20is\x20ON)\n\x20\
Statically\x20infer\x20the\x20value\x20of\x20tensors\x20when\x20possible\
,\x20and\x20materialize\x20the\n\x20result\x20using\x20constants.\n\n\
\x0c\n\x05\x04\x02\x02\x01\x06\x12\x037\x02\x08\n\x0c\n\x05\x04\x02\x02\
\x01\x01\x12\x037\t\x19\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x037\x1c\x1d\
\nY\n\x04\x04\x02\x02\x02\x12\x03:\x02!\x1aL\x20Shape\x20optimizations\
\x20(default\x20is\x20ON)\n\x20Simplify\x20computations\x20made\x20on\
\x20shapes.\n\n\x0c\n\x05\x04\x02\x02\x02\x06\x12\x03:\x02\x08\n\x0c\n\
\x05\x04\x02\x02\x02\x01\x12\x03:\t\x1b\n\x0c\n\x05\x04\x02\x02\x02\x03\
\x12\x03:\x1e\x20\n^\n\x04\x04\x02\x02\x03\x12\x03=\x02\x18\x1aQ\x20Rema\
pping\x20(default\x20is\x20ON)\n\x20Remap\x20subgraphs\x20onto\x20more\
\x20efficient\x20implementations.\n\n\x0c\n\x05\x04\x02\x02\x03\x06\x12\
\x03=\x02\x08\n\x0c\n\x05\x04\x02\x02\x03\x01\x12\x03=\t\x12\n\x0c\n\x05\
\x04\x02\x02\x03\x03\x12\x03=\x15\x17\n\x82\x01\n\x04\x04\x02\x02\x04\
\x12\x03@\x02%\x1au\x20Arithmetic\x20optimizations\x20(default\x20is\x20\
ON)\n\x20e.g.\x20Simplify\x20arithmetic\x20ops;\x20merge\x20ops\x20with\
\x20same\x20value\x20(like\x20constants).\n\n\x0c\n\x05\x04\x02\x02\x04\
\x06\x12\x03@\x02\x08\n\x0c\n\x05\x04\x02\x02\x04\x01\x12\x03@\t\x20\n\
\x0c\n\x05\x04\x02\x02\x04\x03\x12\x03@#$\n\x8e\x01\n\x04\x04\x02\x02\
\x05\x12\x03C\x02%\x1a\x80\x01\x20Control\x20dependency\x20optimizations\
\x20(default\x20is\x20ON).\n\x20Remove\x20redundant\x20control\x20depend\
encies,\x20which\x20may\x20enable\x20other\x20optimization.\n\n\x0c\n\
\x05\x04\x02\x02\x05\x06\x12\x03C\x02\x08\n\x0c\n\x05\x04\x02\x02\x05\
\x01\x12\x03C\t\x20\n\x0c\n\x05\x04\x02\x02\x05\x03\x12\x03C#$\n2\n\x04\
\x04\x02\x02\x06\x12\x03E\x02\x1f\x1a%\x20Loop\x20optimizations\x20(defa\
ult\x20is\x20ON).\n\n\x0c\n\x05\x04\x02\x02\x06\x06\x12\x03E\x02\x08\n\
\x0c\n\x05\x04\x02\x02\x06\x01\x12\x03E\t\x1a\n\x0c\n\x05\x04\x02\x02\
\x06\x03\x12\x03E\x1d\x1e\n6\n\x04\x04\x02\x02\x07\x12\x03G\x02$\x1a)\
\x20Function\x20optimizations\x20(default\x20is\x20ON).\n\n\x0c\n\x05\
\x04\x02\x02\x07\x06\x12\x03G\x02\x08\n\x0c\n\x05\x04\x02\x02\x07\x01\
\x12\x03G\t\x1e\n\x0c\n\x05\x04\x02\x02\x07\x03\x12\x03G!#\nJ\n\x04\x04\
\x02\x02\x08\x12\x03I\x02\x1d\x1a=\x20Strips\x20debug-related\x20nodes\
\x20from\x20the\x20graph\x20(off\x20by\x20default).\n\n\x0c\n\x05\x04\
\x02\x02\x08\x06\x12\x03I\x02\x08\n\x0c\n\x05\x04\x02\x02\x08\x01\x12\
\x03I\t\x17\n\x0c\n\x05\x04\x02\x02\x08\x03\x12\x03I\x1a\x1c\nC\n\x04\
\x04\x02\x02\t\x12\x03K\x02!\x1a6\x20If\x20true,\x20don't\x20remove\x20u\
nnecessary\x20ops\x20from\x20the\x20graph\n\n\x0c\n\x05\x04\x02\x02\t\
\x05\x12\x03K\x02\x06\n\x0c\n\x05\x04\x02\x02\t\x01\x12\x03K\x07\x1c\n\
\x0c\n\x05\x04\x02\x02\t\x03\x12\x03K\x1f\x20\n\x88\x01\n\x04\x04\x02\
\x02\n\x12\x03N\x02,\x1a{\x20Try\x20to\x20allocate\x20some\x20independen\
t\x20Op\x20outputs\x20contiguously\x20in\x20order\x20to\n\x20merge\x20or\
\x20eliminate\x20downstream\x20Ops\x20(off\x20by\x20default).\n\n\x0c\n\
\x05\x04\x02\x02\n\x06\x12\x03N\x02\x08\n\x0c\n\x05\x04\x02\x02\n\x01\
\x12\x03N\t&\n\x0c\n\x05\x04\x02\x02\n\x03\x12\x03N)+\n=\n\x04\x04\x02\
\x02\x0b\x12\x03P\x02'\x1a0\x20Force\x20small\x20ops\x20onto\x20the\x20C\
PU\x20(default\x20is\x20OFF).\n\n\x0c\n\x05\x04\x02\x02\x0b\x06\x12\x03P\
\x02\x08\n\x0c\n\x05\x04\x02\x02\x0b\x01\x12\x03P\t!\n\x0c\n\x05\x04\x02\
\x02\x0b\x03\x12\x03P$&\nh\n\x04\x04\x02\x02\x0c\x12\x03S\x02&\x1a[\x20E\
nable\x20the\x20swap\x20of\x20kernel\x20implementations\x20based\x20on\
\x20the\x20device\x20placement\n\x20(default\x20is\x20ON).\n\n\x0c\n\x05\
\x04\x02\x02\x0c\x06\x12\x03S\x02\x08\n\x0c\n\x05\x04\x02\x02\x0c\x01\
\x12\x03S\t\x20\n\x0c\n\x05\x04\x02\x02\x0c\x03\x12\x03S#%\n\xf9\x01\n\
\x04\x04\x02\x02\r\x12\x03X\x02#\x1a\xeb\x01\x20Optimize\x20data\x20type\
s\x20(default\x20is\x20OFF).\n\x20e.g.,\x20This\x20will\x20try\x20to\x20\
use\x20float16\x20on\x20GPU\x20which\x20is\x20faster.\n\x20Note\x20that\
\x20this\x20can\x20change\x20the\x20numerical\x20stability\x20of\x20the\
\x20graph\x20and\x20may\n\x20require\x20the\x20use\x20of\x20loss\x20scal\
ing\x20to\x20maintain\x20model\x20convergence.\n\n\x0c\n\x05\x04\x02\x02\
\r\x06\x12\x03X\x02\x08\n\x0c\n\x05\x04\x02\x02\r\x01\x12\x03X\t\x1d\n\
\x0c\n\x05\x04\x02\x02\r\x03\x12\x03X\x20\"\nB\n\x04\x04\x02\x02\x0e\x12\
\x03Z\x02#\x1a5\x20Disable\x20the\x20entire\x20meta\x20optimizer\x20(off\
\x20by\x20default).\n\n\x0c\n\x05\x04\x02\x02\x0e\x05\x12\x03Z\x02\x06\n\
\x0c\n\x05\x04\x02\x02\x0e\x01\x12\x03Z\x07\x1d\n\x0c\n\x05\x04\x02\x02\
\x0e\x03\x12\x03Z\x20\"\nb\n\x04\x04\x02\x02\x0f\x12\x03^\x023\x1aU\x20C\
ontrols\x20how\x20many\x20times\x20we\x20run\x20the\x20optimizers\x20in\
\x20meta\x20optimizer\x20(default\n\x20is\x20once).\n\n\x0c\n\x05\x04\
\x02\x02\x0f\x06\x12\x03^\x02\x13\n\x0c\n\x05\x04\x02\x02\x0f\x01\x12\
\x03^\x14-\n\x0c\n\x05\x04\x02\x02\x0f\x03\x12\x03^02\n\xc8\x01\n\x04\
\x04\x02\x02\x10\x12\x03d\x02\x1d\x1a\xba\x01\x20The\x20minimum\x20numbe\
r\x20of\x20nodes\x20in\x20a\x20graph\x20to\x20optimizer.\x20For\x20small\
er\x20graphs,\n\x20optimization\x20is\x20skipped.\n\x200\x20means\x20the\
\x20system\x20picks\x20an\x20appropriate\x20number.\n\x20<\x200\x20means\
\x20do\x20not\x20skip\x20optimization.\n\n\x0c\n\x05\x04\x02\x02\x10\x05\
\x12\x03d\x02\x07\n\x0c\n\x05\x04\x02\x02\x10\x01\x12\x03d\x08\x17\n\x0c\
\n\x05\x04\x02\x02\x10\x03\x12\x03d\x1a\x1c\n\x0c\n\x04\x04\x02\x04\x02\
\x12\x04f\x02~\x03\n\x0c\n\x05\x04\x02\x04\x02\x01\x12\x03f\x07\x11\nN\n\
\x06\x04\x02\x04\x02\x02\0\x12\x03h\x04\x18\x1a?\x20The\x20default\x20se\
tting\x20(SCHEDULING\x20and\x20SWAPPING\x20HEURISTICS\x20only)\n\n\x0e\n\
\x07\x04\x02\x04\x02\x02\0\x01\x12\x03h\x04\x13\n\x0e\n\x07\x04\x02\x04\
\x02\x02\0\x02\x12\x03h\x16\x17\n0\n\x06\x04\x02\x04\x02\x02\x01\x12\x03\
j\x04\x13\x1a!\x20Disabled\x20in\x20the\x20meta-optimizer.\n\n\x0e\n\x07\
\x04\x02\x04\x02\x02\x01\x01\x12\x03j\x04\x0e\n\x0e\n\x07\x04\x02\x04\
\x02\x02\x01\x02\x12\x03j\x11\x12\n7\n\x06\x04\x02\x04\x02\x02\x02\x12\
\x03l\x04\x0f\x1a(\x20Driven\x20by\x20manual\x20op-level\x20annotations.\
\n\n\x0e\n\x07\x04\x02\x04\x02\x02\x02\x01\x12\x03l\x04\n\n\x0e\n\x07\
\x04\x02\x04\x02\x02\x02\x02\x12\x03l\r\x0e\n\xfa\x02\n\x06\x04\x02\x04\
\x02\x02\x03\x12\x03u\x04\x1c\x1az\x20Swapping\x20heuristic\x20will\x20m\
ove\x20a\x20tensor\x20from\x20the\x20GPU\x20to\x20the\x20CPU\x20and\x20m\
ove\n\x20it\x20back\x20when\x20needed\x20to\x20reduce\x20peak\x20memory\
\x20usage.\n2\xee\x01\x20Driven\x20by\x20heuristics.\x20The\x20behavior\
\x20of\x20these\x20heuristics\x20is\x20subject\x20to\n\x20change.\x20Cur\
rently\x20includes\x20an\x20experimental\x20recomputation\x20and\x20swap\
ping\n\x20heuristics.\x20Manual\x20annotations\x20are\x20respected,\x20b\
ut\x20additional\x20nodes\x20are\n\x20selected\x20automatically.\n\n\x0e\
\n\x07\x04\x02\x04\x02\x02\x03\x01\x12\x03u\x04\x17\n\x0e\n\x07\x04\x02\
\x04\x02\x02\x03\x02\x12\x03u\x1a\x1b\n\x9d\x01\n\x06\x04\x02\x04\x02\
\x02\x04\x12\x03x\x04!\x1a\x8d\x01\x20Recomputation\x20heuristics\x20wil\
l\x20recompute\x20ops\x20(such\x20as\x20Relu\x20activation)\n\x20during\
\x20backprop\x20instead\x20of\x20storing\x20them,\x20reducing\x20peak\
\x20memory\x20usage.\n\n\x0e\n\x07\x04\x02\x04\x02\x02\x04\x01\x12\x03x\
\x04\x1c\n\x0e\n\x07\x04\x02\x04\x02\x02\x04\x02\x12\x03x\x1f\x20\n\x95\
\x01\n\x06\x04\x02\x04\x02\x02\x05\x12\x03{\x04\x1e\x1a\x85\x01\x20Sched\
uling\x20will\x20split\x20big\x20ops\x20such\x20as\x20AddN\x20and\x20try\
\x20to\x20enforce\x20a\x20schedule\n\x20of\x20the\x20new\x20computations\
\x20that\x20decreases\x20peak\x20memory\x20usage.\n\n\x0e\n\x07\x04\x02\
\x04\x02\x02\x05\x01\x12\x03{\x04\x19\n\x0e\n\x07\x04\x02\x04\x02\x02\
\x05\x02\x12\x03{\x1c\x1d\nN\n\x06\x04\x02\x04\x02\x02\x06\x12\x03}\x04\
\x13\x1a?\x20Use\x20any\x20combination\x20of\x20swapping\x20and\x20recom\
putation\x20heuristics.\n\n\x0e\n\x07\x04\x02\x04\x02\x02\x06\x01\x12\
\x03}\x04\x0e\n\x0e\n\x07\x04\x02\x04\x02\x02\x06\x02\x12\x03}\x11\x12\n\
\xac\x01\n\x04\x04\x02\x02\x11\x12\x04\x82\x01\x02%\x1a\x9d\x01\x20Confi\
gures\x20memory\x20optimization\x20passes\x20through\x20the\x20meta-opti\
mizer.\x20Has\x20no\n\x20effect\x20on\x20manually\x20requested\x20memory\
\x20optimization\x20passes\x20in\x20the\x20optimizers\n\x20field.\n\n\r\
\n\x05\x04\x02\x02\x11\x06\x12\x04\x82\x01\x02\x0c\n\r\n\x05\x04\x02\x02\
\x11\x01\x12\x04\x82\x01\r\x20\n\r\n\x05\x04\x02\x02\x11\x03\x12\x04\x82\
\x01#$\n\xc0\x04\n\x04\x04\x02\x02\x12\x12\x04\x8b\x01\x025\x1a\xb1\x04\
\x20A\x20node\x20name\x20scope\x20for\x20node\x20names\x20which\x20are\
\x20valid\x20outputs\x20of\x20recomputations.\n\x20Inputs\x20to\x20nodes\
\x20that\x20match\x20this\x20scope\x20may\x20be\x20recomputed\x20(subjec\
t\x20either\x20to\n\x20manual\x20annotation\x20of\x20those\x20input\x20n\
odes\x20or\x20to\x20manual\x20annotation\x20and\n\x20heuristics\x20depen\
ding\x20on\x20memory_optimization),\x20but\x20the\x20nodes\x20themselves\
\x20will\n\x20not\x20be\x20recomputed.\x20This\x20matches\x20any\x20sub-\
scopes\x20as\x20well,\x20meaning\x20the\x20scope\n\x20can\x20appear\x20n\
ot\x20just\x20as\x20a\x20top-level\x20scope.\x20For\x20example,\x20if\
\x20the\x20value\x20is\n\x20\"gradients/\",\x20the\x20default,\x20it\x20\
will\x20match\x20node\x20name\x20\"gradients/foo\",\n\x20\"foo/gradients\
/bar\",\x20but\x20not\x20\"foo_gradients/\"\n\n\r\n\x05\x04\x02\x02\x12\
\x05\x12\x04\x8b\x01\x02\x08\n\r\n\x05\x04\x02\x02\x12\x01\x12\x04\x8b\
\x01\t0\n\r\n\x05\x04\x02\x02\x12\x03\x12\x04\x8b\x0134\n\xd9\x01\n\x04\
\x04\x02\x02\x13\x12\x04\x8f\x01\x02'\x1a\xca\x01\x20Maximum\x20number\
\x20of\x20milliseconds\x20to\x20spend\x20optimizing\x20a\x20single\x20gr\
aph\x20before\n\x20timing\x20out.\x20If\x20equal\x20to\x200\x20the\x20sy\
stem\x20picks\x20a\x20default\x20(currently\x205\x20minutes).\n\x20If\
\x20less\x20than\x200\x20the\x20optimizer\x20will\x20never\x20time\x20ou\
t.\n\n\r\n\x05\x04\x02\x02\x13\x05\x12\x04\x8f\x01\x02\x07\n\r\n\x05\x04\
\x02\x02\x13\x01\x12\x04\x8f\x01\x08!\n\r\n\x05\x04\x02\x02\x13\x03\x12\
\x04\x8f\x01$&\n\x98\x01\n\x04\x04\x02\x02\x14\x12\x04\x93\x01\x02(\x1a\
\x89\x01\x20Configures\x20AutoParallel\x20optimization\x20passes\x20eith\
er\x20through\x20the\n\x20meta-optimizer\x20or\x20when\x20manually\x20sp\
ecified\x20through\x20the\x20optimizers\x20field.\n\n\r\n\x05\x04\x02\
\x02\x14\x06\x12\x04\x93\x01\x02\x15\n\r\n\x05\x04\x02\x02\x14\x01\x12\
\x04\x93\x01\x16#\n\r\n\x05\x04\x02\x02\x14\x03\x12\x04\x93\x01&'\n\xb5\
\x01\n\x04\x04\x02\x02\x15\x12\x04\x98\x01\x02%\x1a\xa6\x01\x20If\x20tru\
e,\x20any\x20optimization\x20pass\x20failing\x20will\x20cause\x20the\x20\
MetaOptimizer\x20to\n\x20stop\x20with\x20an\x20error.\x20By\x20default\
\x20-\x20or\x20when\x20set\x20to\x20false,\x20failing\x20passes\x20are\n\
\x20skipped\x20silently.\n\n\r\n\x05\x04\x02\x02\x15\x05\x12\x04\x98\x01\
\x02\x06\n\r\n\x05\x04\x02\x02\x15\x01\x12\x04\x98\x01\x07\x1f\n\r\n\x05\
\x04\x02\x02\x15\x03\x12\x04\x98\x01\"$\n\x0c\n\x04\x04\x02\x02\x16\x12\
\x04\x9a\x01\x024\n\r\n\x05\x04\x02\x02\x16\x06\x12\x04\x9a\x01\x02\x18\
\n\r\n\x05\x04\x02\x02\x16\x01\x12\x04\x9a\x01\x19.\n\r\n\x05\x04\x02\
\x02\x16\x03\x12\x04\x9a\x0113\n\xa3\x05\n\x04\x04\x02\x02\x17\x12\x04\
\xa8\x01\x02#\x1a\x94\x05\x20If\x20non-empty,\x20will\x20use\x20this\x20\
as\x20an\x20alternative\x20way\x20to\x20specify\x20a\x20list\x20of\n\x20\
optimizations\x20to\x20turn\x20on\x20and\x20the\x20order\x20of\x20the\
\x20optimizations\x20(replacing\x20the\n\x20meta-optimizer).\n\n\x20Of\
\x20the\x20RewriterConfig\x20options,\x20only\x20the\x20AutoParallel\x20\
configuration\x20options\n\x20(the\x20auto_parallel\x20field)\x20apply\
\x20to\x20manually\x20requested\x20optimization\x20passes\n\x20(\"autopa\
rallel\").\x20Memory\x20optimization\x20passes\x20(\"memory\")\x20invoke\
d\x20here\x20are\n\x20not\x20configurable\x20(in\x20contrast\x20to\x20me\
mory\x20optimization\x20passes\x20through\x20the\n\x20meta-optimizer)\
\x20and\x20act\x20only\x20on\x20manual\x20op\x20annotations.\n\n\x20Cust\
om\x20optimizers\x20(see\x20custom_optimizers)\x20that\x20are\x20not\x20\
part\x20of\x20this\n\x20schedule\x20will\x20be\x20run\x20after\x20-\x20i\
n\x20the\x20order\x20that\x20they\x20were\x20specified.\n\n\r\n\x05\x04\
\x02\x02\x17\x04\x12\x04\xa8\x01\x02\n\n\r\n\x05\x04\x02\x02\x17\x05\x12\
\x04\xa8\x01\x0b\x11\n\r\n\x05\x04\x02\x02\x17\x01\x12\x04\xa8\x01\x12\
\x1c\n\r\n\x05\x04\x02\x02\x17\x03\x12\x04\xa8\x01\x1f\"\nO\n\x04\x04\
\x02\x03\0\x12\x06\xab\x01\x02\xae\x01\x03\x1a?\x20Message\x20to\x20desc\
ribe\x20custom\x20graph\x20optimizer\x20and\x20its\x20parameters\n\n\r\n\
\x05\x04\x02\x03\0\x01\x12\x04\xab\x01\n\x1e\n\x0e\n\x06\x04\x02\x03\0\
\x02\0\x12\x04\xac\x01\x04\x14\n\x0f\n\x07\x04\x02\x03\0\x02\0\x05\x12\
\x04\xac\x01\x04\n\n\x0f\n\x07\x04\x02\x03\0\x02\0\x01\x12\x04\xac\x01\
\x0b\x0f\n\x0f\n\x07\x04\x02\x03\0\x02\0\x03\x12\x04\xac\x01\x12\x13\n\
\x0e\n\x06\x04\x02\x03\0\x02\x01\x12\x04\xad\x01\x04-\n\x0f\n\x07\x04\
\x02\x03\0\x02\x01\x06\x12\x04\xad\x01\x04\x1a\n\x0f\n\x07\x04\x02\x03\0\
\x02\x01\x01\x12\x04\xad\x01\x1b(\n\x0f\n\x07\x04\x02\x03\0\x02\x01\x03\
\x12\x04\xad\x01+,\n7\n\x04\x04\x02\x02\x18\x12\x04\xb1\x01\x028\x1a)\
\x20list\x20of\x20CustomGraphOptimizers\x20to\x20apply.\n\n\r\n\x05\x04\
\x02\x02\x18\x04\x12\x04\xb1\x01\x02\n\n\r\n\x05\x04\x02\x02\x18\x06\x12\
\x04\xb1\x01\x0b\x1f\n\r\n\x05\x04\x02\x02\x18\x01\x12\x04\xb1\x01\x201\
\n\r\n\x05\x04\x02\x02\x18\x03\x12\x04\xb1\x0147\nX\n\x04\x04\x02\x02\
\x19\x12\x04\xb4\x01\x027\x1aJ\x20VerifierConfig\x20specifying\x20the\
\x20verifiers\x20to\x20be\x20run\x20after\x20every\x20optimizer.\n\n\r\n\
\x05\x04\x02\x02\x19\x06\x12\x04\xb4\x01\x02\x10\n\r\n\x05\x04\x02\x02\
\x19\x01\x12\x04\xb4\x01\x110\n\r\n\x05\x04\x02\x02\x19\x03\x12\x04\xb4\
\x0136\nm\n\x04\x04\x02\x02\x1a\x12\x04\xb8\x01\x029\x1a_\x20VerifierCon\
fig\x20specifying\x20the\x20verifiers\x20to\x20be\x20run\x20at\x20the\
\x20end,\x20after\x20all\n\x20optimizers\x20have\x20run.\n\n\r\n\x05\x04\
\x02\x02\x1a\x06\x12\x04\xb8\x01\x02\x10\n\r\n\x05\x04\x02\x02\x1a\x01\
\x12\x04\xb8\x01\x112\n\r\n\x05\x04\x02\x02\x1a\x03\x12\x04\xb8\x0158b\
\x06proto3\
";
static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy::INIT;
fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
::protobuf::parse_from_bytes(file_descriptor_proto_data).unwrap()
}
pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
unsafe {
file_descriptor_proto_lazy.get(|| {
parse_descriptor_proto()
})
}
}