Skip to content

内存管理

内存池设计详解。

概述

Mini-ImagePipe 采用双层内存池系统:

  • 固定主机内存:用于快速异步传输
  • 设备内存:用于 GPU 操作

最佳适配分配

内存管理器采用最佳适配分配策略来最小化碎片:

cpp
void* MemoryManager::allocateDevice(size_t size) {
    // Find smallest block that fits
    auto best = findBestFit(size);
    if (best) {
        // Split if much larger than needed
        if (best->size > size + SPLIT_THRESHOLD) {
            splitBlock(best, size);
        }
        return best->ptr;
    }
    // Allocate new block
    return allocateNewBlock(size);
}

内存池复用

缓冲区在流水线执行之间保留:

执行 1: 分配缓冲区
执行 2: 复用缓冲区(无分配)
执行 3: 复用缓冲区(无分配)
...

配置

cpp
PipelineConfig config;
config.pinnedPoolSize = 64 * 1024 * 1024;   // 64MB
// 设备内存池行为由 MemoryManager 内部管理。

线程安全

MemoryManager 使用互斥锁实现线程安全的内存池操作。

基于 MIT 许可证发布