最近做的SES Demo

用线性插值方法,将yuv视频放大并播放。

插值的实现通过普通的C code(1),AMD的APL性能库(2),Intel的IPP性能库(3)来分别做。

在DUAL CORE的机器上,若(1)绑定在core1上,(2)和(3)都绑定在core2上,这样的话(1):
(2):(3)的fps大约在1:3:9,测试证明rendering基本不费时间,fps的决定性因素在于resize的过程。当时很雀跃,觉得IPP很厉害。but。。。

三种方式在Quad Core的机器上依次单独运行,发现(2)的性能要比(3)高,原因在于APL内置了运算的底层多线程,CPU占有率不止于一个核所占的比例25%,可能是调用了OpenMP等非显式的多线程方式。如果把APL所开的线程数用API规定死,三种方式各自绑定到一个核的情况下同时运行,APL就跑不过IPP了,(1):
(2):(3)的fps大约在1:2:2.5。

APL是免费的,支持资源有限,估计国内的TCE也少,team不多。同时,它的文件做的实在太大了,解压后有800MB+。

IPP是收费的,支持资源丰富,国内的TCE人手丰富,版本升级频繁。而且库的大小不过数十MB。

就两者的易用性和使用方式来看,几乎完全一致,无怪后出品的APL背负了抄袭IPP的名声。不过也难怪,做多核CPU的就那么2家公司,推广CPU的责任当然也由他们承担。既然Intel先下手出了IPP,自然各种该考虑到的因素都会考虑到,AMD后起直追,这方面落后了只有在性能上和价格上补,试图占领更多份额,扩大自己的影响。

AMD的tuning工具还没用,潜意识觉得应该不会比IBM Rational Purify plus好。

顺便说一句,VIA号称是做CPU的第三家大厂,可是不往多核方向发展,只往低功耗的小型化方向去做,还号称绿色环保,太让我失望了。

 

你可能感兴趣的:(多线程,ibm,api,工具,测试,c)