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产品。