知识卡片

重叠波前并行让空闲线程提前跨帧接活

专业/工作 · 1081.d

内容

标准波前并行处理中,越靠后启动的线程能分到的CTB行越少,一旦某个运算单元处理完分给它的最后一行,当前帧已经没有更多行可以给它,它就必须闲置等待,直到整帧解码完毕、下一帧重新开始波前调度。重叠波前并行处理打破了”必须等一帧解完才能开始下一帧”的边界:只要运动矢量足够小、下一帧所需的参考区域已经解码完成,提前空闲下来的运算单元就可以直接跳去处理下一帧最前面的几行,不必等待当前帧收尾。这是”任务边界不必是调度边界”的例子——原本按帧划分的任务,只要跨边界的数据依赖能被满足,调度器就可以让空闲资源提前越过这个边界去处理下一批任务,类似CPU流水线中软件流水线技术把相邻循环迭代的指令交错排布来填满空闲槽位。

参考来源

《新一代高效视频编码H.265/HEVC:原理、标准与实现》第10章《编解码并行处理》