<?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; Zhibin Niu (Intel)</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/zhibin-niu/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Mon, 28 May 2012 14:23:20 +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>编写更节能的程序</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/12/26/400009546/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/12/26/400009546/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 03:59:49 +0000</pubDate>
		<dc:creator>Zhibin Niu (Intel)</dc:creator>
				<category><![CDATA[其他]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/12/26/400009546/</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;看到这个题目的时候，读者可能会诧异：代码也有节能与不节能之分？我们说，是的，本质上，程序所调度的是硬件资源，不合理的硬件调度，会使得设备调度效率不高，从而产生更高的能耗。 实际上，随着移动终端的流行，功耗比已然成为比较处理器的重要参数。在已经上市，可能大放光彩的超级本上（Ultrabook），功耗更成为重要的考虑因素。实际上英特尔已经大量考虑了硬件层面的功耗优化，微软将在Windows8中增强功耗优化，第三方软件也将不可避免的影响到功耗，而实际上ill behaving的软件或服务甚至可能会使得所有硬件层和系统层所作的功耗优化功亏一篑。 当前来讲，对于同质化的软件，其差异性在于性能，功能，用户体验等，在不久的将来，功耗可能成为重要特性之一。想象一下，在超级本普及之后，一个软件能支撑十个小时，而另外一个只能七个小时，那么用户尤其是没有外接电源的情况下必然更倾向于前者。 闲话短续，那么什么样的软件是节能的软件呢？通常可以从下面两个工作状态来看： Idle workloads: 1.&#160;&#160;&#160;&#160;&#160;处理器和平台能够长时间处于idle状态，避免软件的高频执行，比如统计等； 2.&#160;&#160;&#160;&#160;&#160;应当尽可能的将任务联合，协调和分批处理；避免频繁的执行程序，最小化后台服务； 3.&#160;&#160;&#160;&#160;&#160;软件不能够影响平台硬件组件进入到深一层的power state（往往是因为太多的中断所造成）。 4.&#160;&#160;&#160;&#160;&#160;当系统idle的时候，使硬盘降速（spin down）。避免周期性的硬盘访问注册。 Active workload: 1.&#160;&#160;&#160;&#160;&#160;提高计算的有效性和CPU的使用效率，目的是让系统进入到更长时间的idle状态； 2.&#160;&#160;&#160;&#160;&#160;减少处理器的C-state切换的次数，频繁的C-state切换会导致能量的损耗； 3.&#160;&#160;&#160;&#160;&#160;对于多核架构，最大化多核程序执行的并发性，这样可以是package 层次的资源和platform层次的资源得到更有效的管理； 4.&#160;&#160;&#160;&#160;&#160;减少程序的执行频率，对于有特定cpu使用率的任务来说，让它运行更长的时间，更低的频率，更节能。 5.&#160;&#160;&#160;&#160;&#160;程序中如果提高了timer分辨率对功耗有很大的影响，尽量使用大的timer的时间间隔，如果必须使用小的timer间隔，当任务完成之后，将其重置为大的值。 &#160; 实际功耗分析中，package state, core state, c-state等都将是重要的考虑参数。从上面这些点中可以看到，所谓功耗优化，本质上无非是从平台的角度考虑性能优化。功耗的问题，不仅仅是CPU性能问题，而降低CPU的利用率则是第一步，这可以使用英特尔的Vtune工具。 （下载地址：http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/） 对于平台的功耗优化来说，还要考虑如何提高程序的并发性，如何减少外设（硬盘等）的电源的损耗，而这都是与软件的运行特性相关的。我们将在未来的博客中进一步分析如何才能写更节能的程序。]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" align="center" style="text-align:left"><span style="text-indent:21pt;font-family:宋体">&nbsp;&nbsp;&nbsp;&nbsp;看到这个题目的时候，读者可能会诧异：代码也有节能与不节能之分？我们说，是的，本质上，程序所调度的是硬件资源，不合理的硬件调度，会使得设备调度效率不高，从而产生更高的能耗。</span><span style="text-indent:21pt"> </span><span style="text-indent:21pt;font-family:宋体">实际上，随着移动终端的流行，功耗比已然成为比较处理器的重要参数。在已经上市，可能大放光彩的超级本上（</span><span lang="EN-US" style="text-indent:21pt">Ultrabook</span><span style="text-indent:21pt;font-family:宋体">），功耗更成为重要的考虑因素。实际上英特尔已经大量考虑了硬件层面的功耗优化，微软将在</span><span lang="EN-US" style="text-indent:21pt">Windows8</span><span style="text-indent:21pt;font-family:宋体">中增强功耗优化，第三方软件也将不可避免的影响到功耗，而实际上</span><span lang="EN-US" style="text-indent:21pt">ill behaving</span><span style="text-indent:21pt;font-family:宋体">的软件或服务甚至可能会使得所有硬件层和系统层所作的功耗优化功亏一篑。</span></p>
<p class="MsoNormal" style="text-indent:21.0pt"><span style="font-family:宋体">当前来讲，对于同质化的软件，其差异性在于性能，功能，用户体验等，在不久的将来，功耗可能成为重要特性之一。想象一下，在超级本普及之后，一个软件能支撑十个小时，而另外一个只能七个小时，那么用户尤其是没有外接电源的情况下必然更倾向于前者。</span><span lang="EN-US"></span></p>
<p class="MsoNormal" style="text-indent:21.0pt"><span style="font-family:宋体">闲话短续，那么什么样的软件是节能的软件呢？通常可以从下面两个工作状态来看：</span><span lang="EN-US"></span></p>
<p class="MsoNormal" style="text-indent:21.0pt"><span lang="EN-US">Idle workloads:</span></p>
<p class="MsoListParagraph" style="margin-left:39.0pt;text-indent:-18.0pt"><!--[if !supportLists]--><span lang="EN-US">1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><!--[endif]--><span style="font-family:宋体">处理器和平台能够长时间处于</span><span lang="EN-US">idle</span><span style="font-family:宋体">状态，避免软件的高频执行，比如统计等；</span><span lang="EN-US"></span></p>
<p class="MsoListParagraph" style="margin-left:39.0pt;text-indent:-18.0pt"><!--[if !supportLists]--><span lang="EN-US">2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><!--[endif]--><span style="font-family:宋体">应当尽可能的将任务联合，协调和分批处理；避免频繁的执行程序，最小化后台服务；</span><span lang="EN-US"></span></p>
<p class="MsoListParagraph" style="margin-left:39.0pt;text-indent:-18.0pt"><!--[if !supportLists]--><span lang="EN-US">3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><!--[endif]--><span style="font-family:宋体">软件不能够影响平台硬件组件进入到深一层的</span><span lang="EN-US">power state</span><span style="font-family:宋体">（往往是因为太多的中断所造成）。</span><span lang="EN-US"></span></p>
<p class="MsoListParagraph" style="margin-left:39.0pt;text-indent:-18.0pt"><!--[if !supportLists]--><span lang="EN-US">4.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><!--[endif]--><span style="font-family:宋体">当系统</span><span lang="EN-US">idle</span><span style="font-family:宋体">的时候，使硬盘降速（</span><span lang="EN-US">spin down</span><span style="font-family:宋体">）。避免周期性的硬盘访问注册。</span><span lang="EN-US"></span></p>
<p class="MsoNormal" style="text-indent:21.0pt"><span lang="EN-US">Active workload:</span></p>
<p class="MsoListParagraph" style="margin-left:39.0pt;text-indent:-18.0pt"><!--[if !supportLists]--><span lang="EN-US">1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><!--[endif]--><span style="font-family:宋体">提高计算的有效性和</span><span lang="EN-US">CPU</span><span style="font-family:宋体">的使用效率，目的是让系统进入到更长时间的</span><span lang="EN-US">idle</span><span style="font-family:宋体">状态；</span><span lang="EN-US"></span></p>
<p class="MsoListParagraph" style="margin-left:39.0pt;text-indent:-18.0pt"><!--[if !supportLists]--><span lang="EN-US">2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><!--[endif]--><span style="font-family:宋体">减少处理器的</span><span lang="EN-US">C-state</span><span style="font-family:宋体">切换的次数，频繁的</span><span lang="EN-US">C-state</span><span style="font-family:宋体">切换会导致能量的损耗；</span><span lang="EN-US"></span></p>
<p class="MsoListParagraph" style="margin-left:39.0pt;text-indent:-18.0pt"><!--[if !supportLists]--><span lang="EN-US">3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><!--[endif]--><span style="font-family:宋体">对于多核架构，最大化多核程序执行的并发性，这样可以是</span><span lang="EN-US">package </span><span style="font-family:宋体">层次的资源和</span><span lang="EN-US">platform</span><span style="font-family:宋体">层次的资源得到更有效的管理；</span><span lang="EN-US"></span></p>
<p class="MsoListParagraph" style="margin-left:39.0pt;text-indent:-18.0pt"><!--[if !supportLists]--><span lang="EN-US">4.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><!--[endif]--><span style="font-family:宋体">减少程序的执行频率，对于有特定</span><span lang="EN-US">cpu</span><span style="font-family:宋体">使用率的任务来说，让它运行更长的时间，更低的频率，更节能。</span><span lang="EN-US"></span></p>
<p class="MsoListParagraph" style="margin-left:39.0pt;text-indent:-18.0pt"><!--[if !supportLists]--><span lang="EN-US">5.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><!--[endif]--><span style="font-family:宋体">程序中如果提高了</span><span lang="EN-US">timer</span><span style="font-family:宋体">分辨率对功耗有很大的影响，尽量使用大的</span><span lang="EN-US">timer</span><span style="font-family:宋体">的时间间隔，如果必须使用小的</span><span lang="EN-US">timer</span><span style="font-family:宋体">间隔，当任务完成之后，将其重置为大的值。</span><span lang="EN-US"> </span></p>
<p class="MsoListParagraph" style="margin-left:39.0pt;text-indent:0cm"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span style="font-family:宋体">实际功耗分析中，</span><span lang="EN-US">package state, core state, c-state</span><span style="font-family:宋体">等都将是重要的考虑参数。从上面这些点中可以看到，所谓功耗优化，本质上无非是从平台的角度考虑性能优化。功耗的问题，不仅仅是</span><span lang="EN-US">CPU</span><span style="font-family:宋体">性能问题，而降低</span><span lang="EN-US">CPU</span><span style="font-family:宋体">的利用率则是第一步，这可以使用英特尔的</span><span lang="EN-US">Vtune</span><span style="font-family:宋体">工具。</span><span lang="EN-US"></span></p>
<p class="MsoNormal"><span style="font-family:宋体">（下载地址：</span><span lang="EN-US"><a href="http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/">http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/</a></span><span style="font-family:宋体">）</span><span lang="EN-US"></span></p>
<p class="MsoNormal"><span style="font-family:宋体">对于平台的功耗优化来说，还要考虑如何提高程序的并发性，如何减少外设（硬盘等）的电源的损耗，而这都是与软件的运行特性相关的。我们将在未来的博客中进一步分析如何才能写更节能的程序。</span> <span lang="EN-US"></span></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/12/26/400009546/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>视觉计算-相关英特尔lab一览</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/12/26/lab/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/12/26/lab/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 03:59:17 +0000</pubDate>
		<dc:creator>Zhibin Niu (Intel)</dc:creator>
				<category><![CDATA[其他]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/12/26/lab/</guid>
		<description><![CDATA[在第二代和第三代酷睿核中，Intel进一步增强了视觉计算能力: Intel Quick Sync Video 让消费者以更快的速度实现转换视频编码格式,&#160;使得以往数小时才能完成的视频作业可以在数分钟之内完成； Intel® Clear Video HD Technology 让消费者随时能够体验栩栩如生的视觉盛宴，支持HD视频，呈献给消费者最生动最逼真的画面； Intel WirelessDisplay使你的笔记本桌面无线扩展到大屏电视； 等等。 实际上Intel实验室一直在进行着广泛而深入的图形图像方面研究，那么，让我们通过一些Demo来一窥这些科学家研究的魅力吧。 实际上Intel Lab是分布在全世界各地的： &#160; &#160; &#160; Intel lab的分布http://techresearch.intel.com/worldwidesites.aspx 其中与视觉相关的有： Intel Visual Computing Institute (IVCI)：与德国马普所和萨兰大学合作； Intel Science and Technology Center for Visual Computing(ISTC-VC):与斯坦福，加州伯克利，康奈尔，普林斯顿，华盛顿大学，哈佛，加州戴维斯，加州欧文合作;其中. 斯坦福 为虚拟研究所的中心，负责基础研究和新兴领域的协同，可以参看这个网页：http://visual.stanford.edu/ scalable real-time simulation; perceiving people and places; content development; graphics and systems. 实际上前者成立于2009年，成为Intel视觉计算在欧洲的研究中心，后者在美国成立于2011年，进一步扩展了IVCI的研究领域，此外，两个中心实现了研究内容的协调和互补。ISTC-VC的工作可以细分为如下四个领域： 这里有ISTC-VC的科学家名单：http://visual.stanford.edu/people/ 大部分是图形图像相关，而这其中目前以图形学为多，名单中也包括大名鼎鼎的Malik大牛：http://www.cs.berkeley.edu/~malik/ 接下来，我们来看一些demo,来了解一下这些科学家的研究内容吧： [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;text-align:left;background:white">
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white">
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white"><span style="line-height:24px">在第二代和第三代酷睿核中，Intel进一步增强了视觉计算能力:</span></p>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white">
<ul>
<li><span style="background-color:white;line-height:24px">Intel Quick Sync Video 让消费者以更快的速度实现转换视频编码格式,&nbsp;</span><span style="background-color:white;line-height:24px">使得以往数小时才能完成的视频作业可以在数分钟之内完成；</span></li>
<li><span style="line-height:24px;background-color:white">Intel® Clear Video HD Technology 让消费者随时能够体验栩栩如生的视觉盛宴，支持HD视频，呈献给消费者最生动最逼真的画面；</span></li>
<li><span style="line-height:24px;background-color:white">Intel WirelessDisplay使你的笔记本桌面无线扩展到大屏电视；</span></li>
</ul>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white">
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white"><span style="line-height:24px">等等。</span></p>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white"><span style="line-height:24px">实际上Intel实验室一直在进行着广泛而深入的图形图像方面研究，那么，让我们通过一些Demo来一窥这些科学家研究的魅力吧。</span></p>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white"><span style="line-height:24px">实际上Intel Lab是分布在全世界各地的：</span></p>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white"><span style="line-height:24px">&nbsp; &nbsp; &nbsp; Intel lab的分布http://techresearch.intel.com/worldwidesites.aspx</span></p>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white"><span style="line-height:24px">其中与视觉相关的有：</span></p>
</p>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white">
<ul>
<li><span style="background-color:white;line-height:24px">Intel Visual Computing Institute (IVCI)</span><span style="background-color:white;line-height:24px">：与德国马普所和萨兰大学合作；</span></li>
<li><span style="background-color:white;line-height:24px">Intel Science and Technology Center for Visual Computing(ISTC-VC):</span><span style="background-color:white;line-height:24px">与斯坦福，加州伯克利，康奈尔，普林斯顿，华盛顿大学，哈佛，加州戴维斯，加州欧文合作;其中. 斯坦福 为虚拟研究所的中心，负责基础研究和新兴领域的协同，可以参看这个网页：http://visual.stanford.edu/</span></li>
<ul>
<li><span style="line-height:24px;background-color:white">scalable real-time simulation;</span></li>
<li><span style="line-height:24px;background-color:white">perceiving people and places;</span></li>
<li><span style="line-height:24px;background-color:white">content development;</span></li>
<li><span style="line-height:24px;background-color:white">graphics and systems.</span></li>
</ul>
</ul>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white"><span style="line-height:24px">实际上前者成立于2009年，成为Intel视觉计算在欧洲的研究中心，后者在美国成立于2011年，进一步扩展了IVCI的研究领域，此外，两个中心实现了研究内容的协调和互补。ISTC-VC的工作可以细分为如下四个领域：</span></p>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white"><span style="line-height:24px">这里有ISTC-VC的科学家名单：http://visual.stanford.edu/people/</span></p>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white"><span style="line-height:24px">大部分是图形图像相关，而这其中目前以图形学为多，名单中也包括大名鼎鼎的Malik大牛：http://www.cs.berkeley.edu/~malik/</span></p>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white"><span style="line-height:24px">接下来，我们来看一些demo,来了解一下这些科学家的研究内容吧：</span></p>
<p class="MsoNormal" align="left" style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white">
<ol>
<li><span style="line-height:24px;background-color:white">Intel西雅图实验室主要研究内容：http://ils.intel-research.net/uploads/downloadable/media/ILS_2010_brochure.pdf</span></li>
<li><span style="line-height:24px;background-color:white">Object Recognition 做到了一些实时的视频中物体识别：http://berkeley.intel-research.net/arahimi/c/projects/objrec/</span></li>
<li><span style="line-height:24px;background-color:white">Tracking 动作跟踪：http://berkeley.intel-research.net/arahimi/c/projects/learning/</span></li>
<li><span style="line-height:24px;background-color:white">3D跟踪：http://berkeley.intel-research.net/arahimi/c/projects/drift/</span></li>
<li><span style="line-height:24px;background-color:white">人脸替换：http://www.eecs.harvard.edu/~dale/</span></li>
<li><span style="line-height:24px;background-color:white">这里有个更全面的demo：http://ils.intel-research.net/projects/rgbd</span></li>
</ol>
<p class="MsoNormal" align="left" style="line-height:24px;margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white">
</p>
<p class="MsoNormal" align="left" style="font-size:medium;line-height:24px;margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left:0cm;background-color:white">
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/12/26/lab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几个优化中常用到的Time辨析</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/12/16/time/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/12/16/time/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 03:57:41 +0000</pubDate>
		<dc:creator>Zhibin Niu (Intel)</dc:creator>
				<category><![CDATA[其他]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/12/16/time/</guid>
		<description><![CDATA[性能优化的过程中会遇到一系列的time，纯粹是从名字来看可能不是很理解其含义，这里对几个重要概念的辨析. CPU Time：对于单线程程序来说，CPU TIME指的是该线程在一个逻辑处理器（单核）上所花费的时间总量；对于多线程程序来说，CPU TIME指的是所有线程的CPU TIME之和；应用程序的CPU时间指的是该程序所有线程的CPU TIME之和。 Wait Time：特定线程等待一定事件发生的时间，这些事件可以是同步等待，I/O等待。 Elapsed time:该程序运行的平台时间，即：应用程序结束的时刻-应用程序起始时刻。 通过下面这个例子能够更好的说明几个概念之间的区别： &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 从这张图中，我们可以看到一共有三个线程，Thread1，Thread2，Thread3，其分别的起始时刻为0,1,2。则统计： Elapsed time: 程序共执行6秒，故Elapsed time为6sec； Cpu time:对于多线程程序，其cpu time为所有线程时间之和，故 cpu time=1+3+2+2=8sec; Wait time：等待时间，故wait time=2+3+2=7sec; 值得注意的是：Elapsed time, Cpu time, Wait time这三者并没有大小关系，比如并不一定elapsed time就一定大于cpu time； 总结一下： 对于单线程程序，cpu time, wait time可能或等于elapsed time。 对于多线程程序，elapsed time有可能比另外二者大，也有可能小，关键在于到底有多少个线程在运行和这些线程的运行状态。]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span style="font-family:宋体">性能优化的过程中会遇到一系列的</span><span lang="EN-US">time</span><span style="font-family:宋体">，纯粹是从名字来看可能不是很理解其含义，这里对几个重要概念的辨析</span><span lang="EN-US">. </span></p>
<p class="MsoNormal">
<ul>
<li><span lang="EN-US">CPU Time</span><span style="font-family:宋体">：对于单线程程序来说，</span><span lang="EN-US">CPU TIME</span><span style="font-family:宋体">指的是该线程在一个逻辑处理器（单核）上所花费的时间总量；对于多线程程序来说，</span><span lang="EN-US">CPU TIME</span><span style="font-family:宋体">指的是所有线程的</span><span lang="EN-US">CPU TIME</span><span style="font-family:宋体">之和；应用程序的</span><span lang="EN-US">CPU</span><span style="font-family:宋体">时间指的是该程序所有线程的</span><span lang="EN-US">CPU TIME</span><span style="font-family:宋体">之和。</span></li>
<li><span lang="EN-US">Wait Time</span><span style="font-family:宋体">：特定线程等待一定事件发生的时间，这些事件可以是同步等待，</span><span lang="EN-US">I/O</span><span style="font-family:宋体">等待。</span></li>
<li><span lang="EN-US" style="text-align:left">Elapsed time:</span><span style="text-align:left;font-family:宋体">该程序运行的平台时间，即：应用程序结束的时刻</span><span lang="EN-US" style="text-align:left">-</span><span style="text-align:left;font-family:宋体">应用程序起始时刻。</span></li>
</ul>
<p class="MsoNormal" align="left" style="text-align:left"><span style="font-family:宋体">通过下面这个例子能够更好的说明几个概念之间的区别：</span></p>
<p class="MsoNormal" align="left" style="text-align:left"><span class="Apple-style-span" style="font-family:宋体">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/12/Capture.jpg" width="487" height="229" alt="" /></span></p>
<p class="MsoNormal" align="left" style="text-align:left"><span style="font-family:宋体">从这张图中，我们可以看到一共有三个线程，</span><span lang="EN-US">Thread1</span><span style="font-family:宋体">，</span><span lang="EN-US">Thread2</span><span style="font-family:宋体">，</span><span lang="EN-US">Thread3</span><span style="font-family:宋体">，其分别的起始时刻为</span><span lang="EN-US">0,1,2</span><span style="font-family:宋体">。则统计：</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left" style="text-align:left">
<ul>
<li><span lang="EN-US">Elapsed time: </span><span style="font-family:宋体">程序共执行</span><span lang="EN-US">6</span><span style="font-family:宋体">秒，故</span><span lang="EN-US">Elapsed time</span><span style="font-family:宋体">为</span><span lang="EN-US">6sec</span><span style="font-family:宋体">；</span></li>
<li><span lang="EN-US">Cpu time:</span><span style="font-family:宋体">对于多线程程序，其</span><span lang="EN-US">cpu time</span><span style="font-family:宋体">为所有线程时间之和，故</span> <span lang="EN-US">cpu time=1+3+2+2=8sec;</span></li>
<li><span lang="EN-US">Wait time</span><span style="font-family:宋体">：等待时间，故</span><span lang="EN-US">wait time=2+3+2=7sec;</span></li>
</ul>
<p class="MsoNormal" align="left" style="text-align:left"><span style="font-family:宋体">值得注意的是：</span><span lang="EN-US">Elapsed<br />
time, Cpu time, Wait time</span><span style="font-family:宋体">这三者并没有大小关系，比如并不一定</span><span lang="EN-US">elapsed time</span><span style="font-family:宋体">就一定大于</span><span lang="EN-US">cpu time</span><span style="font-family:宋体">；</span><span lang="EN-US"></span></p>
<p class="MsoNormal" align="left" style="text-align:left"><span style="font-family:宋体">总结一下：</span></p>
<p class="MsoNormal" align="left" style="text-align:left">
<ul>
<li><span style="text-indent:-24px;font-family:宋体">对于单线程程序，</span><span lang="EN-US" style="text-indent:-24px">cpu time, wait time</span><span style="text-indent:-24px;font-family:宋体">可能或等于</span><span lang="EN-US" style="text-indent:-24px">elapsed time</span><span style="text-indent:-24px;font-family:宋体">。</span></li>
<li><span style="text-indent:-24px;font-family:宋体">对于多线程程序，</span><span lang="EN-US" style="text-indent:-24px">elapsed time</span><span style="text-indent:-24px;font-family:宋体">有可能比另外二者大，也有可能小，关键在于到底有多少个线程在运行和这些线程的运行状态。</span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/12/16/time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>持续集成系统介绍</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/22/400008533/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/22/400008533/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 05:32:12 +0000</pubDate>
		<dc:creator>Zhibin Niu (Intel)</dc:creator>
				<category><![CDATA[开放源代码]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/22/400008533/</guid>
		<description><![CDATA[在这里总结一下常用的CI原理，常用工具及一些操作建议，请参看附件中的视频。 （注：有些图表取自互联网，无法一一对应，向其原作者致歉，欢迎联系我并修改。另外，也欢迎大家针对PPT的内容进行探讨。） CI-system-introduction]]></description>
			<content:encoded><![CDATA[<p>在这里总结一下常用的CI原理，常用工具及一些操作建议，请参看附件中的视频。<br />
（注：有些图表取自互联网，无法一一对应，向其原作者致歉，欢迎联系我并修改。另外，也欢迎大家针对PPT的内容进行探讨。）</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/CI-system-introduction.wmv">CI-system-introduction</a></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/22/400008533/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/CI-system-introduction.wmv" length="6981912" type="video/asf" />
		</item>
		<item>
		<title>从计算机视觉角度看处理器性能优化</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/15/400008563/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/15/400008563/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 02:00:20 +0000</pubDate>
		<dc:creator>Zhibin Niu (Intel)</dc:creator>
				<category><![CDATA[其他]]></category>
		<category><![CDATA[图形和视觉计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[软件技术学习及认证]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/15/400008563/</guid>
		<description><![CDATA[计算机视觉领域主要研究内容包括：图像分割，目标检测，目标跟踪，图像识别。 1. 图像分割在医学图像处理，目标跟踪和图像识别方面有重要应用，经常是图像理解的第一步，在时间的压缩上有着巨大需求。  2. 目标检测和目标跟踪在智能监控，车辆/导弹导航等方面有诸多应用，相关内容对实时性有着严格的界定和需求。  3. 图像识别是计算机视觉方向当前最火的研究内容之一，由于经典的基于统计学习的框架需要处理海量数据，需要大规模的并行计算，离线训练的时间往往让一般企业难以承受。但是图像识别技术有着重要意义（参见下图），近些年涌现出大批相关应用和产品，比如各大搜索引擎公司都积极开发了基于内容的图像检索和识别的产品，而对于一般方案的海量数据训练时间，如果能够有效地利用分布式计算，算法优化，以及更好的提升X86架构CPU和GPU的联合运算都将是非常有价值的工作。   接下来主要从图像识别开始，简述笔者对于计算机视觉领域的优化的任务的总结和思考：  (一) 图像识别一般符合如下框架：              1. 识别正确率与图像数据和所建立的图像类别模型有关，前者即与所提取的image representation的判别性有关，进一步，与所提取的local description和encoding完的描述子的判别性有关；后者与所采用的数学模型有关，至于具体采用什么模型，与前者encoding完的数据在高维空间中的相对位置关系有关（Data Drive）。         2.  图像理解是一个大规模的数据并行计算过程，用到了大量的矩阵运算。可以优化的地方:         1)  local feature descriptor的获取，这方面效果最好的是SIFT描述子，是十年来效果最好的，但是效率低，提取一副720*576的图像的特征，可能需要几秒钟，当然提取的时间与图像梯度的复杂度正相关。09年，CVPR best demo 在这方面做了很漂亮的工作，他们将提取一个点的时间减少到2.5毫秒。参看demo（http://mi.eng.cam.ac.uk/~sjt59/hips.html）同时，该实验室也制作了iPhone 应用oMoby，识别效果我认为比Google goggles 效果还要好。提升特征描述的时间，是图像理解的第一步，对于将图像信息转化为计算机可识别信息至关重要。         2) Local descriptorre-encoding 由于局部特征描述繁杂无序，难以通过训练得到有意义的模型。通过将其量化（建立码书模型）得到统一的，可分的多维空间中的点，以便于通过训练可以将这些模型区分开。         3) 对于数学模型计算的优化。基本上所有的判别式模型都可以归结为是凸优化问题如支持向量机SVM，面临大量的数值计算。模型计算过程一般是离线过程。         这里有一个很好的讲座：http://www.youtube.com/watch?v=g1tLjptuTBo（Kaiyu是NEC美国研究院的研究员，在09年的VOC中拿了classification组第一名。）         重申一下，这里所介绍的最经典的基于统计学习的识别框架，近些年有一些科学家试图跳出这个套路，提出了deep learning等算法，可以参看文末给出的demo。            3.   图像理解相关领域进行优化的价值：         1) 图像识别技术在03年以后有了突飞猛进的进展。Google 有相关产品，goggles，similar [...]]]></description>
			<content:encoded><![CDATA[<p><strong><span style="font-size: 14px;">计算机视觉领域主要研究内容包括：图像分割，目标检测，目标跟踪，图像识别。</span></strong></p>
<p><strong><span style="font-size: 14px;">1. 图像分割</span></strong><span style="font-size: 14px;">在医学图像处理，目标跟踪和图像识别方面有重要应用，经常是图像理解的第一步，在时间的压缩上有着巨大需求。 </span></p>
<p><strong><span style="font-size: 14px;">2. 目标检测和目标跟踪</span></strong><span style="font-size: 14px;">在智能监控，车辆/导弹导航等方面有诸多应用，相关内容对实时性有着严格的界定和需求。 </span></p>
<p><strong><span style="font-size: 14px;">3. 图像识别</span></strong><span><span style="font-size: 14px;">是计算机视觉方向当前最火的研究内容之一，由于经典的基于统计学习的框架需要处理海量数据，需要大规模的并行计算，离线训练的时间往往让一般企业难以承</span><span style="font-size: 14px;"><span>受。但是图像识别</span></span></span><span><span style="font-size: 14px;"><span><span>技术有着重要意义（参见下图），近些年涌现出大批相关应用和产品，比如各大搜索引擎公司都积极开发了基于内容的图像检索和识别的产品，而对于一般方案的海量数据训练时间，如果能够有效地利用分布式计算，算法优化，以及更好的提升X86架构CPU和GPU的联合运算都将是非常有价值的工作。</span></span></span></span></p>
<p style="text-align: center;"><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/cv-application.png"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/cv-application.png" alt="" width="730" height="454" /></a> </p>
<div style="text-align: left;"><span style="font-size: 14px; line-height: 1.5;">接下来主要从图像识别开始，简述笔者对于计算机视觉领域的优化的任务的总结和思考： </span></div>
<h2><span style="font-size: 14px;"><span style="line-height: 1.5;">(一) 图像识别一般符合如下框架</span><span style="line-height: 1.5;">：</span></span><span style="line-height: 1.5;"> </span></h2>
<p> </p>
<p style="text-align: center;"><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/Drawing1.jpg"><img class="aligncenter size-full wp-image-400008565" src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/Drawing1.jpg" alt="" width="550" height="195" /></a></p>
<p> </p>
<p>     <span style="line-height: 1.5;">  </span><span style="font-size: 14px; line-height: 1.5;"> </span><span style="font-size: 14px; line-height: 1.5;"><strong>1. </strong></span><span style="font-size: 14px; line-height: 1.5;"><strong>识别正确率与图像数据和所建立的图像类别模型有关</strong>，前者即与所提取的image representation的判别性有关，进一步，</span><strong><span style="font-size: 14px; line-height: 1.5;">与所提取的local description和encoding完的描述子的判别性有关</span></strong><span style="font-size: 14px; line-height: 1.5;">；后者与所采用的数学模型有关，至于具体采用什么模型，与前者encoding完的数据在高维空间中的相对位置关系有关（Data Drive）。</span></p>
<p><span style="font-size: 14px; line-height: 1.5;">        </span><span style="font-size: 14px; line-height: 1.5;"><strong>2. </strong> </span><span style="font-size: 14px; line-height: 1.5;"><strong>图像理解是一个大</strong><strong>规模的数据并行计算过程</strong>，用到了大量的矩阵运算。可以优化的地方:</span></p>
<p><span class="Apple-style-span" style="font-size: 14px; line-height: 1.5;">        1)  </span><strong><span style="font-size: 14px; line-height: 1.5;">local feature descriptor的获取</span></strong><span style="font-size: 14px; line-height: 1.5;">，这方面效果最好的是SIFT描述子，是十年来效果最好的，但是效率低，提取一副720*576的图像的特征，可能需要几秒钟，当然提取的时间与图像梯度的复杂度正相关。09年，CVPR best demo 在这方面做了很漂亮的工作，他们将提取一个点的时间减少到2.5毫秒。参看demo（http://mi.eng.cam.ac.uk/~sjt59/hips.html）同时，该实验室也制作了iPhone 应用oMoby，识别效果我认为比Google goggles 效果还要好。提升特征描述的时间，是图像理解的第一步，对于将图像信息转化为计</span><span style="font-size: 14px; line-height: 1.5;">算机可识别信息至关重要。</span><br />
<span class="Apple-style-span" style="font-size: 14px; line-height: 1.5;">        2) </span><strong><span style="font-size: 14px; line-height: 1.5;">Local descriptorre-encoding</span></strong><span style="font-size: 14px; line-height: 1.5;"> 由于局部特征描述繁杂无序，难以通过训练得到有意义的模型。通过将其量化（建立码书模型）得到统一的，可分的多维空间中的点，以便于通过训练可以将这些模型区分开。</span></p>
<p><span class="Apple-style-span" style="font-size: 14px; line-height: 1.5;">        3) 对于</span><strong><span style="font-size: 14px; line-height: 1.5;">数学模型计算的优化</span></strong><span style="font-size: 14px; line-height: 1.5;">。基本上所有的判别式模型都可以归结为是</span><strong><span style="font-size: 14px; line-height: 1.5;">凸优化问题如支持向量机SVM</span></strong><span style="font-size: 14px; line-height: 1.5;">，面临大量的数值计算。模型计算过程一般是离线过程。</span></p>
<p><span class="Apple-style-span" style="font-size: 14px; line-height: 1.5;">        这里有一个很好的讲座：</span><a href="http://www.youtube.com/watch?v=g1tLjptuTBo"><span style="font-size: 14px; line-height: 1.5;">http://www.youtube.com/watch?v=g1tLjptuTBo</span></a><span style="font-size: 14px; line-height: 1.5;">（Kaiyu是NEC美国研究院的研究员，在09年的VOC中拿了classification组第一名。）</span></p>
<p><span style="font-size: 14px; line-height: 1.5;">        重申一下，这里所介绍的最经典的基于统计学习的识别框架，近些年有一些科学家试图跳出这个套路，提出了deep learning等算法，可以参看文末给出的demo。   <br />
</span></p>
<p><span style="font-size: 14px; line-height: 1.5;">      <strong>  </strong><strong>3.</strong><strong> </strong><strong> </strong><strong> 图像理解相关领域进行优化的价值：</strong></span></p>
<p><span class="Apple-style-span" style="font-size: 14px; line-height: 1.5;">        1) 图像识别技术在03年以后有了突飞猛进的进展。Google 有相关产品，goggles，similar image search（两者均是基于图像内容的检索和识别），微软亚洲研究院中，图像识别是其非常重要的研究领域（如sun,jian所作的工作）, 其他的有：百度淘宝都有以图识图的产品。</span><br />
<span class="Apple-style-span" style="font-size: 14px; line-height: 1.5;">        2) 这些图像产品都面临着计算效率的问题，即：图像特征提取慢，数学模型离线训练慢。这方面的优化具有非常有价值的意义。</span><br />
<span class="Apple-style-span" style="font-size: 14px; line-height: 1.5;">        3) 优化过程是否可以考虑：强化OpenCV和IPP（这两者我估计在实际产品中用到的很多），CPU+GPU的联合优化（由于是大规模的矩阵运算，有效地利用GPU是可行之路，即：OpenCL），针对特定算法有效利用IA架构CPU优势，分布式计算等。</span></p>
<p><span style="font-size: 14px; line-height: 1.5;">        4) 扩展：随着图像识别技术的发展，基于相关技术的视频序列识别近些年也得到了更多的应用和发展，比如行为识别等。由此而引发的，传统监控系统向智能监控系统的转变这两年也逐渐兴起，具体内容请看下面。</span> </p>
<h2><span style="font-size: 14px; line-height: 1.5;">(二)  智能监控中的优化</span></h2>
<p><span style="font-size: 14px; line-height: 1.5;">       所谓智能，是指让计算机具备一部分自主的分析功能。比如监控视频中的目标锁定（detection 可以是基于特征的检测，比如人脸检测，可以使基于行为的检测，比如犯罪分子有某种行为习惯），目标跟踪（tracking），目标识别（recognition首先将目标分割出来，然后利用前面所述的图像识别方法进行识别）。</span></p>
<p><span style="font-size: 14px; line-height: 1.5;">        对于智能监控来说，</span><strong><span style="font-size: 14px; line-height: 1.5;">实时性</span></strong><span style="font-size: 14px; line-height: 1.5;">极为重要。但是detection, tracking, segmentation都是非常耗时的过程(比如采用单纯粒子滤波进行单目标跟踪，对于DVD图像，未优化的程序处理速度不超过15fps，使用效果更好的改进算法，速度可能降至5fps)，计算效率极大的阻碍了前沿技术在工程实际中的应用。</span></p>
<p><span style="font-size: 14px; line-height: 1.5;">        目前智能监控在国内和世界范围内都是非常火的领域。国内海康威视，银江科技等都是监控领域炙手可热的公司，尤其是前者，他在这个领域世界排名大约第六，产品遍及国内各大城市街道，高速公路，大型工业企业。但是目前的主流监控市场是不断的提升监控的分辨率，智能算法很少被引入到实际产品中，很大一部分原因是因为算法的复杂性。尽管一些海归和博士建立了一些拥有自己算法的智能监控系统公司，比如莲花山研究院所办的公司在这方面所作的尝试。</span></p>
<p><span style="font-size: 14px; line-height: 1.5;">        智能监控是一个非常有价值的领域，成长快，利润高。</span><strong><span style="font-size: 14px; line-height: 1.5;">英特尔的优势在于OpenCV中已经开发了大量前沿视觉算法，这些在Intel的CPU上都可以进行优化。</span></strong></p>
<p><strong></strong></p>
<h2><strong><span lang="EN-US"><span><span style="font-size: 14px; line-height: 1.5;">(三)</span></span></span><span style="font-size: 14px; line-height: 1.5;">  </span>&lt;!--[endif]--&gt;<span style="font-family: 宋体; font-size: 14px; line-height: 1.5;">移动终端上的性能优化</span> </strong></h2>
<p><span style="font-size: 14px; line-height: 1.5;">        在移动终端上，图像和语音可能成为和打字同等重要的信息输入方法。比较火的领域有：图像识别，语音识别（如科大讯飞），增强现实（无数的APP），图像拼接（如微软的重量产品Kinect和photosynth(在bing上结合地图有重要应用)）等领域，这些都是与计算能力十分相关的内容，而其本质上也是大规模的矩阵运算，如果能有效地利用OpenCV, Ipp, Intel数学运算库和利用好CPU-GPU的联合运算，都会对性能和功耗有比较大的提升。</span><span class="Apple-style-span" style="line-height: 15px;"><strong><span style="font-size: 14px;"> </span></strong></span></p>
<p class="MsoNormal" style="margin-left: 21.0pt; text-indent: -21.0pt; line-height: 125%;">&lt;!--[if !supportLists]--&gt;<strong><span lang="EN-US"><span><span style="font-size: 14px; line-height: 1.5;">(四)</span><span style="font-size: 14px; line-height: 1.5;">  </span></span></span>&lt;!--[endif]--&gt;<span style="font-family: 宋体; font-size: 14px; line-height: 1.5;">其他</span> </strong></p>
<p class="MsoNormal" style="text-indent: 21.0pt;"><span style="font-family: 宋体; font-size: 14px; line-height: 1.5;">视觉识别一般分为图像层次和视频序列的识别；前者在一些大的搜索引擎公司都有所涉及，后者主要集中于国外高校实验室和一些本领域的领军人物的创业型公司（比如莲花山研究院所作的将视觉理论所做的产业化工作，Zhu,chunsong是UCLA的professor，在弯曲评论上有个简单的对他的介绍或者可以到他的Lab网页查看）。国内本土的监控公司，很多也采取了和国内各大高校合作的方式。而实际上，某些基于视频的识别在实验室已经做到相当好的效果，面临的主要问题是：光照，角度形变，尺度，实时性等问题（其实人脸识别尽管已经发展到了相当成熟，仍然面临这个问题，比如无法区分照片中的人脸，光照变化大的时候正确率有较大的下降，甚至已经有人专门研究过什么情况下人脸识别会失效：<a href="http://ahprojects.com/art/cv-dazzle" class="broken_link">http://ahprojects.com/art/cv-dazzle</a>）</span></p>
<p class="MsoNormal" style="text-indent: 21.0pt;"><span lang="EN-US"><a href="http://ahprojects.com/art/cv-dazzle" class="broken_link"></a></span></p>
<p class="MsoNormal"><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">下面是几个关于有意思的demo:<br />
        表情识别: http://www.youtube.com/watch?v=n8wJ8tjmnmU&amp;feature=feedf<br />
                        http://www.youtube.com/watch?v=QP3ihC78YO4<br />
        匹配：      http://www.youtube.com/watch?v=k9vHdeCMRm0<br />
        跟踪：      http://www.youtube.com/watch?v=LQt6gnLOxBw<br />
                         http://ivs.see-soft.net/（包括火焰识别，目标跟踪等）<span class="Apple-tab-span"> </span><br />
        内容识别：http://www.cs.nyu.edu/~yann/research/objreco/index.html <br />
</span></p>
<p><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">    （对于基于内容的视觉认知来说，图像识别应用的更多一些，基于视频的识别做的比较好的demo是deep learning的，而实际上前不久微软在语音识别方面的进展也主要是基于deep learning：</span><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">http://research.microsoft.com/en-us/news/features/speechrecognition-082911.aspx）</span></p>
<p><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">       此外，还有两个比较神奇的Demo:</span></p>
<p><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">      yi,ma老师的稀疏人脸识别： <a href="http://perception.csl.uiuc.edu/recognition/Robust_face.html">http://perception.csl.uiuc.edu/recognition/Robust_face.html</a></span><span style="font-size: 14px; line-height: 21px;">   </span></p>
<p><span style="font-size: 14px; line-height: 21px;">      Michal Irani 的超分辨：<a href="http://www.wisdom.weizmann.ac.il/~vision/SingleImageSR.html">http://www.wisdom.weizmann.ac.il/~vision/SingleImageSR.html</a> <br />
</span></p>
<p><span class="Apple-style-span" style="font-size: 14px; line-height: 21px;">        </span></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/15/400008563/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从log文件看meego播放器性能</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/15/logmeego/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/15/logmeego/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 01:56:22 +0000</pubDate>
		<dc:creator>Zhibin Niu (Intel)</dc:creator>
				<category><![CDATA[全国大学生软件创新大赛专栏]]></category>
		<category><![CDATA[图形和视觉计算]]></category>
		<category><![CDATA[开放源代码]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[软件技术学习及认证]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/15/logmeego/</guid>
		<description><![CDATA[视频播放器的性能随播放视频码率的不同而不同，有一些工具能够实现这些功能，比如VideoPerf，这里介绍一种通过看log记录的大致性能估计方法。 下载：Meego Video Player播放性能测试方法 1. 下载gstreamer最新的包gstreamer-0.10.32-6.9.i586.rpm ： http://repo.meego.com/MeeGo/builds/1.2.0.90/1.2.0.90.8.20110712.5/repos/oss/ia32/packages/i586/ gstreamer 5.1中gst debug log被disable掉了，需要安装6.9才行 2. 查询系统已经安装的gstreamer包，并卸载： rpm -qa &#124;grep gstreamer rpm -e --nodeps gstreamerxxxx. 3. 安装最新gstreamer包： rpm –ivh gstreamer-0.10.32-6.9.i586.rpm 4. 设置输出参数 export GST_DEBUG=3 5. 在终端里启动videoplayer: meego-qml-launcher --fullscreen --opengl --app meego-tk-videoplayer --cmd -normal-log &#62;tmp.log 2&#62;&#38;1 生成的Log可以用vim打开，并拷贝到PC上处理，工具可以使用Notepad++或ultraEdit。 注意：安装软件包可以在在ctrl+alt+f1下用root权限删除/安装 rpm包，但是启动videoplayer需要使用app的那个终端在meego用户权限下操作。 6. 计算播放性能，在log中： Debug: [ 111 :][ "18:15:08.594" ] "onPositionChanged : [...]]]></description>
			<content:encoded><![CDATA[<p>视频播放器的性能随播放视频码率的不同而不同，有一些工具能够实现这些功能，比如VideoPerf，这里介绍一种通过看log记录的大致性能估计方法。<br />
下载：<a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/Meego-Video-Player播放性能测试方法.pdf" class="broken_link">Meego Video Player播放性能测试方法</a></p>
<p>1. 下载gstreamer最新的包gstreamer-0.10.32-6.9.i586.rpm ：</p>
<p>http://repo.meego.com/MeeGo/builds/1.2.0.90/1.2.0.90.8.20110712.5/repos/oss/ia32/packages/i586/</p>
<p>gstreamer 5.1中gst debug log被disable掉了，需要安装6.9才行<br />
2. 查询系统已经安装的gstreamer包，并卸载：<br />
rpm -qa |grep gstreamer<br />
rpm -e --nodeps gstreamerxxxx.<br />
3. 安装最新gstreamer包：<br />
rpm –ivh gstreamer-0.10.32-6.9.i586.rpm<br />
4. 设置输出参数<br />
export GST_DEBUG=3<br />
5. 在终端里启动videoplayer:<br />
meego-qml-launcher --fullscreen --opengl --app meego-tk-videoplayer --cmd -normal-log &gt;tmp.log 2&gt;&amp;1<br />
生成的Log可以用vim打开，并拷贝到PC上处理，工具可以使用Notepad++或ultraEdit。<br />
注意：安装软件包可以在在ctrl+alt+f1下用root权限删除/安装 rpm包，但是启动videoplayer需要使用app的那个终端在meego用户权限下操作。<br />
6. 计算播放性能，在log中：<br />
Debug: [ 111 :][ "18:15:08.594" ] "onPositionChanged : 29917"<br />
Debug: [ 112 :][ "18:15:09.594" ] "onPositionChanged : 30912"<br />
GST_EVENT gstevent.c:847:gst_event_new_qos:[00m creating qos proportion 1.623329, diff 1147552000, timestamp 0:00:17.083306000<br />
其中：<br />
Timestampe：某一帧图像在时间序列中的位置；<br />
onPositionChanged：时间轴，每一秒钟移动一次；<br />
综上所述：<br />
计算平均帧率 = (all frames)/all time<br />
视频流畅度 = Var(abs(F_Video-F_Pad))<br />
平均丢帧率= (∑(F_Video-F_pad))/(all frames)<br />
其中：F_Video视频实际帧率，用Mediainfo获得，F_pad为实际帧率，通过Log计算得到;<br />
丢帧率和实际帧率可以通过曲线和数字量化和可视化，工具可以使用Excel或SciLab等。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/15/logmeego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meego开发中一些小技巧</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/15/meego-38/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/15/meego-38/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 01:52:52 +0000</pubDate>
		<dc:creator>Zhibin Niu (Intel)</dc:creator>
				<category><![CDATA[全国大学生软件创新大赛专栏]]></category>
		<category><![CDATA[其他]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[软件技术学习及认证]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/15/meego-38/</guid>
		<description><![CDATA[1. 使用Chroot方式开发Meego软件时，host和client共享同一个/tmp文件夹，因此可以将主机中的文件通过放置在临时文件夹迅速转入到 Meego系统中。 2. 安装rpm包时使用rpm -ivh 命令，若使用源代码编译安装，则在GIT上拉取源代码，在Chroot环境中，直接qmake,make,make install. 3. 目前某些版本meego中对U盘支持不好，需要手工mount， 使用命令：su 输入密码：meego，获取root权限； 使用fdisk -l 查看此时挂在的硬盘，在我这里，u盘盘符为/dev/sdb，记下； 命令：mkdir /mnt/usb 创建目标文件夹； 命令：mount -t msdos /dev/sdb /mnt/usb 挂载u盘镜像； 然后可以使用cd,cp -r等将文件拷贝到目标文件夹，如/home/meego/Video等既可以实现文件的播放。 4. 在终端里启动程序：比如videoplayer: meego-qml-launcher --fullscreen --opengl --app meego-tk-videoplayer --cmd]]></description>
			<content:encoded><![CDATA[<p>1. 使用Chroot方式开发Meego软件时，host和client共享同一个/tmp文件夹，因此可以将主机中的文件通过放置在临时文件夹迅速转入到 Meego系统中。<br />
2. 安装rpm包时使用rpm -ivh 命令，若使用源代码编译安装，则在GIT上拉取源代码，在Chroot环境中，直接qmake,make,make install.<br />
3. 目前某些版本meego中对U盘支持不好，需要手工mount，<br />
使用命令：su 输入密码：meego，获取root权限；<br />
使用fdisk -l 查看此时挂在的硬盘，在我这里，u盘盘符为/dev/sdb，记下；<br />
命令：mkdir /mnt/usb 创建目标文件夹；<br />
命令：mount -t msdos /dev/sdb /mnt/usb 挂载u盘镜像；<br />
然后可以使用cd,cp -r等将文件拷贝到目标文件夹，如/home/meego/Video等既可以实现文件的播放。<br />
4. 在终端里启动程序：比如videoplayer:<br />
meego-qml-launcher --fullscreen --opengl --app meego-tk-videoplayer --cmd</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/15/meego-38/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meego开发常用测试工具及流程</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/15/meego-30/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/15/meego-30/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 01:51:37 +0000</pubDate>
		<dc:creator>Zhibin Niu (Intel)</dc:creator>
				<category><![CDATA[全国大学生软件创新大赛专栏]]></category>
		<category><![CDATA[开放源代码]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[软件技术学习及认证]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/15/meego-30/</guid>
		<description><![CDATA[1. 开源产品经验 从UBUNTU的开发测试中可窥典型开源产品测试之一斑: 1) ISO testing 2) SRU testing 3) Bug triage 4) Feature testing 5) Daily smoke testing 6) General testing：Ubuntu is more than its default installation and basic tasks - it's an entire repository of software and possible configurations. We need to test as much of it as possible, and some things aren't [...]]]></description>
			<content:encoded><![CDATA[<p>1. 开源产品经验<br />
从UBUNTU的开发测试中可窥典型开源产品测试之一斑:<br />
1) ISO testing<br />
2) SRU testing<br />
3) Bug triage<br />
4) Feature testing<br />
5) Daily smoke testing<br />
6) General testing：Ubuntu is more than its default installation and basic tasks - it's an entire repository of software and possible configurations. We need to test as much of it as possible, and some things aren't well covered by established test cases and procedures. General testing is as simple as attempting to use the development release and reporting whatever problems you run into.<br />
7) Application testing：Application testing is the manual testing of specific things (test cases) in applications. Regression tests are specific tests for potential breakages from one release to another (they're also relevant for SRU testing, above).<br />
 <img src='http://software.intel.com/zh-cn/blogs/wordpress/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Automated testing：Automated testing is the conversion of large numbers of test cases into simple scripts. They can often be run in bulk with a single command.<br />
9) Laptop testing</p>
<p>2. Meego软件开发测试<br />
2.1. 从meego 开发流程看测试流程<br />
Meego开发流程：<br />
<img class="alignleft" src="http://software.intel.com/file/38412" alt="" width="740" height="380" /></p>
<p>测试主要发生在Develop Debug阶段，包括单元测试和系统测试。一般经验是在开发过程中伴随单元测试，系统集成完之后进行系统测试，从持续集成观点看，鼓励快速集成，日/夜构建及测试。具体测试流程需要和腾讯及OTC商议确定。<br />
2.2. 单元测试阶段<br />
单元测试在软件开发阶段，由开发人员编写test case并执行测试。Meego官方推荐了22+种测试工具，简要介绍如下几个：<br />
• Valgrind, Coverity, gprof, gcov<br />
• Tdriver – Test automation driver for UI or functionality testing<br />
• Test Runner – An automated test execution tool, takes XML test plan as input<br />
• QTestlib<br />
• QML性能检测工具<br />
具体细节参见文档《Meego单元测试工具汇总》<br />
测试出来的Bug使用bugzilla或Trac管理.<br />
2.3. 系统测试阶段：<br />
分为手动/半自动和自动化测试，Meego官方分别给出了这两种测试流程：<br />
2.3.1. 手动/半自动化测试流程<br />
<img class="alignleft" src="http://software.intel.com/file/38414" alt="" width="740" height="300" /><br />
主要流程包括：</p>
<p>1) 测试规划；<br />
2) 执行测试：可以使用一些命令行工具，如：Testrunner 和 testrunner-lite 。<br />
3) 生成测试报告；<br />
2.3.2. 自动化测试流程<br />
<img class="alignnone" src="http://software.intel.com/file/38415" alt="" width="740" height="158" /><br />
主要流程包括：<br />
1) BOSS creates test automation enabled images from OBS projects (This part is not working yet. Currently OTS uses self made images.)<br />
2) OTS downloads the image and installs it to a device under test<br />
3) OTS executes tests found in the image<br />
4) OTS sends results to qa-reports.meego.com</p>
<p>2.3.3. OTS简要介绍：<br />
目标：提升自动化测试效率及设备上软件测试质量(可以在硬件上如N900执行)，其所提供服务和主要功能见下表：<br />
<img class="alignnone" src="http://software.intel.com/file/38416" alt="" width="740" height="130" /></p>
<p>主要功能 Distribution Load balancing Remote command running Hardware control Data Acquisition Data Analysis<br />
所提供的服务 Fully Open Source Web server Extensible Architecture Interoperability</p>
<p>OTS工作流程：<br />
<img class="alignnone" src="http://software.intel.com/file/38417" alt="" width="750" height="550" /></p>
<p>2.3.4. Meego开发主要系统测试内容<br />
1) Functionality quality characteristics<br />
a) Functional (accuracy) testing:<br />
b) Functional (suitability) testing：Testing shall also evaluate the application's or component's tolerance to faults in terms of handling unexpected input values, data, messages or triggers (so-called negative tests).<br />
c) Technical Security Testing:<br />
2) Efficiency quality characteristics<br />
Frame rate，Latency，Response，Benchmark，Throughput，Memory，Load，etc.<br />
3) Reliability quality characteristics<br />
Robustness Testing, Recoverability Testing, Iterative, Long-lasting.<br />
4) Usability quality characteristics<br />
Test type User experience<br />
5) Maintainability quality characteristics<br />
Dynamic maintainability testing, Changeability testing,<br />
6) Portability quality characteristics<br />
Install ability testing, Compatibility testing, Adaptability testing, Replace ability testing</p>
<p>3. 总结<br />
1. 开发阶段，应以开发和单元测试为主，后期可以配合其他app及系统开发执行持续集成，实现日/夜构建及测试。<br />
2. 单元测试有开发人员实现和执行，可以借助于相应工具实现内存，功能，性能等测试。<br />
3. 集成完之后，执行系统测试，如果可以借助于OTS则测试流程更加规范，但复杂度也远高于手工测试。</p>
<p>4. 参考：<br />
[1] Development process for 3rd Party MeeGo Application Developers（PPT）<br />
[2] http://wiki.meego.com/Quality/QA-tools<br />
[3] http://www.youtube.com/user/meegoqatools<br />
[4] http://wiki.meego.com/Quality/Test_management_overview<br />
[5] http://wiki.meego.com/Quality/QA-tools/OTS/ExampleSetup<br />
[6] http://wiki.meego.com/Quality/Test_areas_and_types</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/15/meego-30/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

