// go/cros-ml-benchmark-suite-docs

syntax = "proto3";

package chrome.ml_benchmark;

enum AccelerationMode {
  NO_ACCELERATION = 0;
  NNAPI = 1;
}

message CrOSBenchmarkConfig {
  reserved 2, 3;

  AccelerationMode acceleration_mode = 1;

  // String representation of the driver proto configuration, to be decoded by
  // the benchmark driver implementation.
  string driver_config = 4;
}

enum BenchmarkReturnStatus {
  OK = 0;
  INCORRECT_CONFIGURATION = 1;
  INITIALIZATION_FAILED = 2;
  BENCHMARK_TIMED_OUT = 3;
  RUNTIME_ERROR = 4;
}

message Metric {
  enum Direction {
    SMALLER_IS_BETTER = 0;
    BIGGER_IS_BETTER = 1;
  }

  // https://crbug.com/1047454#c7
  // Same units as in |tast/common/perf/perf.go|.
  enum Units {
    UNITLESS = 0;
    BYTES = 1;
    JOULES = 2;
    WATTS = 3;
    COUNT = 4;
    MS = 5;
    NPERCENT = 6;
    SIGMA = 7;
    TS_MS = 8;
  }

  // Adds a check that there's only a single value in |values|
  // if |cardinality| == |SINGLE|.
  enum Cardinality {
    SINGLE = 0;
    MULTIPLE = 1;
  }

  // |name| is prefixed by the scenario name and passed to the Crosbolt.
  string name = 1;
  Units units = 2;
  Direction direction = 3;
  Cardinality cardinality = 4;
  repeated double values = 5 [packed = true];
}

message BenchmarkResults {
  reserved 3, 4;

  BenchmarkReturnStatus status = 1;
  string results_message = 2;
  map<int32, int64> percentile_latencies_in_us = 5;

  repeated Metric metrics = 6;
}
