Skip to content

Releases: Eden-sudo/Symbex-1

SYMBEX-1 V2.0.0 - Block-Gated Architecture

Choose a tag to compare

@Eden-sudo Eden-sudo released this 04 Sep 00:29

🚀 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_t bit-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_V1 and 02_BlockGated_V2 directly 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

Choose a tag to compare

@Eden-sudo Eden-sudo released this 21 Aug 23:57

🚀 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, new o 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 a symbex_init().
  • Compatibilidad Universal (architectures=*):
    • Familia AVR (8 bits): Usa PROGMEM diná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).

🛠️ 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 punteros NULL y 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