为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > IPP详细入门及简单例程(3)

IPP详细入门及简单例程(3)

2022-09-11 16页 doc 23KB 22阅读

用户头像

is_511210

暂无简介

举报
IPP详细入门及简单例程(3)IPP新手入门IntelIPP简介百度百科上是这样介绍的:IPP“IntelIntegratedPerformancePrimitives”(IntelIPP)是一套跨平台的软件函数库,他提供了广泛的多媒体功能:音频解码器(例如:H263、MPEG-4)、图像处理(JPEG)、信号处理、语音压缩(例如:G723、GSM、AMR)和加密机制。字面上的意思就是集成性能基元,IPP的ChiefArchitect李信弘(Shinn-HorngLEE)解释了Intel开发IPP的原因:开发IPP的目的是为了发挥CPU的性能。销售IPP目...
IPP详细入门及简单例程(3)
IPP新手入门IntelIPP简介百度百科上是这样介绍的:IPP“IntelIntegratedPerformancePrimitives”(IntelIPP)是一套跨平台的软件函数库,他提供了广泛的多媒体功能:音频解码器(例如:H263、MPEG-4)、图像处理(JPEG)、信号处理、语音压缩(例如:G723、GSM、AMR)和加密机制。字面上的意思就是集成性能基元,IPP的ChiefArchitect李信弘(Shinn-HorngLEE)解释了Intel开发IPP的原因:开发IPP的目的是为了发挥CPU的性能。销售IPP目的之一是了解哪些单位在用IPP,目的之二是用销售所得提供客户支持。其次,IPP不光能对Intel的CPU进行提速,在非Intel的CPU上照样可以发挥提速功能。但是当然IPP在IntelCPU上发挥的能力要比AMD的CPU上强。IntelIPP的安装与配置使用IPP的安装说明:按目标CPU型号,IPP库分为以下几种类型(参考ReleaseNotes.htm):IA-32:32位处理器包括Intel®Core™2Duo、Pentium®4、Xeon®、Celeron®等,这是我们常用的CPU类型;Intel®64:基于IA-32、带有64位扩展的CPU,操作系统为64位;IntelItanium®:IntelItanium®2处理器且操作系统为64位;Intel®IXP4XXNetworkProcessors:包括某些用于嵌入式系统的CPU;本文档采用的安装包安装,安装的为w_ipp_ia32_p_6.1.2.041。安装步骤如下:双击next选择安装路径,安装完毕即可安装完毕之后,运行ippiDemo.exe(或ippsDemo.exe从C:\ProgramFiles\Intel\IPP\6.1.x.xxx\ia32\Demo)。如果您收到“此应用程序未能启动,因为ippcore.dll未找到”之类的错误消息,这意味着该操作系统无法确定英特尔IPP的位置动态库。为了解决这个问:在使用英特尔IPP动态库之前,添加C:\ProgramFiles\Intel\IPP\6.1.x.xxx\ia32到PATH环境变量中设置环境变量描述;手动复制IPP\6.1.x.xxx\ia32\bin到的\System32;具体如下:右击计算机,找到属性,点击高级系统配置,右下角即找到环境变量选项。在后面加“;号”加上IPP的可执行文件夹(C:\ProgramFiles\Intel\IPP\6.1.2.041\ia32\bin)点击确定即可在系统变量中找到Path,点击编辑环境配置本文档基于vs2010进行配置VS2010取消了08之前在options里面添加第三方库目录的设置,新的设置方法如下:View->PropertyManager,在PropertyManager框里面有Debug|Win32和Release|Win32选项,打开任意一个Microsoft.Cpp.Win32.user会弹出Microsoft.Cpp.Win32.userPropertyPages对话框,点击左边VCDirectories,会出现相应得页面,可以在IncludeDirectories与LibraryDirectories里面设置全局的头文件和库路径经历以上步骤,我们的ipp库以及头文件即配置到vs2010中了,接下来我们来进行简单的编程。IPP各组件简介Bin文件夹:包含处理器分配器(processordispatchers)及函数实现,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入¨?头ª¡¤文?件tintmain(intargc,char* argv[]){Ipp64ustart,end;start=ippGetCpuClocks(); //得Ì?到Ì?开a始º?CPU时º¡À钟¨®end=ippGetCpuClocks(); //得Ì?到Ì?终?止1CPU时º¡À钟¨®printf("Clockstodonothing:%d\n",(Ipp32s)(end-start));start= ippGetCpuClocks();printf("HelloWorld\n");end= ippGetCpuClocks();printf("Clockstoprint'helloworld':%d\n",(Ipp32s)(end-start));return0;}编译前准备程序中使用了IPP中的ippGetCpuClocks函数,在帮组文件中找到关于ippGetCpuClocks描述如下表明该函数在ippcore.h中被描述,因此只需要链接同名的lib文件即可:点击菜单的“项目--xxx属性--配置属性--链接器--输入”,在右边的“附加依赖项”中填入ippcore.lib即可。程序运行结果数据拷贝程序代码#include"stdafx.h"#include"ipp.h"//引°y入¨?头ª¡¤文?件tintmain(intargc,char*argv[]){constintSIZE=256;Ipp8u pSrc[SIZE], pDst[SIZE]; //定¡§义°?数ºy组Á¨¦inti;for(i=0;ipDstprintf("pDst[%d]=%d\n",SIZE-1,pDst[SIZE-1]);return0;}编译前准备如上程序结果
/
本文档为【IPP详细入门及简单例程(3)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索