How wangyuyue/simpyssd works
SimpySSD models BeaconGNN workloads executing with in-storage graph sampling on configurable SSD, system, and accelerator designs. The principal workflow starts in the experiment runner: it selects a workload and configurations, builds a graph and sampled subgraphs, runs GNN requests through an event-driven SSD/system model, then collects and plots latency, utilization, speedup, and energy results. The graph preserves documented experiment and analysis stages; implementation links are limited to relationships visible in excerpts or the SOURCE INDEX.
Main entry points: main.py Experiment Runner · system.py System Model · accel_config.py Accelerator Configuration · gnn.py GNN Execution
Components 25
Workload Modeling
- Experiment Runner
src/main.py - Graph Workloads
src/graph.py - Subgraph Sampling
src/subgraph.py - GNN Execution
src/gnn.py - Accelerator Topology
src/gnn_topology.py
Device Simulation
- Event Engine
src/sim.py - SSD Model
src/ssd_estimate.py - System Model
src/system.py - DRAM Model
src/dram.py - PCIe Model
src/pcie.py - Accelerator Model
src/nn_accel.py
Design Configuration
- SSD Configuration
src/ssd_config.py - System Configuration
src/system_config.py - Accelerator Configuration
src/accel_config.py - SSD Profiles
configs/ssd - System Profiles
configs/system - Accelerator Profiles
configs/accelerator
Results Analysis
- Simulation Statistics
src/ssd_statistics/sys_stat.py - Energy Estimation
src/ssd_statistics/energy_estimate.py - Latency Analysis
src/ssd_statistics/dataframe.py - Result Export
src/ssd_statistics/dump.py - Result Plotting
src/ssd_statistics/plot.py - Series Processing
src/ssd_statistics/series_process.py
Other components
- Experiment User
- Scale-Sim Tool
Connections 30
- Experiment User → Experiment Runner: starts experiments
README.md - Experiment Runner → Graph Workloads: builds workload
src/main.py - Experiment Runner → Subgraph Sampling: samples subgraphs
src/main.py - Experiment Runner → GNN Execution: runs workload
src/main.py - GNN Execution → Graph Workloads: queries graph
src/gnn.py - GNN Execution → SSD Model: issues commands
src/gnn.py - Experiment Runner → System Model: creates system
src/main.py - System Model → SSD Model: instantiates SSD
src/system.py - System Model → PCIe Model: uses PCIe
src/system.py - System Model → Accelerator Model: uses accelerator
src/system.py - System Model → DRAM Model: uses DRAM
src/system.py - SSD Model → Event Engine: schedules events
src/ssd_estimate.py - Experiment Runner → Event Engine: executes events
src/main.py - Experiment Runner → SSD Configuration: loads profile
src/main.py - Experiment Runner → System Configuration: selects profile
src/main.py - Experiment Runner → Accelerator Configuration: sets accelerator
src/main.py - SSD Configuration → SSD Profiles: reads settings
src/ssd_config.py - System Configuration → System Profiles: reads settings
src/system_config.py - Accelerator Configuration → Accelerator Profiles: reads settings
- Accelerator Configuration → Accelerator Topology: builds topology
src/accel_config.py - Accelerator Configuration → Scale-Sim Tool: simulates compute
src/accel_config.py - Experiment Runner → Simulation Statistics: records statistics
src/main.py - Experiment Runner → Energy Estimation: computes energy
src/main.py - Experiment Runner → Result Export: exports results
src/main.py - Experiment Runner → Result Plotting: plots results
src/main.py - Result Export → Latency Analysis: builds dataframes
src/ssd_statistics/dump.py - Result Plotting → Series Processing: processes series
src/ssd_statistics/plot.py - Result Plotting → Latency Analysis: plots dataframes
src/ssd_statistics/plot.py - Energy Estimation → SSD Configuration: uses SSD settings
src/ssd_statistics/energy_estimate.py - Energy Estimation → System Configuration: uses system settings
src/ssd_statistics/energy_estimate.py