Repository navigation
Releases: Eden-sudo/Symbex-1
Releases · Eden-sudo/Symbex-1
Release list
SYMBEX-1 V2.0.0 - Block-Gated Architecture
🚀 SYMBEX-1: Block-Gated 1-Bit Inference Engine (v2.0.0)
SYMBEX-1 v2.0.0 is a massive architectural overhaul, transitioning from static multi-bit slicing to a purely dynamic 1-bit Block-Gated topology. Designed for bare-metal microcontrollers (SRAM < 2 KB), it drops computational latency by orders of magnitude while achieving FP32-level accuracy using strictly binary math (XNOR + Popcount).
✨ Main Features
- Dynamic Block-Gating (Early Exit): The network now evaluates peripheral data in real-time and physically skips inactive blocks (
continue;), evading dead computation cycles. - Pure 1-Bit XNOR+Popcount Engine: Complete eradication of 8-bit asymmetric outliers. The processor never multiplies arithmetically.
- Zero-Heap & Stack-Safe: Maintains a strict static memory architecture. Zero usage of
malloc,new, or Variable Length Arrays (VLAs). - Modular Compiler Core: The Python compiler was rewritten into a professional
compiler_core/SDK (Trainer, Numpy Simulator, Validator, Exporter) that auto-generates the entire C++ wiring.
🛠️ What's New in this Version
- [UPDATE] Architectural Leap: Replaced the legacy V1 static Voting Pool with the V2 Block-Gated topology.
- [NEW] SWAR Algorithm Injection: Implemented SIMD Within A Register (SWAR) emulation via HAL (
symbex_config.h) for ultra-fast bit counting on simple microcontrollers lacking native popcount. - [NEW] Hardware-Accurate Numpy Simulator: Python now simulates the exact C++
int32_tbit-math (including Insertion Sort Tie-Breaking logic) to guarantee 100.00% fidelity before flashing to the board. - [FIX] Flash Memory Optimization: Reduced Flash memory footprint by over 50% (down to ~4.8 KB for a 512-neuron hidden layer) by eliminating the old outlier overhead arrays.
- [NEW] Clean SDK Examples: Restructured official benchmarks for
01_Bitslice_V1and02_BlockGated_V2directly accessible via the Arduino IDE.
📊 V2 Performance Profile (ESP32 @ 240MHz)
- Topology: 64 → 512 (1-bit) → 10
- Accuracy: 95.28% (Surpassing the 94.17% FP32 baseline)
- Latency: ~645 µs
- Flash Size: ~4.8 KB
- Hardware Fidelity: 100.00%
v1.0.0
🚀 SYMBEX-1: Extreme Edge-AI Inference Engine (v1.0.0)
SymbexLayer es un motor de inferencia neuronal bare-metal diseñado desde cero para microcontroladores con recursos de memoria extremos (SRAM < 2 KB). Permite ejecutar redes neuronales multicapa directamente en silicio mediante cuantización matemática avanzada (1 a 4 bits) y operaciones Bit-slicing (XNOR + Popcount), eliminando por completo la necesidad de punto flotante.
✨ Características Principales
-
Zero-Heap & Zero-VLA: Arquitectura estricta de memoria estática. Cero uso de
malloc,newo arreglos de longitud variable en la pila (Stack-safe). - Compresión Extrema: Reduce la huella en memoria hasta en un 90%+ respecto a modelos FP32, preservando una fidelidad >99% en hardware.
-
Matemática Dinámica: Soporte nativo para resoluciones dinámicas (
$K=1$ hasta$K=4$ bits) y factor de expansión topológica ($M$ ). -
Cableado C++ 100% Automatizado: El compilador de Python (
symbex_compiler.py) diseña la topología, cuantiza los pesos y escribe automáticamente todo el código C++ de inicialización (symbex_weights.h). El usuario solo necesita llamar asymbex_init(). -
Compatibilidad Universal (
architectures=*):-
Familia AVR (8 bits): Usa
PROGMEMdinámicamente para proteger la SRAM (Ej: Arduino Uno, Nano, Mega). - Familia ESP32 / ARM (32 bits): Ejecución a máxima velocidad en RAM sin cuellos de botella (Ej: ESP32-CAM, STM32, RP2040).
-
Familia AVR (8 bits): Usa
🛠️ Actualizaciones de esta versión
- [FIX] Outliers con Signo Cruzado: Implementación matemática perfecta del signo de los valores atípicos cruzando el MSB del núcleo con el bit de entrada mediante lógica XNOR.
-
[UPDATE] Bucle K-Bits Dinámico: El motor C++ ahora itera dinámicamente la resolución
$K$ , evitando punterosNULLy lecturas de memoria de interrupción en AVR. - [NEW] Ping-Pong Buffering: Reutilización de dos buffers estáticos para la propagación de capas ocultas, ahorrando cientos de bytes de SRAM.
-
[NEW] Ejemplos Oficiales:
-
SymbexBenchmark: Demostración completa de integración con pesos auto-generados por Python. -
XOR_Manual: Un ejemplo educativo construido 100% a mano que documenta el uso de padding como bias offset.
-
Autor: Carlos Eden Duarte