IPP详细入门及简单例程.docx
- 文档编号:26359163
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:11
- 大小:430.80KB
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,点击编辑
环境配置
本文档基于vs2020进行配置
VS2020取消了08之前在options里面添加第三方库目录的设置,新的设置方式如下:
View->PropertyManager,在PropertyManager框里面有Debug|Win32和Release|Win32选项,打开任意一个Microsoft.Cpp.Win32.user会弹出Microsoft.Cpp.Win32.userPropertyPages对话框,点击左侧VC++Directories,会显现相应得页面,能够在IncludeDirectories与LibraryDirectories里面设置全局的头文件和库途径
经历以上步骤,咱们的ipp库和头文件即配置到vs2020中了,接下来咱们来进行简单的编程。
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)