From ad3ef4c05b2fab077ce7fb56a4927100fed239e9 Mon Sep 17 00:00:00 2001 From: Eugene Brevdo Date: Thu, 25 Feb 2016 12:12:47 -0800 Subject: TestReporter is back in. Maybe also fixed the Android build. Change: 115589642 --- tensorflow/core/util/test_log.proto | 147 ++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 tensorflow/core/util/test_log.proto (limited to 'tensorflow/core/util/test_log.proto') diff --git a/tensorflow/core/util/test_log.proto b/tensorflow/core/util/test_log.proto new file mode 100644 index 0000000000..771a1087c1 --- /dev/null +++ b/tensorflow/core/util/test_log.proto @@ -0,0 +1,147 @@ +// Protocol messages for describing the results of benchmarks and unit tests. +syntax = "proto3"; + +import "google/protobuf/any.proto"; + +// option cc_enable_arenas = true; +option java_outer_classname = "TestLogProtos"; +option java_multiple_files = true; +option java_package = "org.tensorflow.util.testlog"; + +package tensorflow; + +message EntryValue { + oneof kind { + double double_value = 1; + string string_value = 2; + } +}; + +// Each unit test or benchmark in a test or benchmark run provides +// some set of information. Here we provide some reasonable keys +// one would expect to see, with optional key/value pairs for things +// we haven't considered. +// +// This BenchmarkEntry should be emitted by each unit test or benchmark +// reporter. +message BenchmarkEntry { + // The name of the specific benchmark or test + // (e.g. BM_AdjustContrast_gpu_B_W_H) + string name = 1; + + // If a benchmark, how many iterations it was run for + int64 iters = 2; + + // Total cpu time used for all iterations (in seconds) + double cpu_time = 3; + + // Total wall time used for all iterations (in seconds) + double wall_time = 4; + + // Throughput (in MB/s) + double throughput = 5; + + // Generic map from result key to value. + map extras = 6; +}; + +message BenchmarkEntries { + repeated BenchmarkEntry entry = 1; +} + +message BuildConfiguration { + string mode = 1; // opt, dbg, etc + repeated string config = 2; // asan, cuda, etc + repeated string copts = 3; // -mavx, etc. +}; + +message CommitId { + oneof kind { + int64 changelist = 1; + string hash = 2; + } +}; + +message CPUInfo { + // How fast are these cpus? + double mhz_per_cpu = 1; + + // Additional cpu information. For example, + // Intel Ivybridge with HyperThreading (24 cores) dL1:32KB dL2:256KB dL3:30MB + string cpu_info = 2; + + // What kind of cpu scaling is enabled on the host. + // Examples include "performance", "ondemand", "conservative", "mixed". + string cpu_governor = 3; + + // Cache sizes (in bytes), e.g. "L2": 262144 (for 256KB) + map cache_size = 4; +}; + +message GPUInfo { + string model = 1; // e.g. "Tesla K40c" + string uuid = 2; // Final entry in output of "nvidia-smi -L" +}; + +message PlatformInfo { + string bits = 1; // e.g. '64bit' + string linkage = 2; // e.g. 'ELF' + string machine = 3; // e.g. 'i386' + string processor = 4; // e.g. 'amdk6' (the real processor name) + string release = 5; // e.g. '3.13.0-76-generic' + string system = 6; // e.g. 'Linux' + string version = 7; // e.g. '#120-Ubuntu SMP Mon Jan 18 15:59:10 UTC 2016' +}; + +message MachineConfiguration { + // Host name of machine that ran the benchmark. + string hostname = 1; + + // Additional platform information. + PlatformInfo platform_info = 2; + + // CPU Information. + CPUInfo cpu_info = 3; + + // Other devices that are attached and relevant (e.g. GPUInfo). + repeated google.protobuf.Any device_info = 4; +}; + +// Run-specific items such as arguments to the test / benchmark. +message RunConfiguration { + repeated string arguments = 1; +} + +// The output of one benchmark / test run. Each run contains a list of +// tests or benchmarks, stored as BenchmarkEntry messages. +// +// This message should be emitted by the reporter (which runs the +// test / BM in a subprocess and then reads the emitted BenchmarkEntry messages; +// usually from a serialized json file, finally collecting them along +// with additional information about the test run. +message TestResults { + // The target of the run, e.g.: + // //tensorflow/core:kernels_adjust_contrast_op_benchmark_test + string target = 1; + + // The list of tests or benchmarks in this run. + BenchmarkEntries entries = 2; + + // The configuration of the build (compiled opt? with cuda? any copts?) + BuildConfiguration build_configuration = 3; + + // The commit id (git hash or changelist) + CommitId commit_id = 4; + + // The time the run started (in seconds of UTC time since Unix epoch) + int64 start_time = 5; + + // The amount of time the total run took (wall time in seconds) + double run_time = 6; + + // Machine-specific parameters (Platform and CPU info) + MachineConfiguration machine_configuration = 7; + + // Run-specific parameters (arguments, etc) + RunConfiguration run_configuration = 8; +}; -- cgit v1.2.3