minimalloc
v0.1.0

我們的Asplos 2023論文的源代碼,“最小值:用於硬件加速機器學習的輕型內存分配器”。
硬件加速度支持越來越多的深度學習工作負載。為了解鎖硬件加速器的最高性能,必須首先通過編譯器將機器學習模型仔細映射到其各種內部組件上。生產級編譯器面臨的一個特別重要的問題是內存分配,其中一組具有預定義壽命的緩衝區被映射到全球內存中的偏移量。由於該分配是靜態執行的,因此編譯器可以自由地進行戰略性放置,但必須在任務數量的數量中與組合爆炸作鬥爭。
Minimalloc是一種專門為靜態內存分配而設計的最先進算法,該算法使用多種新穎的搜索技術來有效,有效地解決此類問題。
激勵我們方法論的一個關鍵見解是發現特定類別的解決方案(我們稱之為規範的解決方案),該解決方案與代數晶格的成員相對應:

通過將我們的探索限制為規範解決方案的子集,我們可以大大減少搜索空間的大小,同時確保我們的算法保持合理並完整。我們還採用了一種新的空間推理技術,該技術利用這種特殊的結構,使我們的求解器可以比其他可能更早地回溯。最後,我們實施了一種新的機制來檢測和消除主導解決方案的考慮。
$ 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 }
}這不是官方支持的Google產品。