diff options
39 files changed, 46 insertions, 41 deletions
diff --git a/tensorflow/core/example/example.proto b/tensorflow/core/example/example.proto index a893bc0a9e..4272764441 100644 --- a/tensorflow/core/example/example.proto +++ b/tensorflow/core/example/example.proto @@ -3,7 +3,7 @@ syntax = "proto3"; import "tensorflow/core/example/feature.proto"; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "ExampleProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.example"; diff --git a/tensorflow/core/example/example_parser_configuration.proto b/tensorflow/core/example/example_parser_configuration.proto index 852151dc93..8d9dacd9ca 100644 --- a/tensorflow/core/example/example_parser_configuration.proto +++ b/tensorflow/core/example/example_parser_configuration.proto @@ -2,7 +2,7 @@ syntax = "proto3"; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "ExampleParserConfigurationProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.example"; diff --git a/tensorflow/core/example/feature.proto b/tensorflow/core/example/feature.proto index af59bd6979..d9b1e26b44 100644 --- a/tensorflow/core/example/feature.proto +++ b/tensorflow/core/example/feature.proto @@ -54,7 +54,7 @@ // syntax = "proto3"; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "FeatureProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.example"; diff --git a/tensorflow/core/framework/allocation_description.proto b/tensorflow/core/framework/allocation_description.proto index 8c74ee16c8..bb1037c2df 100644 --- a/tensorflow/core/framework/allocation_description.proto +++ b/tensorflow/core/framework/allocation_description.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "AllocationDescriptionProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/attr_value.proto b/tensorflow/core/framework/attr_value.proto index 4de32d410b..3108b46f0b 100644 --- a/tensorflow/core/framework/attr_value.proto +++ b/tensorflow/core/framework/attr_value.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "AttrValueProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/cost_graph.proto b/tensorflow/core/framework/cost_graph.proto index 85182104fe..62980db6da 100644 --- a/tensorflow/core/framework/cost_graph.proto +++ b/tensorflow/core/framework/cost_graph.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "CostGraphProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/device_attributes.proto b/tensorflow/core/framework/device_attributes.proto index 1f1d22dc5c..fa7020e6ad 100644 --- a/tensorflow/core/framework/device_attributes.proto +++ b/tensorflow/core/framework/device_attributes.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "DeviceAttributesProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/function.proto b/tensorflow/core/framework/function.proto index 369c38a40f..4003943a85 100644 --- a/tensorflow/core/framework/function.proto +++ b/tensorflow/core/framework/function.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "FunctionProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/graph.proto b/tensorflow/core/framework/graph.proto index 138fbee3bf..1d3e7c9e76 100644 --- a/tensorflow/core/framework/graph.proto +++ b/tensorflow/core/framework/graph.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "GraphProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/kernel_def.proto b/tensorflow/core/framework/kernel_def.proto index 4fe13336ca..65e9ef04a0 100644 --- a/tensorflow/core/framework/kernel_def.proto +++ b/tensorflow/core/framework/kernel_def.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "KernelDefProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/log_memory.proto b/tensorflow/core/framework/log_memory.proto index 83971bd358..d1e126330d 100644 --- a/tensorflow/core/framework/log_memory.proto +++ b/tensorflow/core/framework/log_memory.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "LogMemoryProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/op_def.proto b/tensorflow/core/framework/op_def.proto index d2e4321b14..acb480e068 100644 --- a/tensorflow/core/framework/op_def.proto +++ b/tensorflow/core/framework/op_def.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "OpDefProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/step_stats.proto b/tensorflow/core/framework/step_stats.proto index fcec15b5c9..4488f985c7 100644 --- a/tensorflow/core/framework/step_stats.proto +++ b/tensorflow/core/framework/step_stats.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "StepStatsProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/summary.proto b/tensorflow/core/framework/summary.proto index bbd737d389..10ee1c8779 100644 --- a/tensorflow/core/framework/summary.proto +++ b/tensorflow/core/framework/summary.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "SummaryProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/tensor.proto b/tensorflow/core/framework/tensor.proto index c0a56107f6..6500ccde8d 100644 --- a/tensorflow/core/framework/tensor.proto +++ b/tensorflow/core/framework/tensor.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "TensorProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/tensor_description.proto b/tensorflow/core/framework/tensor_description.proto index 5616db9445..6ac3c1b881 100644 --- a/tensorflow/core/framework/tensor_description.proto +++ b/tensorflow/core/framework/tensor_description.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "TensorDescriptionProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/tensor_shape.proto b/tensorflow/core/framework/tensor_shape.proto index 8989aae1a5..1ec3c5323c 100644 --- a/tensorflow/core/framework/tensor_shape.proto +++ b/tensorflow/core/framework/tensor_shape.proto @@ -1,7 +1,7 @@ // Protocol buffer representing the shape of tensors. syntax = "proto3"; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "TensorShapeProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/tensor_slice.proto b/tensorflow/core/framework/tensor_slice.proto index f9b2113f7d..24b01661dc 100644 --- a/tensorflow/core/framework/tensor_slice.proto +++ b/tensorflow/core/framework/tensor_slice.proto @@ -1,7 +1,7 @@ // Protocol buffer representing slices of a tensor syntax = "proto3"; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "TensorSliceProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/types.proto b/tensorflow/core/framework/types.proto index 9d267cbd02..051361bbed 100644 --- a/tensorflow/core/framework/types.proto +++ b/tensorflow/core/framework/types.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "TypesProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/variable.proto b/tensorflow/core/framework/variable.proto index 2ec7aec3d0..aa76d58741 100644 --- a/tensorflow/core/framework/variable.proto +++ b/tensorflow/core/framework/variable.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "VariableProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/framework/versions.proto b/tensorflow/core/framework/versions.proto index 426515740b..7d5e58ae7d 100644 --- a/tensorflow/core/framework/versions.proto +++ b/tensorflow/core/framework/versions.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "VersionsProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/kernels/example_parsing_ops.cc b/tensorflow/core/kernels/example_parsing_ops.cc index 008cf747e1..4a0bb6f9d1 100644 --- a/tensorflow/core/kernels/example_parsing_ops.cc +++ b/tensorflow/core/kernels/example_parsing_ops.cc @@ -148,8 +148,9 @@ class ExampleParserOp : public OpKernel { // Preallocate dense_values, since we know their sizes TensorShape out_shape; out_shape.AddDim(batch_size); - for (const int64 dim : dense_shapes_[d].dim_sizes()) + for (const int64 dim : dense_shapes_[d].dim_sizes()) { out_shape.AddDim(dim); + } Tensor* out = nullptr; dense_values.allocate(d, out_shape, &out); @@ -193,11 +194,14 @@ class ExampleParserOp : public OpKernel { auto DoWork = [&ctx, &mu, &serialized_t, has_names, &names_t, &fixed_len_features, &var_len_features, &output_dense_values, &sparse_values_tmp](int64 start, int64 limit) { - Example ex; // Processing each Example in the batch starts here. for (std::size_t b = static_cast<size_t>(start); b < static_cast<size_t>(limit); ++b) { - bool parse_success = ParseProtoUnlimited(&ex, serialized_t(b)); + // Benchmarks indicate that a tight Arena+Example is most performant. + protobuf::Arena arena; + // ex is owned by the arena. + Example* ex = protobuf::Arena::CreateMessage<Example>(&arena); + bool parse_success = ParseProtoUnlimited(ex, serialized_t(b)); if (!TF_PREDICT_TRUE(parse_success)) { mutex_lock l(mu); ctx->CtxFailure(errors::InvalidArgument( @@ -206,7 +210,7 @@ class ExampleParserOp : public OpKernel { } const string& example_name = (has_names) ? names_t(b) : "<unknown>"; Status s = SingleExampleProtoToTensors( - ex, example_name, b, fixed_len_features, var_len_features, + *ex, example_name, b, fixed_len_features, var_len_features, &output_dense_values, &sparse_values_tmp); if (!TF_PREDICT_TRUE(s.ok())) { mutex_lock l(mu); diff --git a/tensorflow/core/kernels/reader_base.proto b/tensorflow/core/kernels/reader_base.proto index c74152d4c5..abef43eea5 100644 --- a/tensorflow/core/kernels/reader_base.proto +++ b/tensorflow/core/kernels/reader_base.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "ReaderBaseProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.kernels"; diff --git a/tensorflow/core/lib/core/error_codes.proto b/tensorflow/core/lib/core/error_codes.proto index 1b334677f1..a7306c8cc1 100644 --- a/tensorflow/core/lib/core/error_codes.proto +++ b/tensorflow/core/lib/core/error_codes.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow.error; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "ErrorCodesProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/platform/default/protobuf.h b/tensorflow/core/platform/default/protobuf.h index 8eeedf403d..544f62d1f8 100644 --- a/tensorflow/core/platform/default/protobuf.h +++ b/tensorflow/core/platform/default/protobuf.h @@ -19,6 +19,7 @@ limitations under the License. // IWYU pragma: private, include "third_party/tensorflow/core/platform/protobuf.h" // IWYU pragma: friend third_party/tensorflow/core/platform/protobuf.h +#include "google/protobuf/arena.h" #include "google/protobuf/compiler/importer.h" #include "google/protobuf/descriptor.h" #include "google/protobuf/io/coded_stream.h" diff --git a/tensorflow/core/protobuf/config.proto b/tensorflow/core/protobuf/config.proto index 3239712f87..d26a41563d 100644 --- a/tensorflow/core/protobuf/config.proto +++ b/tensorflow/core/protobuf/config.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "ConfigProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/protobuf/master.proto b/tensorflow/core/protobuf/master.proto index 4d4b513c20..1dc5e0271e 100644 --- a/tensorflow/core/protobuf/master.proto +++ b/tensorflow/core/protobuf/master.proto @@ -16,7 +16,7 @@ limitations under the License. syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "DistributedRuntimeProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.distruntime"; diff --git a/tensorflow/core/protobuf/meta_graph.proto b/tensorflow/core/protobuf/meta_graph.proto index bea9b7c5df..5a4fbdac84 100644 --- a/tensorflow/core/protobuf/meta_graph.proto +++ b/tensorflow/core/protobuf/meta_graph.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "MetaGraphProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/protobuf/named_tensor.proto b/tensorflow/core/protobuf/named_tensor.proto index bd09ad9749..dd4976e354 100644 --- a/tensorflow/core/protobuf/named_tensor.proto +++ b/tensorflow/core/protobuf/named_tensor.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "NamedTensorProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/protobuf/queue_runner.proto b/tensorflow/core/protobuf/queue_runner.proto index d7766f4846..963e12784f 100644 --- a/tensorflow/core/protobuf/queue_runner.proto +++ b/tensorflow/core/protobuf/queue_runner.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "QueueRunnerProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; diff --git a/tensorflow/core/protobuf/saver.proto b/tensorflow/core/protobuf/saver.proto index 5e72508c82..b130c7343b 100644 --- a/tensorflow/core/protobuf/saver.proto +++ b/tensorflow/core/protobuf/saver.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "SaverProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.util"; diff --git a/tensorflow/core/protobuf/tensorflow_server.proto b/tensorflow/core/protobuf/tensorflow_server.proto index bc99ae96a3..c4077bd98e 100644 --- a/tensorflow/core/protobuf/tensorflow_server.proto +++ b/tensorflow/core/protobuf/tensorflow_server.proto @@ -18,7 +18,7 @@ syntax = "proto3"; import "tensorflow/core/protobuf/config.proto"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "ServerProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.distruntime"; diff --git a/tensorflow/core/protobuf/worker.proto b/tensorflow/core/protobuf/worker.proto index 504d157c40..9b390dda4a 100644 --- a/tensorflow/core/protobuf/worker.proto +++ b/tensorflow/core/protobuf/worker.proto @@ -16,7 +16,7 @@ limitations under the License. syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "WorkerProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.distruntime"; diff --git a/tensorflow/core/util/event.proto b/tensorflow/core/util/event.proto index ff14acd96f..069e67a16d 100644 --- a/tensorflow/core/util/event.proto +++ b/tensorflow/core/util/event.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "EventProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.util"; diff --git a/tensorflow/core/util/memmapped_file_system.proto b/tensorflow/core/util/memmapped_file_system.proto index e1f9345a5a..bf6cb4af29 100644 --- a/tensorflow/core/util/memmapped_file_system.proto +++ b/tensorflow/core/util/memmapped_file_system.proto @@ -15,7 +15,7 @@ limitations under the License. syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; // A message that describes one region of memmapped file. message MemmappedFileSystemDirectoryElement { diff --git a/tensorflow/core/util/saved_tensor_slice.proto b/tensorflow/core/util/saved_tensor_slice.proto index d1e4e85edc..6278685957 100644 --- a/tensorflow/core/util/saved_tensor_slice.proto +++ b/tensorflow/core/util/saved_tensor_slice.proto @@ -18,7 +18,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "SavedTensorSliceProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.util"; diff --git a/tensorflow/core/util/test_log.proto b/tensorflow/core/util/test_log.proto index d957ee2969..61f29fe131 100644 --- a/tensorflow/core/util/test_log.proto +++ b/tensorflow/core/util/test_log.proto @@ -3,7 +3,7 @@ syntax = "proto3"; import "google/protobuf/any.proto"; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; option java_outer_classname = "TestLogProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.util.testlog"; diff --git a/tensorflow/python/training/checkpoint_state.proto b/tensorflow/python/training/checkpoint_state.proto index 3abcd71955..9172a5c331 100644 --- a/tensorflow/python/training/checkpoint_state.proto +++ b/tensorflow/python/training/checkpoint_state.proto @@ -1,7 +1,7 @@ syntax = "proto3"; package tensorflow; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; // Protocol buffer representing the checkpoint state. // diff --git a/tensorflow/python/util/protobuf/compare_test.proto b/tensorflow/python/util/protobuf/compare_test.proto index fa0b5de9f0..445ba55406 100644 --- a/tensorflow/python/util/protobuf/compare_test.proto +++ b/tensorflow/python/util/protobuf/compare_test.proto @@ -2,7 +2,7 @@ syntax = "proto2"; package compare_test; -// option cc_enable_arenas = true; +option cc_enable_arenas = true; enum Enum { A = 0; |