
Código fuente para nuestro documento ASPLOS 2023, " Minimalloc: un asignador de memoria liviano para el aprendizaje automático acelerado de hardware ".
Un número creciente de cargas de trabajo de aprendizaje profundo está siendo compatible con la aceleración de hardware . Para desbloquear el máximo rendimiento de un acelerador de hardware, un modelo de aprendizaje automático primero debe asignarse cuidadosamente sobre sus diversos componentes internos a través de un compilador . Un problema especialmente importante que enfrenta un compilador de clase de producción es el de la asignación de memoria , por el cual un conjunto de amortiguadores con vida útil predefinida se asigna a las compensaciones en la memoria global. Dado que esta asignación se realiza estáticamente, el compilador tiene la libertad de colocar los amortiguadores estratégicamente, pero, sin embargo, debe luchar con una explosión combinatoria en el número de posibilidades de asignación.
Minimalloc es un algoritmo de vanguardia diseñado específicamente para la asignación de memoria estática que utiliza varias técnicas de búsqueda novedosas para resolver tales problemas de manera eficiente y efectiva.
Una idea clave que motiva nuestra metodología es el descubrimiento de una categoría específica de soluciones, que llamamos soluciones canónicas , que corresponden a los miembros de una red algebraica:

Al limitar nuestra exploración al subconjunto de soluciones canónicas, podemos reducir drásticamente el tamaño del espacio de búsqueda y al mismo tiempo asegurarnos de que nuestro algoritmo permanezca sólido y completo. También empleamos una nueva técnica de inferencia espacial que aprovecha esta estructura especial, lo que permite que nuestro solucionador retroceda mucho antes de lo posible. Finalmente, implementamos un nuevo mecanismo para detectar y eliminar soluciones dominadas de la consideración.
$ git clone --recursive [email protected]:google/minimalloc.git &&
cd minimalloc && cmake -DCMAKE_BUILD_TYPE=Release && make
id,lower,upper,size
b1,0,3,4
b2,3,9,4
b3,0,9,4
b4,9,21,4
b5,0,21,4
$ ./minimalloc --capacity=12 --input=benchmarks/examples/input.12.csv --output=output.12.csv
id,lower,upper,size,offset
b1,0,3,4,8
b2,3,9,4,8
b3,0,9,4,4
b4,9,21,4,4
b5,0,21,4,0
@inproceedings { Moffitt2023 ,
title = { {MiniMalloc}: A Lightweight Memory Allocator for Hardware-Accelerated Machine Learning } ,
booktitle = { Proceedings of the 28th International Conference on Architectural Support for Programming Languages and Operating Systems } ,
volume = { 4 } ,
pages = { 238--252 } ,
author = { Moffitt, Michael D. } ,
year = { 2023 } ,
series = { ASPLOS 2023 } ,
url = { https://doi.org/10.1145/3623278.3624752 } ,
doi = { 10.1145/3623278.3624752 }
}Este no es un producto de Google compatible oficialmente.