diff options
| author | Your Name <[email protected]> | 2026-08-24 10:53:50 -0700 |
|---|---|---|
| committer | Your Name <[email protected]> | 2026-08-24 11:57:49 -0700 |
| commit | 97be0b74e9badf81ff5772314bf77e465467ddf7 (patch) | |
| tree | 6cb36447888747c8b38814485590310a5728957e | |
| parent | 19f9e5e972ddd4e08fa99f96a0ccc4101b86c9b1 (diff) | |
updated README
| -rw-r--r-- | README.md | 52 | ||||
| -rw-r--r-- | src/README.md | 70 |
2 files changed, 104 insertions, 18 deletions
@@ -1,8 +1,50 @@ # benchmark_suite_IREU A benchmark suite for memristive and memcapacitive crossbar computing systems -## overview -The memristive computing field lacks standardized benchmarks that control for workload characteristics, expose -device-type differences, and report results comparable to conventional CMOS hardware. This project designs, -implements, and releases a benchmark suite targeting memristive and memcapacitive crossbar architectures on -CMOS substrates. +## Research question +How does a chosen device subcircuit affect the same computing system? + +The memristive computing field lacks standardized benchmarks that control for +workload characteristics, expose device-type differences, and report results +comparable to conventional CMOS hardware. This project designs, implements, and +releases a benchmark suite targeting memristive and memcapacitive crossbar +architectures on CMOS substrates. + +## abstract +MemDevice Benchmark is a benchmarking framework for simulated memristor crossbar's +using reservoir computing tasks as standardized workloads with the goal of revealing +unique device model effects. The framework evaluates memristor devices under the +same circuit, network, and workload characteristics. In the proposed architecture +the SPICE crossbar is implemented as the readout layer for a reservoir computer. +Ridge regressiong training is done on a software reservoir, training the software +weights. An input series is given to the reservoir, the resulting temporal states +are converted into voltage signals applied to the crossbar rows. The trained readout +weights are converted into equivalent resistances to serve as the initial device +values. The crossbar columns are read and mapped back to human readable data that +prove task prediciton capability. + +Because the reservoir, crossbar, training procedure and benchmark tasks remain fixed, +different SPICE device models can be hot swapped and benchmarked in one continous +process, making fair comparisons possible and observing how device model choice +affects the same computing system + +## Setup +**Download Spires:** +git clone https://github.com/txmastin/spires.git +cd spires +make + +**Download plplot:** +git clone git://git.code.sf.net/p/plplot/plplot plplot.git +cd plplot.git +mkdir build +cd build +make +sudo make install + +**Other dependencies may be required for the listed libraries** + +**from the projects root directory (~/MemDevice_Benchmark/)** +make run + +## diff --git a/src/README.md b/src/README.md index cff34af..5d0dcb0 100644 --- a/src/README.md +++ b/src/README.md @@ -1,20 +1,64 @@ -OH MY GOD SO MUCH HAS CHANGED NEED TO UPDATE +# public api +## benchmark.c -# memristor crossbar readout layer for reservoir computer -##setup -### download spires +The public API for running crossbar simulation, calculating performance metrics, +and generating plots. -## overview -### simulation +* **MemModel struct** + * This is a struct for making model swapping easier + * members + * const char *model_path + * const char *subcircuit_name -### benchmark +* **run_benchmark() (int)** + * Executes the full crossbar simulation pipeline and stores the decoded + crossbar predictions in the passed output array. + * parameters + * const spires_reservoir_config *config + * spires_reservoir *reservoir + * Reservoir_State_Matrix *state_matrix + * const char *model_path + * const char *subcircuit_name + * double *predictions_out -## Goal -The goal is to able to simulate a spires reservoir on a memristor crossbar using -a custom memristor spice model(HIL), thus you can run the same simulation with -multiple models to compare how each performs using benchmark results. +* **calculate_MSE() (double)** + * calculates the mean squared error of the predictions against the expected + values + * parameters + * const double *expected + * const double *predicted + * const size_t *num_steps + * const size_t num_outputs -## task +* **plot_raster() (int)** + * generates a raster plot of the reservoir based on the spike threshhold parameter + (not that useful tbh but can be cool to see), plot stored as svg in output directory + * parameters + * const Reservoir_State_Matrix *matrix + * const size_t neurons_to_plot + * const double spike_threshold + +* **plot_reservoir_predictions() (int)** + * plots the decoded crossbar predictions against the expected values, plot stored + as svg in output directory with name "reservoir_prediction_$(model_name).svg" + * parameters + * const double *expected + * const double *predicted + * size_t num_samples + * size_t num_outputs + * size_t output_to_plot + * const char *model_path + +* **plot_model_delta() (int)** + * plots the prediction differences for every timestep between the given model + and the fixed resistor baseline + * parameters + * const double *fixed + * const double *model + * const size_t num_samples + * const size_t num_outputs + * const size_t output_to_plot + +# Internal header files -## metrics |
