集成性能基元(ipp)

Intel公司有一个产品叫集成性能基元(Integrated Performance Primitives,IPP)库。这个库实际上是一个有着高性能内核的工具箱,它主要用于多媒体处理以及其他计算密集型应用,可发掘处理器架构的计算能力。(其他厂商的处理器也有类似的架构,只不过规模较小。)

就像第一章所探讨的,无论从软件层面还是公司内组织层面OpenCV都与IPP有着紧密的联系。最终,OpenCV被设计成能够自动识别 IPP库,自动将性能较低的代码切换为IPP同功能的高性能代码。IPP库允许OpenCV依靠它获得性能提升,IPP依靠单指令多数据(SIMD)指令以及多核架构提升性能。

学会这些基础知识,我们就可以执行各种各样的基本任务。在本书随后的内容中,我们会发现OpenCV具有许多高级功能,几乎所有这些功能都可切换到IPP运行。图像处理经常需要对大量数据做同样的重复操作,许多是可并行处理的。因此如果任何利用并行处理方式(MMX,SSE,SSE2等)的代码获得了巨大性能提升,您不必感到惊讶。

验证安装

用来检查IPP库是否已经正常安装并且检验运行是否正常的方法是使用函数cvGetModulelnfo(),如例3-20所示。这个函数将检查当前OpenCV的版本和所有附加模块。

例3-20:使用cvGetModulelnfo()检查IPP

 
 
  1. char* libraries;  
  2. char* modules;  
  3. cvGetModuleInfo( 0, &libraries, &modules );  
  4. printf("Libraries: %s/nModules: %s/n", libraries, modules ); 

例3-20中的代码将打印出描述已经安装的库和模块的文本。结果如下所示:

 
 
  1. Libraries cxcore: 1.0.0  
  2. Modules: ippcv20.dll, ippi20.dll, ipps20.dll, ippvm20.dll 

此处输出的模块列表就是OpenCV从IPP库中调用的模块的信息。实际上这些模块是更底层的CPU库函数的封装。它的运行原理将远远超出这本书的范围,但是如果在modules字符串中看到了IPP库,那么你会感到很自信,因为所有的工作都在按您预期的进行。当然你可以运用这个信息来确认IPP在您的系统中能正常运行。你也许会用它来检查IPP是否已经安装,并根据IPP存在与否来自动调整代码。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值