
Quellcode für unser ASPLOS 2023-Papier, " Minimalloc: Ein leichter Speicher Allocator für hardwarebeschleunigte maschinelles Lernen ."
Eine zunehmende Anzahl von Arbeitsbelastungen von Deep Learning wird durch die Beschleunigung der Hardware unterstützt. Um die maximale Leistung eines Hardwarebeschleunigers freizuschalten, muss zuerst ein maschinelles Lernmodell über einen Compiler sorgfältig auf seine verschiedenen internen Komponenten abgebildet werden. Ein besonders wichtiges Problem, mit dem ein Compiler der Produktionsklasse konfrontiert ist, ist die der Speicherzuweisung , bei der ein Satz von Puffern mit vordefinierten Lebensdauer auf Offsets im globalen Speicher zugeordnet wird. Da diese Zuordnung statisch durchgeführt wird, hat der Compiler die Freiheit, Puffer strategisch zu platzieren, muss jedoch jedoch mit einer kombinatorischen Explosion der Anzahl der Zuordnungsmöglichkeiten ringen.
Minimalloc ist ein hochmoderner Algorithmus, der speziell für die statische Speicherzuweisung entwickelt wurde und mehrere neuartige Suchtechnik verwendet, um solche Probleme effizient und effektiv zu lösen.
Eine wichtige Einsicht, die unsere Methodik motiviert, ist die Entdeckung einer bestimmten Kategorie von Lösungen - die wir als kanonische Lösungen bezeichnen -, die den Mitgliedern eines algebraischen Gitters entsprechen:

Durch die Begrenzung unserer Erforschung auf die Untergruppe kanonischer Lösungen können wir die Größe des Suchraums dramatisch reduzieren und gleichzeitig sicherstellen, dass unser Algorithmus gesund und vollständig bleibt. Wir verwenden auch eine neue räumliche Inferenztechnik, die diese spezielle Struktur nutzt und es unserem Solver ermöglicht, viel früher als sonst möglich zurückzukehren. Schließlich implementieren wir einen neuen Mechanismus zur Erkennung und Beseitigung von dominierten Lösungen aus der Gegenleistung.
$ 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 }
}Dies ist kein offiziell unterstütztes Google -Produkt.