Tokenizers v1 optimiza el rendimiento mediante SIMD y caché de palabras

La nueva versión 1 de la librería tokenizers de Hugging Face introduce mejoras significativas en velocidad y escalabilidad, logrando hasta diez veces más rendimiento que la versión 0.23. Este cambio arquitectónico busca eliminar el cuello de botella en la tokenización, permitiendo que las GPU no que

Guía técnica del estado de SIMD en Rust para 2026

El artículo técnico de Sergey Davidoff analiza el estado actual de la computación vectorizada (SIMD) en el lenguaje Rust, destacando los avances realizados desde 2025 y la adopción de la librería Fearless SIMD como mantenedora. El texto explica que la SIMD permite procesar lotes de datos simultáneam

Go 1.27 introduce SIMD portátil para mejorar el rendimiento

Go 1.27 incorpora una API experimental de SIMD (Single Instruction Multiple Data) que permite a los desarrolladores acceder a operaciones de vectorización sin depender de la arquitectura específica del hardware. Esta novedad, que se complementa con las APIs experimentales de Go 1.26 para amd64 y 1.2

sha1dc optimiza la detección de colisiones en SHA-1 con SIMD

Sam Reis ha desarrollado sha1dc, una implementación en Rust de SHA-1 con detección de colisiones, diseñada para acelerar la validación de paquetes en servidores Git. La herramienta resuelve el cuello de botella de la verificación de integridad, que en sistemas como Gitoxide consume hasta el 84% del

Fearless SIMD v1.0 elimina el código inseguro en operaciones SIMD de Rust

Fearless SIMD v1.0, lanzado el 22 de septiembre de 2026, introduce una nueva versión de la librería de código abierto que permite a los desarrolladores de Rust acceder a operaciones SIMD (Vector Single Instruction, Multiple Data) de forma segura, eliminando la necesidad de bloques de código inseguro

Optimización de gearhash en ARM64 mediante NEON

La librería Rust gearhash ha incorporado un backend NEON que duplica su velocidad de procesamiento en arquitecturas ARM64, una mejora significativa para aplicaciones que requieren hashing de alto rendimiento. Esta optimización, disponible desde la versión 0.1.4, se activa automáticamente en sistemas

Algoritmo Quicksort vectorizado portable para bases de datos columnares

Un nuevo algoritmo de Quicksort vectorizado permite acelerar el ordenamiento de datos en bases de datos columnares mediante instrucciones SIMD portables. A diferencia de las implementaciones anteriores, esta solución es compatible con seis conjuntos de instrucciones en tres arquitecturas, incluyendo

Singeli: lenguaje de alto nivel para programación de bajo nivel

Singeli es un lenguaje de dominio específico diseñado para la creación de algoritmos de alto rendimiento, incluyendo soporte para instrucciones SIMD. Implementado en BQN, cuenta con un frontend que genera código intermedio (IR) y un backend que emite código C, aunque está diseñado para ser compatibl

Implementación de FMA y bugs hallados en las bibliotecas estándar de C y Rust

Sergey "Shnatsel" Davidoff, desarrollador del proyecto fearless_simd, relata cómo, al intentar implementar de forma eficiente la operación fused multiply-add (a*b+c) en SIMD para máquinas sin soporte hardware de FMA —aproximadamente un 15% de los equipos según la encuesta de hardware de Firefox—, de

Anatomía de np.add: del bucle SIMD en C al intérprete de Python

Este artículo descompone paso a paso la ejecución de np.add(a, b) sobre dos arreglos float64 en NumPy 2.5.2, recorriendo el código fuente real desde la llamada en Python hasta el núcleo SIMD que realiza la suma en C. np.add no es una función de Python ordinaria, sino una instancia del tipo C numpy.u

VectorWare lleva el SIMD portable de Rust a la GPU por primera vez

VectorWare, compañía que se presenta como la primera empresa de software nativa para GPU, anunció que logró ejecutar el SIMD portable de Rust (core::simd) sobre la GPU, un hito sin precedentes para la programación de procesadores gráficos en este lenguaje. La empresa, especializada en tooling para l

Acelerando los hashes pequeños de Ruby con búsqueda SWAR

Ruby no implementa sus hashes pequeños como tablas hash propiamente dichas: cuando un objeto Hash tiene ocho entradas o menos, su clase lo representa internamente mediante una estructura llamada ar_table, que en esencia es un array plano de pares clave-valor más un array de hints (el byte bajo del h

Cómo parsear direcciones IPv4 en C# a gran velocidad con AVX-512

El investigador Daniel Lemire presenta una rutina en C# capaz de parsear direcciones IPv4 —como 192.168.0.1— unas tres veces más rápido que la función IPAddress.TryParse incluida en la biblioteca estándar de .NET. La clave está en aprovechar las instrucciones SIMD AVX-512, disponibles en procesadore

Visión general de las plantillas de ensamblador en línea

El lenguaje Odin incorpora un sistema de plantillas de ensamblador en línea (inline asm) diseñado como entidades llamables que se instancian en el lugar de cada llamada, comportándose como intrínsecos. Por ahora, la implementación solo cubre objetivos amd64 (windows_amd64, linux_amd64 y darwin_amd64

Por qué CBQN supera a C++ y Rust en operaciones sobre cadenas binarias

CBQN, el compilador principal del lenguaje de programación BQN, logra tiempos de ejecución muy inferiores a los de C++ y Rust en algoritmos que manipulan cadenas formadas exclusivamente por los caracteres '0' y '1', según un análisis técnico publicado en el repositorio de GitHub "max-odd-binary". La

Decodificando el campo inmediato de vcmpps y vcmppd en x86

Las instrucciones SIMD vcmpps y vcmppd comparan pares de números en coma flotante IEEE754 y producen un resultado de un bit por carril. En lugar de escribir flags, codifican en cinco bits (b4…b0) tanto la relación a evaluar como el comportamiento ante NaN. Una codificación ingenua dedicaría un bit a

SIMD en los años 90: programar el Intel Pentium MMX

En 1997 Intel presentó las extensiones MMX (MultiMedia eXtensions) junto al procesador Pentium MMX, un conjunto de 57 instrucciones adicionales pensadas para acelerar gráficos, procesamiento de audio, vídeo y software de módem. MMX no inventó el modelo SIMD (Single Instruction, Multiple Data), pero

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