// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto3";

package ml;

// TfliteBenchmarkConfig contains configurations used for tflite benchmarking.
message TfliteBenchmarkConfig {
  // The path on the device to load the tflite_model.
  string tflite_model_filepath = 1;
  // The path on the device to load the expected input output.
  string input_output_filepath = 2;
  // number of times to test each input file
  int32 num_runs = 3;
  // delegate to gpu
  bool use_gpu = 4;
}

// FlatBufferModelSpecProto contains full information of a tflite model.
message FlatBufferModelSpecProto {
  // The content of the flatbuffer of the model.
  bytes model_string = 1;

  // tflite node specification need to reconstruct the tensor.
  message NodeSpec {
    // The index of this node in the tflite interpreter.
    int32 index = 1;
    // The dims for re-constructing the tensor shape.
    repeated int32 dims = 2;
  }
  // As accepted by the constructor of ModelImpl.
  map<string, NodeSpec> required_inputs = 2;
  map<string, NodeSpec> required_outputs = 3;
}

// ExpectedInputOutput contains input and expected_output for benchmarking.
message ExpectedInputOutput {
  // A copy of tensorflow Example definition is defined here temporarily, this
  // should be replaced by tensorflow::Example when it is available.
  message Example {
    // Containers to hold repeated fundamental values.
    message BytesList { repeated bytes value = 1; }
    message FloatList { repeated float value = 1 [packed = true]; }
    message Int64List { repeated int64 value = 1 [packed = true]; }

    // Containers for the data type.
    message Feature {
      // Each feature can be exactly one kind.
      oneof kind {
        BytesList bytes_list = 1;
        FloatList float_list = 2;
        Int64List int64_list = 3;
      }
    }

    message Features {
      // Map from feature name to feature.
      map<string, Feature> feature = 1;
    }
    Features features = 1;
  }

  // Input Example to test.
  Example input = 1;
  // Expected output.
  Example expected_output = 2;
}
