<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>中文 &#187; netnote</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/netnote/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Sat, 26 May 2012 06:34:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Intel IPP 库使用入门</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/01/14/intel-ipp/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/01/14/intel-ipp/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 10:48:13 +0000</pubDate>
		<dc:creator>netnote</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[IPP]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/01/14/intel-ipp/</guid>
		<description><![CDATA[说明：本文基于IPP v5.3 update 3 for Windows* on IA-32，参考的文档采用安装包安装的文档； 文档“userguide_win_ia32.pdf”包含了本文的大部分信息； &#60;!--[if !supportLists]--&#62;1 &#60;!--[endif]--&#62;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； &#60;!--[if !supportLists]--&#62;1.1 &#60;!--[endif]--&#62;IPP库提供4大类型的函数： &#60;!--[if !supportLists]--&#62;l &#60;!--[endif]--&#62;信号处理（Signal Processing），包括了语音识别、语音流编码、语音编码等的函数； &#60;!--[if !supportLists]--&#62;l &#60;!--[endif]--&#62;图形与视频处理（Image and Video Processing），包括了图像处理、视频流编码等的函数； &#60;!--[if !supportLists]--&#62;l &#60;!--[endif]--&#62;Small Matrices Realistic Rendering，包括了Vector、Matrix等的处理函数； &#60;!--[if !supportLists]--&#62;l &#60;!--[endif]--&#62;加解密（Cryptography），包括数字认证、公钥加密等的函数； &#60;!--[if [...]]]></description>
			<content:encoded><![CDATA[<p>说明：本文基于IPP v5.3 update 3 for Windows* on IA-32，参考的文档采用安装包安装的文档；</p>
<p>文档“userguide_win_ia32.pdf”包含了本文的大部分信息；</p>
<p>&lt;!--[if !supportLists]--&gt;1 &lt;!--[endif]--&gt;IPP概述<br />
全称：Intel® Integrated Performance Primitives</p>
<p>按目标CPU型号，IPP库分为以下几种类型（参考ReleaseNotes.htm）：</p>
<p>IA-32：32位处理器包括Intel® Core™2 Duo、Pentium® 4、Xeon®、Celeron®等，这是我们常用的CPU类型；</p>
<p>Intel® 64：基于IA-32、带有64位扩展的CPU，操作系统为64位；</p>
<p>Intel Itanium®：Intel Itanium® 2 处理器且操作系统为64位；</p>
<p>Intel® IXP4XX Network Processors：包括某些用于嵌入式系统的CPU；</p>
<p>&lt;!--[if !supportLists]--&gt;1.1 &lt;!--[endif]--&gt;IPP库提供4大类型的函数：<br />
&lt;!--[if !supportLists]--&gt;l &lt;!--[endif]--&gt;信号处理（Signal Processing），包括了语音识别、语音流编码、语音编码等的函数；</p>
<p>&lt;!--[if !supportLists]--&gt;l &lt;!--[endif]--&gt;图形与视频处理（Image and Video Processing），包括了图像处理、视频流编码等的函数；</p>
<p>&lt;!--[if !supportLists]--&gt;l &lt;!--[endif]--&gt;Small Matrices Realistic Rendering，包括了Vector、Matrix等的处理函数；</p>
<p>&lt;!--[if !supportLists]--&gt;l &lt;!--[endif]--&gt;加解密（Cryptography），包括数字认证、公钥加密等的函数；</p>
<p>&lt;!--[if !supportLists]--&gt;2 &lt;!--[endif]--&gt;基本使用<br />
&lt;!--[if !supportLists]--&gt;2.1 &lt;!--[endif]--&gt;安装<br />
Windows版本可从官方网站下载试用版本，直接安装即可；注意，请选择目标CPU型号对应的安装包下载；有</p>
<p>开发包安装后，在安装目录下的tools\runtime目录中有一个可二次分发的安装，该程序默认会根据CPU型号仅安装合适的运行时库，但这可以通过命令行来控制；参考该目录下的“readme.htm”。运行时库的目的安装位置为system32。</p>
<p>&lt;!--[if !supportLists]--&gt;2.2 &lt;!--[endif]--&gt;验证安装及获得版本信息<br />
tools\env\ippenv.bat可用于设置环境变量</p>
<p>ia32\demo\ ippsDemo.exe可用于验证安装后路径是否已经设置</p>
<p>tools\support\iplid.exe可用于获得版本信息</p>
<p>&lt;!--[if !supportLists]--&gt;2.3 &lt;!--[endif]--&gt;开发环境要求<br />
本部分参考“ReleaseNotes.htm”；</p>
<p>900MB以上空闲磁盘空间；</p>
<p>Windows XP及以上OS，VC.NET 2003及以上版本的VC，注意不包括VC6。</p>
<p>&lt;!--[if !supportLists]--&gt;2.4 &lt;!--[endif]--&gt;头文件及库文件及开发环境准备<br />
ipp.h包含了所有需要的IPP头文件，工程中只要include它就可以了；</p>
<p>开发环境：将IPP路径添加到VC的头文件路径及库文件路径中即可；</p>
<p>Stublib，包含符号而不包含实现，用于装载Dll；</p>
<p>Dll，包含处理器分配器（processor dispatchers）及函数实现；</p>
<p>Static merged，所有支持的处理器类型的函数实现，如ippsmerged.lib；</p>
<p>Static e-merged，所有函数的处理器分配器，如ippsemerged.lib；</p>
<p>&lt;!--[if !supportLists]--&gt;3 &lt;!--[endif]--&gt;链接方式<br />
IPP提供了多种程序编译链接方式以适用于不同的需求。</p>
<p>&lt;!--[if !supportLists]--&gt;3.1 &lt;!--[endif]--&gt;动态链接：<br />
动态链接可以产生具有最大适应性的程序，它是唯一的不需要随CPU升级而重新编译程序的链接方式；</p>
<p>bin\ipp*.dll是分配器（dispatcher）dll；它们在运行时检查CPU类型并加载合适的CPU特定dll，这样应用无需考虑具体CPU型号；CPU特定dll命名规律参考下文；</p>
<p>链接库使用stublib目录下的ipp*.lib；</p>
<p>方法：</p>
<p>&lt;!--[if !supportLists]--&gt;1， &lt;!--[endif]--&gt;包含ipp.h；</p>
<p>&lt;!--[if !supportLists]--&gt;2， &lt;!--[endif]--&gt;使用常规的IPP函数名；</p>
<p>&lt;!--[if !supportLists]--&gt;3， &lt;!--[endif]--&gt;与相应的stublib\ipp*.lib文件链接；</p>
<p>&lt;!--[if !supportLists]--&gt;3.2 &lt;!--[endif]--&gt;自定义动态链接：<br />
某些程序仅依赖于少量的IPP函数，这种情况下可以使用该链接方式，以使目标程序仅仅依赖于它所确实用到的IPP库；具体实现请参考《userguide_win_ia32.pdf》。</p>
<p>&lt;!--[if !supportLists]--&gt;3.3 &lt;!--[endif]--&gt;静态链接（使用Dispatch功能）：<br />
使用Dispatch功能可使得静态链接的应用程序与动态链接一样，可以在运行时选择使用合适的、适用于特定CPU类型的函数版本，这能很大地提高程序性能；</p>
<p>方法：</p>
<p>&lt;!--[if !supportLists]--&gt;1， &lt;!--[endif]--&gt;包含ipps.h；</p>
<p>&lt;!--[if !supportLists]--&gt;2， &lt;!--[endif]--&gt;调用其他IPP函数前调用ippStaticInit或ippStaticInitCPU进行初始化；如果不进行初始化，后续函数调用将会使用默认的px类型的函数；</p>
<p>&lt;!--[if !supportLists]--&gt;3， &lt;!--[endif]--&gt;使用普通函数名调用IPP函数；</p>
<p>&lt;!--[if !supportLists]--&gt;4， &lt;!--[endif]--&gt;需包括lib目录下链接库e-merged库、merged库和ippcorel.lib</p>
<p>&lt;!--[if !supportLists]--&gt;3.4 &lt;!--[endif]--&gt;静态链接（无Dispatch功能）：<br />
如果目标程序仅用于某种特定的CPU，则可以使用这种方式，它是这几种方式中产生的目标程序最小的方式；</p>
<p>方法（参考tools\staticlib目录下的“readme.htm”文件）：</p>
<p>&lt;!--[if !supportLists]--&gt;1， &lt;!--[endif]--&gt;包含tools\staticlib目录下的CPU类型对应头文件；</p>
<p>&lt;!--[if !supportLists]--&gt;2， &lt;!--[endif]--&gt;包含ipps.h；</p>
<p>&lt;!--[if !supportLists]--&gt;3， &lt;!--[endif]--&gt;链接库仅使用merged库（ipp*merged.lib）与ippcorel.lib；</p>
<p>&lt;!--[if !supportLists]--&gt;3.5 &lt;!--[endif]--&gt;IPP相应编号规则与CPU型号的对应关系：</p>
<p><img src="http://images.csdn.net/20100114/11.jpg" alt="" /></p>
<p>&lt;!--[if !supportLists]--&gt;4 &lt;!--[endif]--&gt;Unified Speech Component Interface介绍<br />
本部分主要参考《uscmanual.pdf》及USC各目录下的readme文档；</p>
<p>USC是Intel在IPP之上封装提供的一个用于音频编解码、回声消除、信号音过滤、Tone音检测等功能的静态库，它隔离了IPP的使用细节，提供了相当简单的几个接口函数，使得开发人员无需了解上述这些算法的具体定义与实现细节，就可以开发出提供相应功能的应用程序；</p>
<p>可以在下载的ipp-samples（如w_ipp-samples_p_5.3.095.zip，前缀w_表示Windows平台）的speech-codecs目录中找到该组件。</p>
<p>USC提供的API函数分成基本API（Base API）与算法专用API两种类型；基本API包括NumAlloc、MemAlloc、Init、Control等函数，其中Control提供了一个通用的设置算法参数的接口；专用API分成音频编解码、回声消除等上文中提及的4中类型，如编解码的包括Encode、Decode、GetOutStreamSize、SetFrameSize四个函数；</p>
<p>&lt;!--[if !supportLists]--&gt;5 &lt;!--[endif]--&gt;资料介绍<br />
Intel网站上的有大量资料供下载，其中前缀为w_表示Windows版本，l_表示Linux版本；下载包大多带有对应IPP的版本号；</p>
<p>示例程序仅下载*_ipp-samples_p_5.3.*.zip就可以了，某些下载包是早期版本的；</p>
<p>&lt;!--[if !supportLists]--&gt;6 &lt;!--[endif]--&gt;参考资料</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/01/14/intel-ipp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

