IPP详细入门及简单例程.docx
- 文档编号:11297152
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:11
- 大小:472.45KB
IPP详细入门及简单例程.docx
《IPP详细入门及简单例程.docx》由会员分享,可在线阅读,更多相关《IPP详细入门及简单例程.docx(11页珍藏版)》请在冰豆网上搜索。
IPP详细入门及简单例程
IPP新手入门
IntelIPP简介
XX百科上是这样介绍的:
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对话框,点击左边VC++Directories,会出现相应得页面,可以在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入¨?
头ª¡¤文?
件t
intmain(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入¨?
头ª¡¤文?
件t
intmain(intargc,char*argv[])
{
constintSIZE=256;
Ipp8upSrc[SIZE],pDst[SIZE];//定¡§义°?
数ºy组Á¨¦
inti;
for(i=0;i pSrc[i]=(Ipp8u)i;//初? 始º? 化¡¥数ºy组Á¨¦ ippsCopy_8u(pSrc,pDst,SIZE);//数ºy组Á¨¦拷? 贝À¡äpSrc--->pDst printf("pDst[%d]=%d\n",SIZE-1,pDst[SIZE-1]); return0; } 编译前准备 如上 程序结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IPP 详细 入门 简单 例程
![提示](https://static.bdocx.com/images/bang_tan.gif)