diff options
Diffstat (limited to 'src/online_crossbar.h')
| -rw-r--r-- | src/online_crossbar.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/online_crossbar.h b/src/online_crossbar.h new file mode 100644 index 0000000..f89a306 --- /dev/null +++ b/src/online_crossbar.h @@ -0,0 +1,40 @@ +#ifndef ONLINE_CROSSBAR_H +#define ONLINE_CROSSBAR_H + +#include "spires_interface.h" +#include <stddef.h> + +typedef struct Online_Crossbar Online_Crossbar; + +typedef struct { + size_t num_neurons; + size_t num_outputs; + size_t num_timesteps; + double time_step; + double spike_amplitude; + double load_resistance; + double r_on; + double r_off; + const char *model_path; + const char *subcircuit_name; + const char *netlist_path; +} Online_Crossbar_Config; + +int online_crossbar_init(const Online_Crossbar_Config *config, + const spires_reservoir *reservoir, + Online_Crossbar **crossbar_out); +int online_crossbar_start(Online_Crossbar *crossbar); + +/* + * Submit state[t]. On return, output_ready is zero for t=0 and otherwise + * previous_output contains output[t-1]. Calls apply bounded backpressure. + */ +int online_crossbar_submit(Online_Crossbar *crossbar, size_t timestep, + const double *state, double *previous_output, + int *output_ready); + +/* Wait for and copy the output belonging to the final submitted state. */ +int online_crossbar_finish(Online_Crossbar *crossbar, double *final_output); +void online_crossbar_destroy(Online_Crossbar *crossbar); + +#endif |
