Intel IPP库使用入门
来源:互联网 发布:skype无法连接到网络 编辑:程序博客网 时间:2024/05/11 18:49
2008-11-11
说明:本文基于IPP v5.3 update 3 for Windows* on IA-32,参考的文档采用安装包安装的文档;
文档“userguide_win_ia32.pdf”包含了本文的大部分信息;
1 IPP概述
全称:Intel® IntegratedPerformance Primitives
按目标CPU型号,IPP库分为以下几种类型(参考ReleaseNotes.htm):
IA-32:32位处理器包括Intel® Core™2Duo、Pentium® 4、Xeon®、Celeron®等,这是我们常用的CPU类型;
Intel® 64:基于IA-32、带有64位扩展的CPU,操作系统为64位;
IntelItanium®:Intel Itanium® 2 处理器且操作系统为64位;
Intel®IXP4XX Network Processors:包括某些用于嵌入式系统的CPU;
1.1 IPP库提供4大类型的函数:
l 信号处理(SignalProcessing),包括了语音识别、语音流编码、语音编码等的函数;
l 图形与视频处理(Image andVideo Processing),包括了图像处理、视频流编码等的函数;
l Small Matrices RealisticRendering,包括了Vector、Matrix等的处理函数;
l 加解密(Cryptography),包括数字认证、公钥加密等的函数;
2 基本使用
2.1 安装
Windows版本可从官方网站下载试用版本,直接安装即可;注意,请选择目标CPU型号对应的安装包下载;有
开发包安装后,在安装目录下的tools/runtime目录中有一个可二次分发的安装,该程序默认会根据CPU型号仅安装合适的运行时库,但这可以通过命令行来控制;参考该目录下的“readme.htm”。运行时库的目的安装位置为system32。
2.2 验证安装及获得版本信息
tools/env/ippenv.bat可用于设置环境变量
ia32/demo/ ippsDemo.exe可用于验证安装后路径是否已经设置
tools/support/iplid.exe可用于获得版本信息
2.3 开发环境要求
本部分参考“ReleaseNotes.htm”;
900MB以上空闲磁盘空间;
Windows XP及以上OS,VC.NET 2003及以上版本的VC,注意不包括VC6。
2.4 头文件及库文件及开发环境准备
ipp.h包含了所有需要的IPP头文件,工程中只要include它就可以了;
开发环境:将IPP路径添加到VC的头文件路径及库文件路径中即可;
Stublib,包含符号而不包含实现,用于装载Dll;
Dll,包含处理器分配器(processordispatchers)及函数实现;
Static merged,所有支持的处理器类型的函数实现,如ippsmerged.lib;
Static e-merged,所有函数的处理器分配器,如ippsemerged.lib;
3 链接方式
IPP提供了多种程序编译链接方式以适用于不同的需求。
3.1 动态链接:
动态链接可以产生具有最大适应性的程序,它是唯一的不需要随CPU升级而重新编译程序的链接方式;
bin/ipp*.dll是分配器(dispatcher)dll;它们在运行时检查CPU类型并加载合适的CPU特定dll,这样应用无需考虑具体CPU型号;CPU特定dll命名规律参考下文;
链接库使用stublib目录下的ipp*.lib;
方法:
1, 包含ipp.h;
2, 使用常规的IPP函数名;
3, 与相应的stublib/ipp*.lib文件链接;
3.2 自定义动态链接:
某些程序仅依赖于少量的IPP函数,这种情况下可以使用该链接方式,以使目标程序仅仅依赖于它所确实用到的IPP库;具体实现请参考《userguide_win_ia32.pdf》。
3.3 静态链接(使用Dispatch功能):
使用Dispatch功能可使得静态链接的应用程序与动态链接一样,可以在运行时选择使用合适的、适用于特定CPU类型的函数版本,这能很大地提高程序性能;
方法:
1, 包含ipps.h;
2, 调用其他IPP函数前调用ippStaticInit或ippStaticInitCPU进行初始化;如果不进行初始化,后续函数调用将会使用默认的px类型的函数;
3, 使用普通函数名调用IPP函数;
4, 需包括lib目录下链接库e-merged库、merged库和ippcorel.lib
3.4 静态链接(无Dispatch功能):
如果目标程序仅用于某种特定的CPU,则可以使用这种方式,它是这几种方式中产生的目标程序最小的方式;
方法(参考tools/staticlib目录下的“readme.htm”文件):
1, 包含tools/staticlib目录下的CPU类型对应头文件;
2, 包含ipps.h;
3, 链接库仅使用merged库(ipp*merged.lib)与ippcorel.lib;
3.5 IPP相应编号规则与CPU型号的对应关系:
Header
Processor
a6
Intel® Pentium® III processor (SSE)
w7
Pentium 4 processor (SSE2)
t7
Pentium 4 processor with Hyper-Threading Technology and Streaming SIMD Extensions 3 (SSE3)
v8
Intel® Core™2 Duo processors (SSSE3)
p8
Intel® Penryn based processors (SSE4.1)
px
All other Intel® architecture processors
4 Unified Speech ComponentInterface介绍
本部分主要参考《uscmanual.pdf》及USC各目录下的readme文档;
USC是Intel在IPP之上封装提供的一个用于音频编解码、回声消除、信号音过滤、Tone音检测等功能的静态库,它隔离了IPP的使用细节,提供了相当简单的几个接口函数,使得开发人员无需了解上述这些算法的具体定义与实现细节,就可以开发出提供相应功能的应用程序;
可以在下载的ipp-samples(如w_ipp-samples_p_5.3.095.zip,前缀w_表示Windows平台)的speech-codecs目录中找到该组件。
USC提供的API函数分成基本API(Base API)与算法专用API两种类型;基本API包括NumAlloc、MemAlloc、Init、Control等函数,其中Control提供了一个通用的设置算法参数的接口;专用API分成音频编解码、回声消除等上文中提及的4中类型,如编解码的包括Encode、Decode、GetOutStreamSize、SetFrameSize四个函数;
5 资料介绍
Intel网站上的有大量资料供下载,其中前缀为w_表示Windows版本,l_表示Linux版本;下载包大多带有对应IPP的版本号;
示例程序仅下载*_ipp-samples_p_5.3.*.zip就可以了,某些下载包是早期版本的;
6 参考资料
- Intel IPP库使用入门
- Intel IPP库使用入门
- Intel IPP库
- Intel IPP库
- intel的ipp库
- Intel IPP使用许可浅析
- sgx 中intel ipp 加密库的使用
- Intel IPP使用许可浅析(转载)
- Intel IPP图像库手册函数概述
- 安装Intel图像处理IPP库
- New Tech: intel IPP
- intel IPP编译
- x264编解码器 - Intel IPP
- 如何对Intel IPP库进行静态链接
- Intel IPP图像处理库下载及安装测试
- linux下intel IPP 加密库安装及快速上手
- Intel IPP集成性能原件
- intel ipp学习,经验分享
- gprofile tips
- Performance about C++ code
- IP语音:问题与策略
- 多线程进阶代码二
- 谋划(9)
- Intel IPP库使用入门
- 水立方上的蜘蛛人
- 为什么选择CSDN, 为什么叫lab17 ?
- Pcap研究
- WAP网站介绍
- to_date
- == 和equals() 的区别
- 多线程进阶代码三
- 如何快速的成为一个合格的Oracle DBA?