概述
1、IPP简介
IPP“Intel Integrated Performance Primitives” ( Intel IPP )是一套跨平台的软件函数库,他提供了广泛的多媒体功能:音频解码器(例如: H263 、 MPEG-4 )、图像处理 (JPEG) 、信号处理、语音压缩(例如: G723 、 GSM 、 AMR )和加密机制。“Intel IPP” 包含各种的函数,用于进行向量与图像处理、颜色转换、过滤、分屏、设置域值、变换,以及算术、统计、几何与图形运算。对于每个函数, “Intel IPP” 均支持多种数据类型和分布,同时保持了数据结构的最小化,它提供了丰富的选项供用户在设计与优化应用程序时选用,不必再去编写特定代码。Intel IPP 针对大量的 Intel Microprocessor (微处理器)进行优化: Intel Pentium 4 处理器,采用 Intel Centrino 移动运算技术的 Intel Pentium M 处理器组件, Intel Itanium 2 处理器、 Intel Xeon 处理器以及采用 Intel XScale 技术的 Intel PCA 应用处理器。采用一套跨平台结构的通用 API ,使用者除了不需要担心平台兼容性的问题,更节省了开发成本以及研发时间,使用者可以轻轻松松移植原有应用程序。特性Intel IPP 功能优化多媒体函数· 不再需要以 Hard-Coding 方式针对特定的处理器进行优化· 提高应用程序的可靠性· 节省时间:内置调度器选择优化处理,并根据处理器自动调度特定的运行时代码· 在基于信号和图像的数据结构的特定约束方面,改善了应用程序的灵活性Intel IPP 节省开发时间“Intel Integrated Performance Primitives” 为软件应用程序提供了一个连接界面,它可以增强 Intel 最新微处理器的性能,同时还具有加速上市时间、降低开发成本等优势。您不必针对特定的处理器专门去编写代码,即可利用处理器的高级功能。许多使用 “Intel IPP” 的多媒体应用程序开发人员已经大大改善了他们的软件在 Intel 处理器上的性能。高度的灵活性给予您自由发挥的空间“Intel IPP” 函数库针对 Itanium 2 微处理器、 Intel Xeon 、 Pentium III 、 Pentium 4 处理器以及采用 Intel Centrino 移动计算技术的 Pentium M 处理器元件进行过优化。“Intel IPP” 还针对 Intel XScale 微处理器的 “Intel 个人客户端架构 ” ( Intel R PCA )进行优化。这一个应用程序开发界面 (API) 可以跨越许多平台使用,使得多媒体应用程序开发人员能够轻松实现跨品台兼容,并有助于降低开发成本。取得性能增强效果Intel IPP 提供优化功能,让使用者在最短的时间内能得到最佳的效能, Intel IPP4.1 提供更丰富的优化效能。要下载的话去Intel的官网下载即可。
具体它可用于:信号处理(SignalProcessing),包括了语音识别、语音流编码、语音编码等的函数;
图形与视频处理(Image andVideo Processing),包括了图像处理、视频流编码等的函数;
Small Matrices RealisticRendering,包括了Vector、Matrix等的处理函数;
加解密(Cryptography),包括数字认证、公钥加密等的函数;
参考教程:http://bbs.csdn.net/topics/210061228
http://blog.csdn.net/netnote/article/details/3278275
2、IPP安装
在安装的时候会问你平台,可参考:
https://software.intel.com/en-us/articles/ia-32-intelr-64-ia-64-architecture-mean/
http://www.intel.cn/content/www/cn/zh/processors/architectures-software-developer-manuals.html
https://software.intel.com/zh-cn/blogs/2010/01/14/intel-ipp
其实版本正确的话,一下子就搞定了。我开始用的是IPP 8.2最新版本,是一个评估版本,结果第一次安装就没成功,也没有显示31天评估天,退出继续安装。令人恶心的是发现我的评估日期已经过了,这就是让人恶心的地方。痛定思痛,我就下过另外一个版本,下了8.0,本打算这个再不行我就找6.1,那个就直接破解了。不过幸好我发现这一次居然过了,这简直是太美好了。别人的电脑一次就过了,然后我的电脑折腾了这么久。之前安装portaudio也是这样,流程步骤别人的一次就过,然后我的就遇到了基本上能遇到的所有问题。反正搞这些东西的话只有一个诀窍:坚持!坚持到底就是胜利,但是不一定有奖励!
3、IPP使用
看了很多教程,全部都是在说啊!有图有真相,又一波回馈大众!我找了官网以及很多教程,我终于算是把所有的坑应该都跑过一遍了。现在是可以和大家说怎么在vs上配置IPP了。
step 1:
打开你所建项目的项目属性,从解决方案管理器或属性管理器,右击属性。
找到C/C++,点开里面的常规(General)。如下图:
点开常规之后,可以看到附加包含目录(Additional Include Directories):往里面添加:C:Program Files (x86)IntelComposer XE 2015ippinclude这条路径。
接着点开链接器(Link),打开里面的常规(General)。点击附加库目录(Additional Library Directories line)往里面添加:C:Program Files (x86)IntelComposer XE 2015ipplibintel64 这条路径。我的笔记本是x64架构的,所以得加x64。这个一定要按你的架构添加,不要以为所有的都加上去就更好,会报错。那么我们怎么看我们是选哪种ia32还是intel64呢?一般来说都是intel64的。具体的可以看intel的网站也可以看我下面给出的其中一个博客链接。
step 2:
选择链接器(Link)的输入(Input),选择附加依赖项(Additional Dependencies),添加所需的IPP库。有动态库和静态库之分。动态库是诸如:ippi.lib ipps.lib ippcore.lib;也有静态库:ippimt.lib ippsmt.lib ippvmmt.lib ippcoremt.lib。一般来说不要都加,有些朋友都加了会报错。具体的库的用处你可以从GetStart那里去得到。
step 3:
我选择的是动态库,对于动态库,你还需要做的就是还有一些改动。
选择配置属性(Configuration Properties)-> VC++目录(VC++ Directories)做如下改动:
——包含目录(Include Files) 往里面添加:C:Program Files (x86)IntelComposer XE 2013 SP1ippinclude
——库目录(Library Files), 往里面添加:C:Program Files (x86)IntelComposer XE 2013 SP1ipplib
——可执行文件目录(Executable Files),往里面添加:C:Program Files (x86)IntelComposer XE 2013 SP1redistintel64ipp
step 4:
这个是对以上的一些总结以及遇到的问题:
有时候我发现它告诉我会缺少什么dll,我后面发现在可执行目录那里其实是有加的,但是为什么没有反应呢?我狠下心来,把那些dll全部copy到我所建项目的Debug目录下,然后问题顺利干掉。
可能倒霉的朋友可能遇到过0xc000007的问题,接着去找DX修复器,其实你想太多了。其实问题是:你要选的是活动(x64的平台),结果你发现你是在win32的平台下。因为这个库是针对你的底层处理器进行的一些优化,所以这一块选择正确的处理器很重要。
还有就是其实一开始我运行的程序就是:
C:Program Files (x86)IntelComposer XE 2013 SP1bin 这里面三个批处理程序,把ipp加到了环境变量那里。
当我把以上问题ko之后发现可以运行了,这是一个令人高兴的事情 如果你有遇到什么问题的话可以在底下提问哦,说不定我也遇到过!我就是这么命运多舛!
主要参考的就是:
https://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-for-windows-compiling-and-linking-with-microsoft-visual-c-and-intel-c-compilers
下面两篇博客就是参考一些词汇,大概熟悉一下他们碰到的坑,因为你也很可能会碰到。
http://blog.csdn.net/netnote/article/details/3278275
http://blog.sina.com.cn/s/blog_4bbcda6d0100lqcj.html
IPP使用什么的就看这个软件提供给你的GetStart,谁能比这个软件的开发者更能专业地告诉你这个软件怎么使用呢。
当然,一定要记得你的是什么平台。win32还是x64。
最后如果可以运行下面的这个代码的话,应该就没有什么问题了。在这里,ippInit()是初始化函数,这个和PortAudio很像,还有获取库的版本信息->ippiGetLibVersion()。
在看一下在运行的CPU的特征。
#include "ipp.h"
#include <stdio.h>
int main(int argc, char* argv[])
{
const IppLibraryVersion *lib;
Ipp64u fm;
IppStatus status;
status = ippInit();
//IPP initialization with the best optimization layer
if (status != ippStsNoErr) {
printf("IppInit() Error:n");
printf("%sn", ippGetStatusString(status));
return -1;
}
//Get version info
lib = ippiGetLibVersion();
printf("%s %sn", lib->Name, lib->Version);
//Get CPU features enabled with selected library level
fm = ippGetEnabledCpuFeatures();
printf("SSE
:%cn", (fm >> 1) & 1 ? 'Y' : 'N');
printf("SSE2
:%cn", (fm >> 2) & 1 ? 'Y' : 'N');
printf("SSE3
:%cn", (fm >> 3) & 1 ? 'Y' : 'N');
printf("SSSE3
:%cn", (fm >> 4) & 1 ? 'Y' : 'N');
printf("SSE41
:%cn", (fm >> 6) & 1 ? 'Y' : 'N');
printf("SSE42
:%cn", (fm >> 7) & 1 ? 'Y' : 'N');
printf("AVX
:%cn", (fm >> 8) & 1 ? 'Y' : 'N');
printf("AVX2
:%cn", (fm >> 15) & 1 ? 'Y' : 'N');
printf("----------n");
printf("OS Enabled AVX :%cn", (fm >> 9) & 1 ? 'Y' : 'N');
printf("AES
:%cn", (fm >> 10) & 1 ? 'Y' : 'N');
printf("CLMUL
:%cn", (fm >> 11) & 1 ? 'Y' : 'N');
printf("RDRAND
:%cn", (fm >> 13) & 1 ? 'Y' : 'N');
printf("F16C
:%cn", (fm >> 14) & 1 ? 'Y' : 'N');
return 0;
}
最后
以上就是体贴哈密瓜为你收集整理的语音识别之IPP使用教程以及vs上配置IPP1、IPP简介2、IPP安装3、IPP使用的全部内容,希望文章能够帮你解决语音识别之IPP使用教程以及vs上配置IPP1、IPP简介2、IPP安装3、IPP使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复