文章

面向fhe编译器的确定性的内存规划

面向fhe编译器的确定性的内存规划

rmm(RAPIDS Memory Manager)的内存分配策略

介绍:

RMM是NVIDIA为GPU内存管理设计的一个高性能内存管理库,旨在优化GPU内存的分配和释放过程,提高内存使用效率,减少内存碎片化问题。RMM主要用于数据科学和机器学习等需要大量GPU内存的应用中。

内存分配策略

1. 预分配内存池

RMM在初始化时会预分配一块较大的GPU内存池,这样可以减少频繁的内存分配和释放操作,提高性能。应用程序在需要内存时,从这个预分配的内存池中分配内存,而不是每次都向操作系统请求内存。

具体算法-指数退避扩展策略: 比如在执行一个cudamalloc操作时,会有一个需要分配的内存大小,记作min_size。rmm并不直接分配一个min_size大小的内存块,而是会分配一个大于它的内存块,大小记为try_size。每次尝试分配try_size大小的内存块,如果分配失败,则将try_size缩小一倍,直到成功或者try_size小于min_size为止(报错)。这样可以避免频繁向上层驱动请求分配内存,而是由rmm直接管理一大块内存。

2. 合并最佳适配算法的碎片优化

本文由作者按照 CC BY 4.0 进行授权