From f4854ae4c816a7718c88b3b0d230c24786553f26 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 30 Jul 2026 12:36:31 -0700 Subject: SPICE crossbar readout layer --- src/spires_interface.h | 62 ++++++++++++++++++++++---------------------------- 1 file changed, 27 insertions(+), 35 deletions(-) (limited to 'src/spires_interface.h') diff --git a/src/spires_interface.h b/src/spires_interface.h index ebf4b76..006b9d7 100644 --- a/src/spires_interface.h +++ b/src/spires_interface.h @@ -1,43 +1,35 @@ -#ifndef SPIRES_BACKEND_H -#define SPIRES_BACKEND_H +#ifndef SPIRES_INTERFACE_H +#define SPIRES_INTERFACE_H -#include #include +#include typedef struct { - size_t num_samples; //number of time steps - size_t num_features; - double *states; + size_t num_samples; // number of time steps + size_t num_features; + double *states; } Reservoir_State_Matrix; -int collect_reservoir_states( - spires_reservoir *reservoir, - const double *input_series, - size_t series_length, - Reservoir_State_Matrix *result -); - -int map_signed_weights_to_resistance( - const double *weights, - size_t num_neurons, - size_t num_outputs, - double resistance_on, - double resistance_off, - double *resistances, - double *conductance_offset, - double *conductance_scale -); - -int train_reservoir( - spires_reservoir *reservoir, - double *input_series, - double *taret_series, - size_t series_length, - double lambda -); - -void free_reservoir_state_matrix( - Reservoir_State_Matrix *matrix -); +typedef struct { + double g_min; + double g_max; + double alpha; + double max_abs_weight; +} conductance_mapping; + +int collect_reservoir_states(spires_reservoir *reservoir, + const double *input_series, size_t series_length, + Reservoir_State_Matrix *result); + +int train_reservoir(spires_reservoir *reservoir, double *input_series, + double *taret_series, size_t series_length, double lambda); + +int convert_weights_to_resistances(const spires_reservoir *reservoir, + size_t num_neurons, size_t num_outputs, + double r_on, double r_off, + double **resistances_out, + conductance_mapping *mapping); + +void free_reservoir_state_matrix(Reservoir_State_Matrix *matrix); #endif -- cgit v1.2.3