软件多核优化的复杂度很高。
拿x.264举例,M.E.(动态预测)可以多线程并行,但SDF(sum of all diff)只能由一个线程汇总计算。因此多个M.E.线程完成工作后,也要交给唯一的SDF线程,其实SDF也要等最慢的那个M.E.提交了结果,才能继续处理,然后根据结果确定使用i帧还是p帧或b帧。
而这已经是利用多核最好的软件了。
想想游戏等等软件里,需要因果判断(无法并行)的代码占比,就知道多核优化有多不容易。
拿x.264举例,M.E.(动态预测)可以多线程并行,但SDF(sum of all diff)只能由一个线程汇总计算。因此多个M.E.线程完成工作后,也要交给唯一的SDF线程,其实SDF也要等最慢的那个M.E.提交了结果,才能继续处理,然后根据结果确定使用i帧还是p帧或b帧。
而这已经是利用多核最好的软件了。
想想游戏等等软件里,需要因果判断(无法并行)的代码占比,就知道多核优化有多不容易。
