视觉流水线与优化技术解析
1. 内存分块技术
在进行粗粒度并行处理时,可将图像分割成多个小块区域,每个小块分配给一个线程。这种分块方式适用于点、线和区域处理,每个线程对分配到的小块区域执行相同操作。通过允许小块之间有重叠的读取区域,可消除硬边界问题,例如卷积等区域操作就能读取相邻小块进行内核处理,并将处理结果写回自身小块。
2. DMA、数据复制与转换
在视觉流水线中,通常需要多个图像副本,有时还需进行数据类型转换。例如,将存储在16位整数中的12位无符号颜色通道数据转换为32位整数,可提高下游计算的数值精度。颜色通道也可转换到特定颜色空间,如RGBI,进行颜色处理,再将新的I值混合并复制回RGB分量。
复制数据时,建议使用直接内存访问(DMA)单元以实现最快的数据复制。DMA单元通过硬件实现,可直接优化和控制内存的输入输出互连流量。操作系统提供了访问DMA单元的API。
3. 寄存器文件、内存缓存与锁定
每个处理器的内存系统是一个包含虚拟和物理内存的层次结构,由文件系统、页面文件、交换文件等慢速固定存储,系统内存、缓存以及计算单元内的快速寄存器文件组成,它们之间通过内存互连。若待处理数据位于寄存器文件中,ALU将以处理器时钟速率进行处理。因此,将数据保留在寄存器中,在复制数据前完成所有可能的处理是最优选择,但这可能需要对代码进行一些修改。
访问缓存获取数据比访问寄存器文件消耗更多时钟周期,若发生缓存未命中而需访问速度更慢的系统内存,通常需要数百个时钟周期将内存数据通过缓存移动到寄存器文件进行ALU处理。
操作系统提供API来锁定或固定内存中的数据,这通常可增加缓存中的数据量,减少页面交换。当数据被频繁
超级会员免费看
订阅专栏 解锁全文
2629

被折叠的 条评论
为什么被折叠?



