Cómo afecta la alineación de memoria al rendimiento SIMD

La alineación de los accesos a memoria influye de forma directa en el rendimiento de cualquier forma de vectorización SIMD, ya sea automática o explícita. Un acceso se considera alineado cuando su dirección es múltiplo del tamaño del acceso (por ejemplo, 64 bytes para un vector de 16 enteros de 4 by

VectorWare logra ejecutar Rust SIMD sobre la GPU

VectorWare ha anunciado que su toolchain permite ejecutar código Rust escrito con la API portable de SIMD (core::simd) directamente sobre la GPU, sin requerir anotaciones específicas de GPU en el código fuente. La compañía describe la técnica como una novedad sin precedentes que aprovecha el modelo

Por qué ryg_rans no es una librería y qué usar en su lugar

Fabian Giesen, conocido en la comunidad de gráficos y compresión como 'ryg', aclara en un extenso post que ryg_rans, su repositorio público publicado en 2014, nunca estuvo pensado para usarse como librería de producción, sino como ejemplo didáctico que acompaña a sus artículos sobre codificación ent

Diseñando el sistema de consultas de Krabby: objetivos y arquitectura

El autor describe el proceso de cinco meses para diseñar el sistema de consultas del compilador Krabby, inicialmente planteado con una arquitectura push que acabó descartada. Las principales limitaciones del modelo push eran que, al gestionar referencias pendientes, terminaba siendo un sistema de co

Zen de la programación paralela: la postura de un kernel

Un ensayo publicado en el blog smolnero reflexiona sobre el paper 'HipKittens: Fast and Furious AMD Kernels' (arXiv:2511.08083) y lo conecta con la filosofía zen de 'Mente zen, mente de principiante' de Shunryu Suzuki. El texto parte de una idea técnica: un kernel de GPU es una función especializada

Mejoras en std::simd::swizzle_dyn: rendimiento y portabilidad

El artículo analiza las limitaciones actuales de la función std::simd::swizzle_dyn de Rust, una primitiva SIMD que reorganiza elementos dentro de un vector en tiempo de ejecución. El autor, mantenedor del proyecto Fearless SIMD, describe tres problemas concretos. Primero, la implementación solo apro

ALP: compresión sin pérdida de coma flotante presente en repositorio de GitHub

ALP es un algoritmo de compresión sin pérdida para datos en coma flotante conforme al estándar IEEE 754, publicado como código fuente y banco de pruebas en el repositorio cwida/ALP de GitHub. Su artículo asociado, "ALP: Adaptive Lossless Floating-Point Compression", fue presentado en ACM SIGMOD 2024

Todos los programadores deberían conocer SIMD

SIMD, siglas de Single Instruction, Multiple Data, es una técnica de la CPU que permite ejecutar una misma operación sobre múltiples datos en paralelo: en lugar de comparar un byte por ciclo, el procesador puede comparar 4, 8 o más bytes con una sola instrucción. Aunque goza de fama de compleja y re

Gigatoken: un tokenizador en Rust hasta 1000 veces más rápido que HuggingFace

Gigatoken es una biblioteca de tokenización para modelos de lenguaje escrita en Rust que alcanza velocidades de hasta 24,53 GB/s en CPU AMD EPYC 9565 de 144 núcleos, frente a las 24,8 MB/s que ofrece el tokenizador de HuggingFace para GPT-2. Esto representa una aceleración cercana a 989 veces respec

Box3D aplica SIMD a la detección de colisiones con cascos convexos complejos

El motor de física Box3D incorpora optimizaciones SIMD (instrucciones vectoriales) en su algoritmo de detección de colisiones para reducir el coste del test de ejes de separación (SAT) entre cascos convexos en tres dimensiones. El autor parte de una técnica previa de SIMD "ancho" usada en el solver

Kimi K3 optimiza código Rust con SWAR y mejora el rendimiento un 2%

Un programador sometió a Kimi K3, el nuevo modelo de IA presentado esta semana como cercano a la frontera de calidad de modelos como GPT, a una prueba práctica de optimización de código en Rust. La tarea consistía en mejorar una función sobre la que el autor llevaba tiempo trabajando sin avances sig

Árboles de búsqueda estáticos: 40 veces más rápidos que la búsqueda binaria

Este artículo técnico presenta la implementación y optimización de un árbol de búsqueda estático (S+ tree) para localizar datos ordenados con un rendimiento muy superior al de la búsqueda binaria clásica. Partiendo de la idea introducida en Algorithmica, el autor parte de un código base y lo somete

l: un nuevo motor compatible con k, q y qSQL sobre vectores comprimidos

l es un nuevo runtime para la familia de lenguajes k y q que ejecuta código k4, q y qSQL existente sin necesidad de reescritura. La propuesta mantiene la sintaxis, los modismos, las tablas, los diccionarios y el trabajo con series temporales tal como se escriben hoy, pero cambia el motor subyacente

QuestDB hace WINDOW JOIN paralelo y vectorizado con SIMD

QuestDB ha reescrito su operador WINDOW JOIN para que se ejecute en paralelo a nivel de datos y aproveche instrucciones SIMD en la agregación interna. La nueva ruta emplea dos piezas: paralelización por page frames sobre la tabla izquierda (LHS), y una vía rápida para claves de baja cardinalidad que

Cazando un heisenbug en el build de Windows de Stim

Este artículo narra la odisea de depuración que vivió el desarrollador de Stim, una biblioteca en C++ para simulación de circuitos cuánticos, cuando los builds de Windows en integración continua empezaron a fallar con un críptico 'access violation' tras un cambio menor en el manejo de flujos. El pro

Un compilador mínimo para entender cómo se paralelizan los kernels de datos

El artículo describe un compilador experimental de unas 180 líneas de Python, disponible en GitHub, que realiza una fase de "lowering" sobre kernels: transforma bucles `for` convencionales en bucles `vector_for` en los que el paralelismo de datos queda explícito. La entrada es un AST pequeño escrito

Decodificación zigzag con AVX-512: dos optimizaciones SIMD

Este artículo técnico explora dos optimizaciones SIMD para la decodificación de enteros codificados en formato zigzag, descubiertas durante el trabajo del autor en la decodificación de vértices con AVX-512 en la biblioteca meshoptimizer. El zigzag es una técnica que mapea enteros con signo a valores

transit.c: lector y escritor Transit en C11 con aceleración SIMD

transit.c es una biblioteca en C11 que implementa un lector y escritor para el formato Transit, un sistema de intercambio de datos entre aplicaciones escritas en distintos lenguajes y creado originalmente por Cognitect dentro del ecosistema Clojure. Transit se apoya en JSON y MessagePack, por lo que

Experimentos de Go: qué son, cómo funcionan y lista actual

Los experimentos de Go son funcionalidades que el equipo de Go incorpora en sus lanzamientos para obtener retroalimentación real antes de consolidarlas. Pueden presentarse como paquetes nuevos en la biblioteca estándar, cambios en el compilador o el runtime, e incluso modificaciones de comportamient

rscrypto: pila criptográfica en Rust puro con aceleración SIMD y ASM

rscrypto es una biblioteca criptográfica escrita en Rust puro que agrupa primitivas como RSA, Ed25519, X25519, cifrados AEAD, funciones hash, KDF, hash de contraseñas y CRCs en un único crate, sin requerir de forma predeterminada dependencias en C, OpenSSL u otras bibliotecas de sistema. Su objetivo

Swift alcanza Teraflops entrenando LLMs en Apple Silicon

Este artículo explora cómo optimizar operaciones de multiplicación de matrices en Swift para entrenar Large Language Models (LLMs) en Apple Silicon, buscando alcanzar rendimiento de Teraflop/s desde el punto de partida de Gigaflops. El autor, Matt Gallagher, toma como referencia la implementación ll

Blender simula el cosmos: física y arte se unen

Este artículo, escrito por MohammadHossein Jamshidi (un estudiante de doctorado en Física/Cosmología y también ingeniero de animación con experiencia en la industria de los videojuegos), explora el uso innovador de Nodos de Geometría en Blender para aplicaciones cosmológicas. El objetivo principal e

IA mejora código ensamblador y acelera rendimiento

Investigadores han demostrado que la inteligencia artificial (IA), específicamente modelos como Grok y Claude, pueden optimizar código en lenguaje ensamblador, logrando mejoras significativas en el rendimiento. Daniel Lemire, investigador, llevó a cabo un experimento donde solicitó a estas IA que op

PlanB: Nueva Biblioteca Acelera Enrutamiento IPv6

Un nuevo desarrollador ha creado una biblioteca de código abierto llamada `planb-lpm` que mejora significativamente la eficiencia del enrutamiento IPv6. Basada en un algoritmo publicado recientemente (PlanB) y reimplementada en C++17, la biblioteca utiliza un árbol B+ linealizado con AVX-512 SIMD pa

Entendiendo los Microprocesadores: Más allá de la Velocidad

Este artículo ofrece una introducción rápida y accesible a la arquitectura de microprocesadores modernos, desmitificando conceptos clave que a menudo se pasan por alto en los cursos de informática. El objetivo principal es explicar por qué la velocidad de reloj (megahertz) no es el único indicador d

Menos es más: ¿cuánta memoria contigua es necesaria?

Este artículo de Solidean investiga la cantidad óptima de contigüidad de memoria lineal necesaria para un rendimiento máximo en cálculos de alta velocidad. La sabiduría convencional dicta que la memoria lineal y contigua siempre es la mejor opción, pero este estudio experimental desafía esa idea, de

TurboQuant: Compresión vectorial veloz para navegadores

Un equipo de desarrolladores ha lanzado una nueva biblioteca llamada TurboQuant, diseñada para permitir la compresión rápida de vectores directamente en navegadores web y Node.js. La biblioteca, basada en la investigación de Google (paper a presentarse en ICLR 2026), utiliza WebAssembly (WASM) y SIM

ARM Neon: cálculo más rápido con nueva técnica

Un nuevo método para calcular sumas de prefijos (prefix sums) en procesadores ARM Neon ha logrado velocidades de hasta 8.9 mil millones de valores por segundo en un Apple M4, superando significativamente el enfoque tradicional (3.9 mil millones de valores por segundo). La técnica, desarrollada por D

libxml2-ee: mejora la biblioteca para XML

libxml2-ee es una versión mejorada de la popular biblioteca libxml2, un conjunto de herramientas en C para procesar documentos XML. Originalmente, libxml2 es una biblioteca fundamental para muchos proyectos que necesitan analizar, manipular y generar archivos XML. libxml2-ee se centra en optimizar e

SIMD x86: Evolución tecnológica y estrategias corporativas

Este artículo de bgslabs.org narra la fascinante historia de la evolución de las extensiones SIMD (Single Instruction, Multiple Data) en los procesadores x86, desde MMX hasta AVX-512, revelando que su desarrollo no es solo una cuestión de tecnología, sino también de marketing, política corporativa y

Registros x86-64: ¿Cuántos y por qué importa?

El artículo explora la complejidad de la arquitectura de registros en las CPUs x86-64, un aspecto que ha resurgido en la discusión de programación gracias a tecnologías como Rosetta 2 de Apple. A diferencia de otras arquitecturas modernas, x86-64 ofrece una gran cantidad y diversidad de registros, l

RISC-V Vector: Acelera el Procesamiento con Paralelismo

## Entendiendo RISC-V Vector: Acelerando el Procesamiento con Instrucciones Paralelas RISC-V Vector es una extensión a la arquitectura RISC-V que introduce la capacidad de procesar múltiples datos simultáneamente, un concepto fundamental para acelerar tareas como el procesamiento de imágenes, el ap

Llamadas a funciones: ¿Cuánto cuestan y cómo optimizarlas?

En programación, es común encadenar funciones, donde una función llama a otra. Aunque esto es una práctica habitual, cada llamada de función tiene un costo en términos de rendimiento. Este artículo explora ese costo y cómo los compiladores pueden optimizarlo a través de una técnica llamada 'inlining

Bun: Ejecución Paralela de Scripts Acelera Desarrollo

Bun, un entorno de ejecución y gestor de paquetes JavaScript, ha lanzado la versión v1.3.9, introduciendo mejoras significativas en la ejecución de scripts y el rendimiento. La nueva versión permite la ejecución paralela y secuencial de scripts `package.json` con una salida formateada similar a Fore

Zlob: Globbing más rápido para C, Zig y Rust

Un nuevo proyecto llamado 'zlob' ha lanzado una biblioteca de globbing (búsqueda de patrones en archivos) significativamente más rápida para C, Zig y Rust. La biblioteca, disponible como librería C, librería Zig y crate Rust, busca solucionar la lentitud y limitaciones de la función `glob()` de gli