Files
wifi-densepose/examples/exo-ai-2025/research/docs/01-neuromorphic-spiking.md
ruv d803bfe2b1 Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector
git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
2026-02-28 14:39:40 -05:00

103 lines
3.5 KiB
Markdown

# 01 - Neuromorphic Spiking Networks
## Overview
Bit-parallel spiking neural network implementation achieving 64 neurons per u64 word with SIMD-accelerated membrane dynamics and polychronous group detection for qualia emergence.
## Key Innovation
**Bit-Parallel Spike Representation**: Each bit in a u64 represents one neuron's spike state, enabling 64 neurons to be processed in a single CPU instruction.
```rust
pub struct BitParallelSpikes {
/// 64 neurons packed into single u64
spikes: u64,
/// Membrane potentials (SIMD-aligned)
membranes: [f32; 64],
/// Spike times for STDP
spike_times: [u64; 64],
}
```
## Architecture
```
┌─────────────────────────────────────────┐
│ Bit-Parallel Layer │
│ ┌─────┬─────┬─────┬─────┬─────┐ │
│ │ u64 │ u64 │ u64 │ u64 │ ... │ │
│ │ 64n │ 64n │ 64n │ 64n │ │ │
│ └──┬──┴──┬──┴──┬──┴──┬──┴─────┘ │
│ │ │ │ │ │
│ ┌──▼─────▼─────▼─────▼──┐ │
│ │ SIMD Membrane Update │ │
│ │ (AVX-512: 16 floats) │ │
│ └──────────┬─────────────┘ │
│ │ │
│ ┌──────────▼─────────────┐ │
│ │ Polychronous Detection │ │
│ │ (Qualia Extraction) │ │
│ └─────────────────────────┘ │
└─────────────────────────────────────────┘
```
## Performance
| Metric | Value |
|--------|-------|
| Neurons per word | 64 |
| SIMD width | AVX-512 (16 floats) |
| Spike propagation | O(1) per word |
| Memory efficiency | 1 bit/neuron |
## Polychronous Groups (Qualia)
Polychronous groups are precise spike timing patterns that emerge from network dynamics:
```rust
pub struct PolychronousGroup {
/// Sequence of (neuron_id, relative_time_ns)
pub pattern: Vec<(u32, u64)>,
/// Integrated information (Φ)
pub phi: f64,
/// Occurrence count
pub occurrences: usize,
/// Semantic label
pub label: Option<String>,
}
```
## STDP Learning
Spike-Timing Dependent Plasticity for unsupervised learning:
- **LTP** (Long-Term Potentiation): +1.0 when post fires after pre
- **LTD** (Long-Term Depression): -0.5 when pre fires after post
- **Time constant**: τ = 20ms
## Usage
```rust
use neuromorphic_spiking::{BitParallelSpikes, SpikingNetwork};
let mut network = SpikingNetwork::new(1_000_000); // 1M neurons
network.inject_spikes(&input_spikes);
network.step(1_000_000); // 1ms timestep
let qualia = network.detect_polychronous_groups();
println!("Detected {} qualia with Φ = {}", qualia.len(), qualia[0].phi);
```
## Benchmarks
```
spike_propagation/1M time: [1.23 ms 1.25 ms 1.27 ms]
membrane_update/1M time: [2.45 ms 2.48 ms 2.51 ms]
polychronous_detect time: [5.67 ms 5.72 ms 5.78 ms]
```
## References
- Izhikevich, E.M. (2006). "Polychronization: Computation with Spikes"
- Tononi, G. (2004). "Integrated Information Theory of Consciousness"