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. Qt Creator配置Intel IPP库并实现信号带通滤波

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一.环境参数 二.添加步骤 1.安装IPP2018 2.配置环境变量 3.引入lib文件 三. 测试 输出结果 ...

  2. Intel IPP库概述,合计共5000个函数

    "英特尔IPP"为开发人员提供了高质量.支持生产的低级构造块,用于图像处理.信号处理和数据处理(数据压缩/解压缩和加密)应用程序.它是针对各种Intel架构(Intel®Quark ...

  3. 【intel IPP库历史版本下载】

    IPP库历史下载中心 本人使用的是window系统,下载步骤如下 1.打开上方链接,选择适合自己系统的版本 2.选择历史版本 之所以这么下载历史版本,是因为2022版本没有对应的32位ipp库 英文版 ...

  4. Qt 配置使用IPP库

    Inter IPP库的简介与配置 1.Inter IPP库简介 IPP"Intel Integrated Performance Primitives" ( Intel IPP ) ...

  5. 关于Intel IPP的基本使用方法——参照可设置ipl库

    IPP是个好东西,里面的函数精而全,希望大家好好利用.因为IPP目前很少中文资料,我们只能靠自己摸索.下面就简单说说IPP在VC2005下的基本使用方法. 假定你的IPP是安装在"D:/In ...

  6. 利用Intel IPP函数库实现信号频谱计算

    Intel IPP(Intel Integrated Performance Primitives)函数库是一套跨平台的软件函数库,它为用户提供了一套高效.实用的函数集,可用于实现通信.图像.语音等多 ...

  7. Intel的ipp库(Integrated Performance Primitives)

    IPP库包含了许多底层优化的函数.如果已经安装了IPP库,opencv在运行时也会自动调用.NVIDIA公司针对GPU开发了的GPU加速的图像.视频.信号处理库NPP(NVIDIA Performan ...

  8. Intel IPP for Linux

    本文讲述在Linux系统上运行依赖于IPP库的C项目过程 参考文档: CMake官网文档 Linux入门 IPP官方Linux安装教程 GCC 参数详解 | 菜鸟教程 (runoob.com) gcc ...

  9. Intel IPP安装和安装测试

    一.IPP简介 英特尔®集成性能原语(Intel®IPP)是一种软件库,提供了广泛的功能,包括通用信号和图像处理.计算机视觉.数据压缩和字符串操作. 二.下载 1.搜索IPP 2.点击链接IntelR ...

最新文章

  1. android异步更新UI
  2. 利用MATLAB进行系统时域分析,实验二 利用matlab进行系统的时域分析
  3. jzoj3054-祖孙询问【LCA】
  4. python封装exe 时间time问题_python模块之datetime
  5. Element中 el-tag 点击事件 el-tag添加@click事件无效
  6. 四面轻松突围!我是如何斩获高级运维开发一职的?
  7. java基础概念整理(三)
  8. matlab初学者教程_初学者的Hibernate教程
  9. 手撸反向传播算法(附代码)
  10. python语法学习第十一天--模块
  11. Windows XP SP3安装后瘦身法
  12. PMP课程笔记:第10章 项目沟通管理
  13. 为什么发音要浊化(sp、st、sk)
  14. 书名:男人一本书 前言
  15. AS3.0实现扎气球游戏
  16. 概率DP——BZOJ4008 [HNOI2015]亚瑟王
  17. 知数堂全网通缉这个人
  18. 肠道微生物群与心血管疾病:机遇与挑战
  19. JAVA基础--java简单知识04(类与对象,封装,继承,多态)
  20. MATLAB的数列与极限运算

热门文章

  1. 仿Windows记事本简要分析 (Java)
  2. hexo博客文章置顶功能实现的两种方法
  3. ZZUILIOJ-2780 小A的宝藏
  4. 24个笔画顺序表田字格_衡水体26个英文字母写法,你值得拥有!
  5. 校外如何登陆北邮oj
  6. 给职场年轻人的一些建议
  7. 分布式爬取顶点小说全站内容
  8. 2023 薪火cms 视频打赏系统源码 独立代理后台
  9. 给出以下程序,制作makefile文件,编译出可执行文件
  10. Rxjava——使用RxBus替换EventBus