blob: f89a3068906e721fec274c9bbc44586a5af5f62d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
|