概述
version 1.0
2008-11-11
说明:本文基于IPP v5.3 update 3 for Windows* on IA-32,参考的文档采用安装包安装的文档;
文档“userguide_win_ia32.pdf”包含了本文的大部分信息;
1 IPP概述
全称:Intel® Integrated Performance Primitives
按目标CPU型号,IPP库分为以下几种类型(参考ReleaseNotes.htm):
IA-32:32位处理器包括Intel® Core™2 Duo、Pentium® 4、Xeon®、Celeron®等,这是我们常用的CPU类型;
Intel® 64:基于IA-32、带有64位扩展的CPU,操作系统为64位;
Intel Itanium®:Intel Itanium® 2 处理器且操作系统为64位;
Intel® IXP4XX Network Processors:包括某些用于嵌入式系统的CPU;
1.1 IPP库提供4大类型的函数:
l 信号处理(Signal Processing),包括了语音识别、语音流编码、语音编码等的函数;
l 图形与视频处理(Image and Video Processing),包括了图像处理、视频流编码等的函数;
l Small Matrices Realistic Rendering,包括了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,包含处理器分配器(processor dispatchers)及函数实现;
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 Component Interface介绍
本部分主要参考《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库使用入门 1 IPP概述 2 基本使用 3 链接方式 4 Unified Speech Component Interface介绍 5 资料介绍 6 参考资料的全部内容,希望文章能够帮你解决Intel IPP库使用入门 1 IPP概述 2 基本使用 3 链接方式 4 Unified Speech Component Interface介绍 5 资料介绍 6 参考资料所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复