5 repositorios
Memory allocation strategies that ensure buffers have trailing padding to support wide vector loads.
Distinct from Cache-Aware Memory Access: Distinct from general cache-aware access: specifically addresses the padding requirement for SIMD memory safety.
Explore 5 awesome GitHub repositories matching software engineering & architecture · SIMD Buffer Padding. Refine with filters or upvote what's useful.
simdjson is a high-performance JSON parser that utilizes SIMD instructions to process gigabytes of data per second. It functions as a SIMD JSON parser, a multithreaded NDJSON processing library, a UTF-8 validation engine, and a tool for JSON minification and string building. The project focuses on high-throughput data processing, enabling the ingestion of massive JSON volumes and the verification of UTF-8 encoding standards. It includes dedicated capabilities for constructing JSON strings with optimized memory usage and removing unnecessary whitespace from documents to reduce file size. The
Allocates extra space at the end of buffers to allow wide SIMD loads without memory access violations.
The Disruptor is a lock-free inter-thread messaging library and high-performance event bus. It implements a concurrent ring buffer designed for high-concurrency and low-latency message sequencing. The project utilizes a specific messaging architecture to eliminate lock contention, enabling high-throughput event routing and the exchange of continuous event streams between threads. It ensures strict first-in-first-out ordering and immediate data visibility across processing threads. The library provides capabilities for lock-free data streaming, sequential data ordering, and sequence-based eve
Implements cache-line padding to eliminate false sharing and maximize CPU cache efficiency.
This project is a collection of educational resources and technical guides focused on Go performance optimization. It provides instruction on improving execution speed and reducing memory usage through code and architectural refinements. The guides cover advanced strategies for low-level programming, including the use of assembly for SIMD instructions and unsafe pointers for direct memory manipulation. It also details concurrency optimization techniques such as lock sharding and cache-line padding to reduce contention and improve hardware utilization. The material encompasses broad capabilit
Implements cache-line padding to prevent false sharing and reduce CPU cache coherence traffic.
Este proyecto es un generador de ID único distribuido diseñado para producir identificadores únicos y ordenables globalmente de 64 bits a través de múltiples nodos. Implementa un algoritmo compatible con Snowflake que evita colisiones combinando marcas de tiempo, identificadores de trabajador y números de secuencia en un solo entero. El sistema incluye un orquestador de ID de trabajador para asignar y mantener identidades de máquina únicas durante el inicio y la migración de instancias utilizando estrategias respaldadas por bases de datos. Para aumentar el rendimiento de las solicitudes y reducir la latencia, utiliza una capa de caché de búfer circular que pre-genera identificadores y emplea un mecanismo de recarga basado en umbrales. El software proporciona capacidades para gestionar claves de bases de datos distribuidas, coordinar nodos del sistema y configurar la distribución de bits para equilibrar las necesidades de concurrencia frente a la vida útil del sistema. También incluye utilidades para analizar los identificadores generados de vuelta a sus componentes originales.
Employs cache-line padding between buffer elements to eliminate false sharing and increase hardware throughput.
Este proyecto es una referencia técnica y una colección de notas de análisis interno centradas en el runtime y compilador del lenguaje Go. Proporciona un desglose detallado de los aspectos internos del lenguaje, cubriendo la gestión de memoria, la recolección de basura (garbage collection) y el modelo de ejecución del programador. El material se distingue por proporcionar inmersiones profundas en detalles del sistema de bajo nivel, incluyendo una referencia para instrucciones de ensamblador de Go, uso de registros e interfaz de llamadas al sistema. Analiza específicamente la implementación interna de primitivas de concurrencia, como el mecanismo de programación de goroutines, operaciones de canales e implementaciones de bloqueos de mutex. La cobertura se extiende a la teoría de construcción de compiladores, incluyendo análisis léxico y sintáctico, así como la mecánica del sistema de tipos y la gestión de interfaces. También detalla varias técnicas de optimización de rendimiento, utilidades de diagnóstico de runtime para rastreo de pila (stack tracing) y primitivas de E/S de red.
Details the use of padding bytes to prevent CPU cache coherence traffic caused by false sharing.