IPP详细入门及简单例程.docx_第1页
IPP详细入门及简单例程.docx_第2页
IPP详细入门及简单例程.docx_第3页
IPP详细入门及简单例程.docx_第4页
IPP详细入门及简单例程.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IPP新手入门Intel IPP简介百度百科上是这样介绍的:IPP“Intel Integrated Performance Primitives” ( Intel IPP )是一套跨平台的软件函数库,他提供了广泛的多媒体功能:音频解码器(例如: H263 、 MPEG-4 )、图像处理 (JPEG) 、信号处理、语音压缩(例如: G723 、 GSM 、 AMR )和加密机制。 字面上的意思就是集成性能基元,IPP的Chief Architect李信弘(Shinn-Horng LEE)解释了Intel开发IPP的原因:开发IPP的目的是为了发挥CPU的性能。销售IPP目的之一是了解哪些单位在用IPP,目的之二是用销售所得提供客户支持。其次,IPP不光能对Intel的CPU进行提速,在非Intel的CPU上照样可以发挥提速功能。但是当然IPP在Intel CPU上发挥的能力要比AMD的CPU上强。Intel IPP的安装与配置使用IPP的安装说明:按目标CPU型号,IPP库分为以下几种类型(参考ReleaseNotes.htm):IA-32:32位处理器包括Intel Core2 Duo、Pentium 4、Xeon、Celeron等,这是我们常用的CPU类型; Intel 64:基于IA-32、带有64位扩展的CPU,操作系统为64位;Intel Itanium:Intel Itanium 2 处理器且操作系统为64位;Intel IXP4XX Network Processors:包括某些用于嵌入式系统的CPU;本文档采用的安装包安装,安装的为w_ipp_ia32_p_6.1.2.041。安装步骤如下:双击next选择安装路径,安装完毕即可安装完毕之后,运行ippiDemo.exe(或ippsDemo.exe从C: Program FilesIntel IPP 6.1.x.xxx ia32 Demo)。如果您收到 “此应用程序未能启动,因为 ippcore.dll未找到”之类的错误消息,这 意味着该操作系统无法确定英特尔IPP的位置 动态库。为了解决这个问题:在使用英特尔IPP动态库之前,添加C: Program FilesIntel IPP 6.1.x.xxx ia32 到 PATH环境变量中设置环境变量描述;手动复制IPP 6.1.x.xxxia32 bin到的System32 目录;具体如下:右击计算机,找到属性,点击高级系统配置,右下角即找到环境变量选项。在后面加“;号”加上IPP的可执行文件夹(C:Program FilesIntelIPP6.1.2.041ia32bin)点击确定即可在系统变量中找到Path,点击编辑环境配置本文档基于vs2010进行配置VS2010取消了08之前在options里面添加第三方库目录的设置,新的设置方法如下: View-Property Manager, 在Property Manager框里面有Debug|Win32和Release|Win32选项,打开任意一个Microsoft.Cpp.Win32.user会弹出Microsoft.Cpp.Win32.user Property Pages对话框,点击左边VC+ Directories,会出现相应得页面, 可以在Include Directories与Library Directories里面设置全局的头文件和库路径经历以上步骤,我们的ipp库以及头文件即配置到vs2010中了,接下来我们来进行简单的编程。IPP各组件简介Bin文件夹:包含处理器分配器(processor dispatchers)及函数实现,ipp*.dll是分配器(dispatcher)dll;它们在运行时检查CPU类型并加载合适的CPU特定dll,这样应用无需考虑具体CPU型号doc文件夹:帮组文件夹,基本所有IPP的信息以及所有函数简介均包含在其中lib文件夹:静态函数库,用于静态链接库stublib文件夹:IPP输入函数库,用来连接动态链接库include文件夹:包含所有IPP的头文件,其中ipp.h包含了所有需要的IPP头文件,工程中只要include它就可以了tool文件夹:intel性能测试工具,链接工具,环境变量设置工具tools/env/ippenv.bat可用于设置环境变量demo/ ippsDemo.exe可用于验证安装后路径是否已经设置tools/support/iplid.exe可用于获得版本信息IPP的程序编译链接方式IPP提供了多种程序编译链接方式以适用于不同的需求。动态链接:动态链接可以产生具有最大适应性的程序,它是唯一的不需要随CPU升级而重新编译程序的链接方式;链接库使用stublib目录下的ipp*.lib;方法:(1 )包含ipp.h;(2 )使用常规的IPP函数名;(3 )与相应的stublib/ipp*.lib文件链接;自定义动态链接:某些程序仅依赖于少量的IPP函数,这种情况下可以使用该链接方式,以使目标程序仅仅依赖于它所确实用到的IPP库;具体实现请userguide_win_ia32.pdf。静态链接(使用Dispatch功能):使用Dispatch功能可使得静态链接的应用程序与动态链接一样,可以在运行时选择使用合适的、适用于特定CPU类型的函数版本,这能很大地提高程序性能;方法:(1)包含ipps.h;(2)调用其他IPP函数前调用ippStaticInit或ippStaticInitCPU进行初始化;如果不进行初始化,后续函数调用将会使用默认的px类型的函数;(3)使用普通函数名调用IPP函数;(4)需包括lib目录下链接库e-merged库、merged库和ippcorel.lib静态链接(无Dispatch功能):如果目标程序仅用于某种特定的CPU,则可以使用这种方式,它是这几种方式中产生的目标程序最小的方式;方法(参考tools/staticlib目录下的“readme.htm”文件):(1)包含tools/staticlib目录下的CPU类型对应头文件;(2)包含ipps.h;(3)链接库仅使用merged库(ipp*merged.lib)与ippcorel.lib;IPP的应用编程运算计时编程程序代码#include stdafx.h#include ipp.h / 引y入?头文?件tint main(int argc , char* argv)Ipp64u start, end;start=ippGetCpuClocks (); / 得?到?开a始?CPU 时钟end=ippGetCpuClocks (); / 得?到?终?止1CPU 时钟printf(Clocks to do nothing: %d n,(Ipp32s)(end - start);start = ippGetCpuClocks ();printf(Hello Worldn);end = ippGetCpuClocks ();printf(Clocks to print hello world: %d n,(Ipp32s)(end - start);return 0;编译前准备程序中使用了IPP中的ippGetCpuClocks函数,在帮组文件中找到关于ippGetCpuClocks描述如下表明该函数在ippcore.h中被描述,因此只需要链接同名的lib文件即可:点击菜单的“项目-xxx属性-配置属性-链接器-输入”,在右边的“附加依赖项”中填入ippcore.lib即可。程序运行结果数据拷贝程序代码#include stdafx.h#include ipp.h /引y入?头文?件tin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论