
Code source pour notre article ASPLOS 2023, " Minimalloc: un allocateur de mémoire léger pour l'apprentissage automatique accéléré par le matériel ".
Un nombre croissant de charges de travail en Deep Learning sont prises en charge par l'accélération matérielle . Afin de déverrouiller les performances maximales d'un accélérateur matériel, un modèle d'apprentissage automatique doit d'abord être soigneusement mappé sur ses différents composants internes par le biais d'un compilateur . Un problème particulièrement important rencontré par un compilateur de classe de production est celui de l'attribution de la mémoire , par lequel un ensemble de tampons avec des durées de vie prédéfinis est cartographié sur des décalages dans la mémoire globale. Étant donné que cette allocation est effectuée statiquement, le compilateur a la liberté de placer des tampons stratégiquement, mais doit néanmoins lutter avec une explosion combinatoire dans le nombre de possibilités d'affectation.
Minimalloc est un algorithme de pointe conçu spécifiquement pour l'allocation de mémoire statique qui utilise plusieurs nouvelles techniques de recherche afin de résoudre ces problèmes efficacement et efficacement.
Un aperçu clé motivant notre méthodologie est la découverte d'une catégorie spécifique de solutions - que nous appelons des solutions canoniques - qui correspondent aux membres d'un réseau algébrique:

En limitant notre exploration au sous-ensemble de solutions canoniques, nous pouvons réduire considérablement la taille de l'espace de recherche tout en garantissant simultanément que notre algorithme reste solide et complet. Nous utilisons également une nouvelle technique d'inférence spatiale qui tire parti de cette structure spéciale, permettant à notre solveur de revenir en arrière bien plus tôt que possible. Enfin, nous mettons en œuvre un nouveau mécanisme pour détecter et éliminer les solutions dominées de la considération.
$ 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 }
}Ce n'est pas un produit Google officiellement pris en charge.