native_neural_network 0.3.1

Lib no_std Rust for native neural network (.rnn)
Documentation
#ifndef RNN_API_H
#define RNN_API_H

#include <stddef.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct RnnFfiBenchmarkRecord {
  const uint8_t* model_name_ptr;
  size_t model_name_len;
  const uint8_t* precision_ptr;
  size_t precision_len;
  uint64_t elapsed_ms;
  uint64_t iterations;
  float avg_loss;
  float last_loss;
  uint64_t output_bytes;
  uint64_t train_samples;
  uint64_t total_params;
  uint32_t layer_count;
  uint32_t input_dim;
  uint32_t output_dim;
  uint64_t benchmark_flags;
  uint64_t weights_bytes;
  uint64_t biases_bytes;
  float min_loss;
  float max_loss;
  float loss_stddev;
  float iterations_per_sec;
  float samples_per_sec;
} RnnFfiBenchmarkRecord;

typedef struct RnnFfiBenchmarkView {
  const uint8_t* model_name_ptr;
  size_t model_name_len;
  const uint8_t* precision_ptr;
  size_t precision_len;
  uint64_t elapsed_ms;
  uint64_t iterations;
  float avg_loss;
  float last_loss;
  uint64_t output_bytes;
  uint64_t train_samples;
  uint64_t total_params;
  uint32_t layer_count;
  uint32_t input_dim;
  uint32_t output_dim;
  uint64_t benchmark_flags;
  uint64_t weights_bytes;
  uint64_t biases_bytes;
  float min_loss;
  float max_loss;
  float loss_stddev;
  float iterations_per_sec;
  float samples_per_sec;
} RnnFfiBenchmarkView;

typedef enum RnnFfiCode {
  RNN_FFI_OK = 0,
  RNN_FFI_NULL_POINTER = 1,
  RNN_FFI_INVALID_ARGUMENT = 2,
  RNN_FFI_BAD_BYTES = 3,
  RNN_FFI_CAPACITY_TOO_SMALL = 4,
  RNN_FFI_INTERNAL = 8,
} RnnFfiCode;

uint32_t rnn_ffi_api_version(void);

int32_t rnn_ffi_benchmark_encoded_size(
  const RnnFfiBenchmarkRecord* record,
  size_t* out_size);

int32_t rnn_ffi_encode_benchmark_blob(
  const RnnFfiBenchmarkRecord* record,
  uint8_t* out_ptr,
  size_t out_len,
  size_t* out_used);

int32_t rnn_ffi_decode_benchmark_blob(
  const uint8_t* blob_ptr,
  size_t blob_len,
  RnnFfiBenchmarkView* out_view);

const char* rnn_ffi_error_message(int32_t code);

#ifdef __cplusplus
}
#endif

#endif