summaryrefslogtreecommitdiff
path: root/src/spires_interface.h
diff options
context:
space:
mode:
authorYour Name <[email protected]>2026-07-30 12:36:31 -0700
committerYour Name <[email protected]>2026-07-30 12:36:31 -0700
commitf4854ae4c816a7718c88b3b0d230c24786553f26 (patch)
tree961026865725518e3f85ace350cdc8db75588f43 /src/spires_interface.h
parent09c8f740da0b833c08c78fa30f80e3dc04e218c4 (diff)
SPICE crossbar readout layer
Diffstat (limited to 'src/spires_interface.h')
-rw-r--r--src/spires_interface.h56
1 files changed, 24 insertions, 32 deletions
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 <stddef.h>
#include <spires.h>
+#include <stddef.h>
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
-);
+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 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);
-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
-);
+void free_reservoir_state_matrix(Reservoir_State_Matrix *matrix);
#endif