Intel IPP库使用入门
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库使用入门相关推荐
- Qt Creator配置Intel IPP库并实现信号带通滤波
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一.环境参数 二.添加步骤 1.安装IPP2018 2.配置环境变量 3.引入lib文件 三. 测试 输出结果 ...
- Intel IPP库概述,合计共5000个函数
"英特尔IPP"为开发人员提供了高质量.支持生产的低级构造块,用于图像处理.信号处理和数据处理(数据压缩/解压缩和加密)应用程序.它是针对各种Intel架构(Intel®Quark ...
- 【intel IPP库历史版本下载】
IPP库历史下载中心 本人使用的是window系统,下载步骤如下 1.打开上方链接,选择适合自己系统的版本 2.选择历史版本 之所以这么下载历史版本,是因为2022版本没有对应的32位ipp库 英文版 ...
- Qt 配置使用IPP库
Inter IPP库的简介与配置 1.Inter IPP库简介 IPP"Intel Integrated Performance Primitives" ( Intel IPP ) ...
- 关于Intel IPP的基本使用方法——参照可设置ipl库
IPP是个好东西,里面的函数精而全,希望大家好好利用.因为IPP目前很少中文资料,我们只能靠自己摸索.下面就简单说说IPP在VC2005下的基本使用方法. 假定你的IPP是安装在"D:/In ...
- 利用Intel IPP函数库实现信号频谱计算
Intel IPP(Intel Integrated Performance Primitives)函数库是一套跨平台的软件函数库,它为用户提供了一套高效.实用的函数集,可用于实现通信.图像.语音等多 ...
- Intel的ipp库(Integrated Performance Primitives)
IPP库包含了许多底层优化的函数.如果已经安装了IPP库,opencv在运行时也会自动调用.NVIDIA公司针对GPU开发了的GPU加速的图像.视频.信号处理库NPP(NVIDIA Performan ...
- Intel IPP for Linux
本文讲述在Linux系统上运行依赖于IPP库的C项目过程 参考文档: CMake官网文档 Linux入门 IPP官方Linux安装教程 GCC 参数详解 | 菜鸟教程 (runoob.com) gcc ...
- Intel IPP安装和安装测试
一.IPP简介 英特尔®集成性能原语(Intel®IPP)是一种软件库,提供了广泛的功能,包括通用信号和图像处理.计算机视觉.数据压缩和字符串操作. 二.下载 1.搜索IPP 2.点击链接IntelR ...
最新文章
- android异步更新UI
- 利用MATLAB进行系统时域分析,实验二 利用matlab进行系统的时域分析
- jzoj3054-祖孙询问【LCA】
- python封装exe 时间time问题_python模块之datetime
- Element中 el-tag 点击事件 el-tag添加@click事件无效
- 四面轻松突围!我是如何斩获高级运维开发一职的?
- java基础概念整理(三)
- matlab初学者教程_初学者的Hibernate教程
- 手撸反向传播算法(附代码)
- python语法学习第十一天--模块
- Windows XP SP3安装后瘦身法
- PMP课程笔记:第10章 项目沟通管理
- 为什么发音要浊化(sp、st、sk)
- 书名:男人一本书 前言
- AS3.0实现扎气球游戏
- 概率DP——BZOJ4008 [HNOI2015]亚瑟王
- 知数堂全网通缉这个人
- 肠道微生物群与心血管疾病:机遇与挑战
- JAVA基础--java简单知识04(类与对象,封装,继承,多态)
- MATLAB的数列与极限运算