Tensores desde cero: cómo construir una biblioteca acelerada en C

Fuentes: Tensor is the might

Un tensor no es más que un arreglo plano de números acompañado de metadatos que indican cómo interpretar esos valores como un objeto multidimensional. Esa es la premisa central de este artículo, que guía al lector paso a paso en la construcción de una biblioteca de tensores escrita en C y acelerada por GPU. La estructura básica combina un puntero a los datos con una forma (shape), número de dimensiones y strides precalculados para localizar cada elemento sin recalcular el índice en cada acceso. Sobre esa base, el autor añade gestión de memoria con conteo de referencias para soportar vistas y propietarios compartidos, y luego implementa operaciones elementales unarias y binarias como negación, ReLU, suma, resta, multiplicación y división, además de un escalado por constante. El texto también discute decisiones de diseño: por qué se omite el broadcasting, cómo envolver malloc y free en asignadores tipo arena para reducir llamadas al sistema, y por qué conviene descargar el cálculo a una GPU. Para la aceleración, el autor eligió Metal por la memoria unificada de Apple Silicon, aunque reconoce que limita el soporte a dispositivos Apple. La biblioteca se inspira en libnc, de Fabrice Bellard, que aún no es de código abierto.