CANN 3DGS负载均衡优化策略
NPU 3DGS Ascend C Alpha Blending算子负载均衡策略【免费下载链接】cann-recipes-spatial-intelligence本项目针对空间智能业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-spatial-intelligence针对 SIMD 计算架构我们对比GPU实现的3DGS算法需要做相应的特殊优化本篇文档就针对每个像素块投影的高斯球数量分布差异较大导致按像素块切分会导致负载不均问题引入负载均衡策略从而提升整体渲染效率。Highlights基于SIMD特性采用通用的按像素块均匀切分策略无法感知像素块具体计算量冗余导致个别core拖尾采用贪心算法进行负载分配使得每个core负载接近。3DGS Alpha blending 算子流程Alpha blending 操作是3DGS光栅化过程中的核心步骤给定一个特定的相机视角和对应的投影平面将空间中的3D高斯球颜色表达渲染到各个像素上从而构建成对应视角的渲染图像。Alpha blending具体的计算公式如下 $$ C \sum_{i \in N} c_i \alpha_i \prod^{i-1}_{j1}(1-\alpha_j) $$ $$ \alpha_i o_i \exp(-\frac{1}{2} \delta ^ T * \Sigma * \delta) $$整体算法流程如下按tile对vector核进行切分每次调用渲染一个tile上的所有像素块由于累乘操作的存在必须保证对高斯球进行排序后依次渲染所以for循环遍历每个高斯球进行渲染对每个高斯球并行计算其对tile上所有像素块的影响计算出alpha值和颜色贡献对每个像素块更新累积颜色和透明度值3DGS Alpha blending 算法在SIMD架构下采用负载均衡策略进行切分在开源GPU实现中硬件支持Warp级别调度无需额外负载均衡策略。但在SIMD架构下实现3DGS Alpha blending算法采用按像素块对vector core进行均匀切分。由于每个像素块上投影的高斯球数分布差异较大采用均匀切分像素块策略可能导致每个core上处理负载不均造成个别core计算拖尾导致整体渲染耗时增加。采用贪心算法进行负载均衡目标将所有像素块的高斯球分配给固定的vector核上最终使各vector核的负载尽可能均衡避免出现“单核过载多核闲置”的情况。策略采用贪心算法遵循“先重后轻分给最轻”的原则通过局部最优的选择以达到全局较优的结果。实现流程排序按照像素块对应的高斯球数将像素块从大到小进行排序。贪心分配将排序好的像素块优先分配到当前高斯球数最小的vector核上以此继续分配像素块直到将所有像素块分配完。以如下场景为例进行说明四个像素块每个像素块高斯球数分别为50、100、10、20分配到2个vector核。目标如下图使用像素块平均切分策略会造成倾斜问题core-0分配150个高斯球core-1分配30个高斯球而使用负载均衡策略则分配相对均匀core-0分配100个高斯球core-1分配80个高斯球。切分策略结果对比如下图负载均衡策略具体处理流程如下排序先将四个像素块按照像素块对应高斯球数从大到小进行排序。排序结果依次为tile-1tile-0tile-3tile-2。如下图贪心分配将排序好的像素块优先分配到当前高斯球数最小的vector核上。第一步分配tile-1当前core-0和core-1上高斯球数均为0故将tile-1分配到core-0上core-0的高斯球数更新为100第二步分配tile-0当前core-1上高斯球数为0core-0上高斯球数为100故将tile-0分配到core-1上core-1的高斯球数更新为50第三步分配tie-3当前core-1上高斯球数为50core-0上高斯球数为100故将tile-3分配到core-1上core-1的高斯球数更新为70第四步分配tie-2当前core-1上高斯球数为70core-0上高斯球数为100故将tile-2分配到core-1上core-1的高斯球数更新为80完成所有像素块分配。此时core-0上需高斯球数为100core-1上需处理高斯球数为80。具体过程如下图所示对比实验数据分析我们在一个包含13万个高斯球的场景实际上经过过滤后需要渲染的高斯球数仅为67917个评估了按块均匀切分和负载均衡设计对渲染效率的提升效果。 实验结果如下正向耗时和反向耗时收益均约23%。优化方法前向device耗时(ms)反向device耗时(ms)按块切分5.97315.908负载均衡4.59912.223【免费下载链接】cann-recipes-spatial-intelligence本项目针对空间智能业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-spatial-intelligence创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考