<?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; Wise Chen (Intel)</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/wise-chen/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>英特尔软件工具推广活动 – 2012年11月份小结</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/12/05/400009309/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/12/05/400009309/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 10:02:21 +0000</pubDate>
		<dc:creator>Wise Chen (Intel)</dc:creator>
				<category><![CDATA[其他]]></category>
		<category><![CDATA[并行计算]]></category>
		<category><![CDATA[软件开发工具]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/12/05/400009309/</guid>
		<description><![CDATA[在大家共同努力下，英特尔软件工具推广活动的2012年11月份的评选工作告一段落，详见： http://software.intel.com/zh-cn/forums/showthread.php?t=101465&#38;o=a&#38;s=lr 或 http://topic.csdn.net/u/20111130/09/4923ccd3-8922-401b-8a53-f5d12a52d49e.html 活动开始前还感到工作应该比较容易，但是一个月下来，我和我的同事都感到，要想把活动搞好，还是有很多工作要做。正所谓一份付出一份收获。 先说活动的推广吧，我们得到了CSDN和ISN方面的大力支持，为我们做置顶宣传工作，不然哪来的这么多人的参与？！所以要对他们感谢再感谢！ 再说本月的小结评选，我和同事分别对CSDN和ISN论坛上的讨论主题分门别类作统计；然后选出靠前的参与者。开始我还想不要有空缺奖，尽量鼓励大家多参与，但是我们希望通过阶段评选工作，让大家更加明确我们活动的中心思想，尤其在第一次的评选中，更应该体现出来；同时，由于很多问题是由我们自己的工程师解答的，为了公正起见。所以我们忍痛将解答奖空缺出来。我想这也告诉大家一个方向：积极地回答你擅长的问题，我们就会奖励大家。 最后，再来看看我们本期获奖的优胜者吧！ 贡献奖得主是CSDN ID 为ieqinjixing521的用户，他的问题是intel MKL pardiso求解大型稀疏矩阵，是不是很浪费内存？ 在这个论坛贴中，围绕Intel公司的MKL pardiso求矩阵的方法进行了深入的讨论，很有启发，我们感到这样的论坛贴值得奖励。 本期的提问奖有两名，分别是CSDN ID为xxgclj的用户，论坛贴是关于Intel IPP的 和CSDN ID为menzill的用户，论坛贴是Qt,Boost,OpenMP哪个用来搞多线程厉害? 这两位获奖者都能针对在使用INTEL公司产品过程中遇到的发问，不但有助于得到解决方案，而且也让更多的人了解，起到了推而广之的作用。是值得奖励的。 我们感到能通过这次活动，让更多的人认识，使用，熟悉我们INTEL公司的多线程并行开发软件工具，心里还是有一种成就感，值得继续下去… 更加热切期盼能有更多的人参与到我们的活动中来，共同推动INTEL公司的多线程并行开发软件工具的普及。 附本次活动2012年11月份获奖名单： http://software.intel.com/zh-cn/forums/showthread.php?t=101465&#38;o=a&#38;s=lr http://topic.csdn.net/u/20111130/09/4923ccd3-8922-401b-8a53-f5d12a52d49e.html 附本次活动内容： http://software.intel.com/zh-cn/forums/showthread.php?t=101381&#38;o=a&#38;s=lr]]></description>
			<content:encoded><![CDATA[<p>在大家共同努力下，英特尔软件工具推广活动的2012年11月份的评选工作告一段落，详见：<br />
<a href="http://software.intel.com/zh-cn/forums/showthread.php?t=101465&amp;o=a&amp;s=lr">http://software.intel.com/zh-cn/forums/showthread.php?t=101465&amp;o=a&amp;s=lr</a> 或<br />
<a href="http://topic.csdn.net/u/20111130/09/4923ccd3-8922-401b-8a53-f5d12a52d49e.html">http://topic.csdn.net/u/20111130/09/4923ccd3-8922-401b-8a53-f5d12a52d49e.html</a><br />
活动开始前还感到工作应该比较容易，但是一个月下来，我和我的同事都感到，要想把活动搞好，还是有很多工作要做。正所谓一份付出一份收获。</p>
<p>先说活动的推广吧，我们得到了CSDN和ISN方面的大力支持，为我们做置顶宣传工作，不然哪来的这么多人的参与？！所以要对他们感谢再感谢！</p>
<p>再说本月的小结评选，我和同事分别对CSDN和ISN论坛上的讨论主题分门别类作统计；然后选出靠前的参与者。开始我还想不要有空缺奖，尽量鼓励大家多参与，但是我们希望通过阶段评选工作，让大家更加明确我们活动的中心思想，尤其在第一次的评选中，更应该体现出来；同时，由于很多问题是由我们自己的工程师解答的，为了公正起见。所以我们忍痛将解答奖空缺出来。我想这也告诉大家一个方向：积极地回答你擅长的问题，我们就会奖励大家。</p>
<p>最后，再来看看我们本期获奖的优胜者吧！<br />
贡献奖得主是CSDN ID 为ieqinjixing521的用户，他的问题是<a href="http://topic.csdn.net/u/20110505/18/e712a5f2-04ba-4b12-8316-f88bc9c7e15e.html">intel MKL pardiso求解大型稀疏矩阵，是不是很浪费内存？</a> 在这个论坛贴中，围绕Intel公司的MKL pardiso求矩阵的方法进行了深入的讨论，很有启发，我们感到这样的论坛贴值得奖励。<br />
本期的提问奖有两名，分别是CSDN ID为xxgclj的用户，论坛贴是<a href="http://topic.csdn.net/u/20111121/13/bfdb76d1-6350-4872-b647-664dcabcdf5c.html">关于Intel IPP的</a> 和CSDN ID为menzill的用户，论坛贴是<a href="http://topic.csdn.net/u/20111119/11/513763ab-ca8f-46af-8235-faa9c603994b.html">Qt,Boost,OpenMP哪个用来搞多线程厉害?</a> 这两位获奖者都能针对在使用INTEL公司产品过程中遇到的发问，不但有助于得到解决方案，而且也让更多的人了解，起到了推而广之的作用。是值得奖励的。</p>
<p>我们感到能通过这次活动，让更多的人认识，使用，熟悉我们INTEL公司的多线程并行开发软件工具，心里还是有一种成就感，值得继续下去…</p>
<p>更加热切期盼能有更多的人参与到我们的活动中来，共同推动INTEL公司的多线程并行开发软件工具的普及。</p>
<p>附本次活动2012年11月份获奖名单：</p>
<p><a href="http://software.intel.com/zh-cn/forums/showthread.php?t=101465&amp;o=a&amp;s=lr">http://software.intel.com/zh-cn/forums/showthread.php?t=101465&amp;o=a&amp;s=lr</a><br />
<a href="http://topic.csdn.net/u/20111130/09/4923ccd3-8922-401b-8a53-f5d12a52d49e.html">http://topic.csdn.net/u/20111130/09/4923ccd3-8922-401b-8a53-f5d12a52d49e.html</a></p>
<p>附本次活动内容：<br />
<a href="http://software.intel.com/zh-cn/forums/showthread.php?t=101381&amp;o=a&amp;s=lr">http://software.intel.com/zh-cn/forums/showthread.php?t=101381&amp;o=a&amp;s=lr</a></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/12/05/400009309/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>英特尔软件工具推广活动开始了</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/11/01/400008995/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/11/01/400008995/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 06:35:13 +0000</pubDate>
		<dc:creator>Wise Chen (Intel)</dc:creator>
				<category><![CDATA[图形和视觉计算]]></category>
		<category><![CDATA[并行计算]]></category>
		<category><![CDATA[软件开发工具]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/11/01/400008995/</guid>
		<description><![CDATA[工作之余，大家讨论最多的的工作话题就是如何推广公司的软件工具Intel® Parallel Studio了。IT这个社会早已进入了多核时代，我们公司推出的多核i3,i5,i7也有一段时间。但是作为一名软件从业人员看到我们大家还在开发单线程程序或者使用复杂，低层接口的并行开发语言开发并行软件时，心情还是相当复杂的。这就促使我想到我们公司的并行开发工具该如何宣传并让更多的开发人员使用而从中受益。 这种期盼终于有了结果。这不，旨在推广英特尔软件工具的推广活动本月就和大家见面了。 这次活动的主要目的就是推广和普及在Intel® Parallel Studio XE开发环境下的多线程应用程序的开发模式，提升在Intel®多核CPU架构下开发和优化多线程应用程序的能力和技巧。 活动方式以论坛为交流平台，鼓励各位不论是高手还是新手积极参与进来，共同提高并行开发应用软件的能力和技巧，希望将该论坛打造成为并行开发人员的家园。所有与并行开发的事宜都能在这里找到一些帮助。 事实上，我们公司的并行软件工具也是世界领先的。它不但提供了业界公认的Open Source并行开发工具OpenMP3.0的实现；同时还提供了其他针对不同领域和开发阶段所需要的并行开发语言和库工具，如：Intel® Cilk Plus, Intel® TBB, Intel® IPP库等语言扩展和开发包。 如果说并行开发比普通的串行开发难很多，那么我可以肯定地说并行开发的调试是最让人头痛的事情。一个人脑如何计算过多核的电脑？所以寻找有效的并行开发调试优化工具就是业界普遍关注的大事。我相信英特尔的Intel® VTune Amplifier的调试优化工具是业界公认的最好的并行工具。在这方面有很多成功案例。 闲话少说，还是来看看具体的活动内容吧，除了活动时间，方式，形式外；注意了本次活动的奖品也是蛮丰富的啊，频率也很多欧。如果你是高手还不刚快一展身手；如果你想了解并行开发技术，到我们这里来吧，提提问题说不定还能获奖呢！ 附本次活动内容： 英特尔软件工具论坛推广活动 Intel SSG DPD Shanghai 一. 活动时间周期：2011年10月31日开始，2012年4月30日结束。 二. 活动宗旨： 推广和普及在Intel® Parallel Studio XE开发环境下的多线程应用程序的开发模式，提升在Intel®多核CPU架构下开发和优化多线程应用程序的能力和技巧 三. 活动内容和形式： 本活动将以论坛为平台，围绕多线程软件开发过程中的多种开发模式和工具展开讨论，如：Intel® Cilk™ Plus，OpenMP，Intel® Threading Building Blocks，Intel® Integrated Performance Primitives，Intel® Math Kernel Library，Intel® VTune™ Amplifier XE和Intel® Inspector XE。 欢迎活动参与者根据各自的实际情况发表和分享相关的信息，文档，博客，编成技巧，提交问题和解答方案等各种有关信息。如：各种白皮书，文档，博客，程序代码，解决方案，编程方法和技巧等。 [...]]]></description>
			<content:encoded><![CDATA[<p>工作之余，大家讨论最多的的工作话题就是如何推广公司的软件工具Intel® Parallel Studio了。IT这个社会早已进入了多核时代，我们公司推出的多核i3,i5,i7也有一段时间。但是作为一名软件从业人员看到我们大家还在开发单线程程序或者使用复杂，低层接口的并行开发语言开发并行软件时，心情还是相当复杂的。这就促使我想到我们公司的并行开发工具该如何宣传并让更多的开发人员使用而从中受益。<br />
这种期盼终于有了结果。这不，旨在推广英特尔软件工具的推广活动本月就和大家见面了。<br />
这次活动的主要目的就是推广和普及在Intel® Parallel Studio XE开发环境下的多线程应用程序的开发模式，提升在Intel®多核CPU架构下开发和优化多线程应用程序的能力和技巧。<br />
活动方式以论坛为交流平台，鼓励各位不论是高手还是新手积极参与进来，共同提高并行开发应用软件的能力和技巧，希望将该论坛打造成为并行开发人员的家园。所有与并行开发的事宜都能在这里找到一些帮助。<br />
事实上，我们公司的并行软件工具也是世界领先的。它不但提供了业界公认的Open Source并行开发工具OpenMP3.0的实现；同时还提供了其他针对不同领域和开发阶段所需要的并行开发语言和库工具，如：Intel® Cilk Plus, Intel® TBB, Intel® IPP库等语言扩展和开发包。<br />
如果说并行开发比普通的串行开发难很多，那么我可以肯定地说并行开发的调试是最让人头痛的事情。一个人脑如何计算过多核的电脑？所以寻找有效的并行开发调试优化工具就是业界普遍关注的大事。我相信英特尔的Intel® VTune Amplifier的调试优化工具是业界公认的最好的并行工具。在这方面有很多成功案例。</p>
<p>闲话少说，还是来看看具体的活动内容吧，除了活动时间，方式，形式外；注意了本次活动的奖品也是蛮丰富的啊，频率也很多欧。如果你是高手还不刚快一展身手；如果你想了解并行开发技术，到我们这里来吧，提提问题说不定还能获奖呢！</p>
<p>附本次活动内容：<br />
<strong>英特尔软件工具论坛推广活动</strong><br />
Intel SSG DPD Shanghai</p>
<p>一. 活动时间周期：2011年10月31日开始，2012年4月30日结束。<br />
二. 活动宗旨：<br />
推广和普及在Intel® Parallel Studio XE开发环境下的多线程应用程序的开发模式，提升在Intel®多核CPU架构下开发和优化多线程应用程序的能力和技巧<br />
三. 活动内容和形式：<br />
本活动将以论坛为平台，围绕多线程软件开发过程中的多种开发模式和工具展开讨论，如：Intel® Cilk™ Plus，OpenMP，Intel® Threading Building Blocks，Intel® Integrated Performance Primitives，Intel® Math Kernel Library，Intel® VTune™ Amplifier XE和Intel® Inspector XE。 欢迎活动参与者根据各自的实际情况发表和分享相关的信息，文档，博客，编成技巧，提交问题和解答方案等各种有关信息。如：各种白皮书，文档，博客，程序代码，解决方案，编程方法和技巧等。<br />
四. 活动流程：<br />
本活动将在英特尔软件工具论坛（<a href="http://software.intel.com/zh-cn/forums/185/">http://software.intel.com/zh-cn/forums/185/</a>）和CSDN的多核软件开发（<a href="http://forum.csdn.net/Intel/IntelMulti-core/">http://forum.csdn.net/Intel/IntelMulti-core/</a>）上开展，所有英特尔® 软件网络和CSDN的注册用户都欢迎参加本次活动（注：本动没有单独的注册）。活动参与者根据自己的实际情况发表新贴，跟贴等互动信息。<br />
五. 奖励方式：<br />
根据参与者的贡献情况，每一个月进行以下方式的奖励：<br />
贡献奖(3名)：授予提供相关文档，博客，参考和答疑解惑的参与者，奖品为英特尔T恤衫和小礼品<br />
解答奖(1~3名)：授予对问题给与满意解答的参与者，奖品为英特尔T恤衫和小礼品<br />
提问奖(1~3名)：授予提出引起广泛讨论的发帖者，奖品为Intel® Parallel Studio 2011 XE的6月试用版软件<br />
2011年11月25日起到2012年4月，每月最后一个周五我们将公布当月获奖者名单。活动最后一期将从前6期的获奖者中抽取一人，授予大奖，Intel® SSD硬盘（80G或以上）。<br />
六. 注意事项：<br />
活动参与者必须为论坛的合法注册用户，能提供真实姓名，常用电子邮箱，联系电话等个人资料。方便奖品的寄送。如果注册信息不真实，有可能导致奖品无法派送。<br />
提交的内容必须健康、合法，没有任何不良信息。本次活动的主办方对活动内容及奖品有最终解释权。<br />
Intel, Cilk和VTune为Intel Corporation在美国和其他国家享有的商标。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/11/01/400008995/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intel® Parallel Studio和Intel® Parallel Studio XE特性比较</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/11/25/intel-parallel-studiointel-parallel-studio-xe/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/11/25/intel-parallel-studiointel-parallel-studio-xe/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 05:15:36 +0000</pubDate>
		<dc:creator>Wise Chen (Intel)</dc:creator>
				<category><![CDATA[Blog Challenge]]></category>
		<category><![CDATA[并行计算]]></category>
		<category><![CDATA[软件开发工具]]></category>
		<category><![CDATA[Intel Paralle Studio]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/11/25/intel-parallel-studiointel-parallel-studio-xe/</guid>
		<description><![CDATA[英特尔公司发布了两款面向并行软件开发的软件产品，他们是Intel® Parallel Studio和Intel® Parallel Studio XE。为了方便比较这两款软件的特点，现将它们的特性罗列如下： 支持的开发平台 Intel® Parallel Studio是一款基于MS Window系统，面向Microsoft Visuall Studio™ C/C++开发人员的高性能的并行开发工具集； Intel® Parallel Studio XE是一款同时面向Window*和Linux*平台，既支持C/C++开发语言又支持Fortran开发语言的更高性能的并行开发工具集。 支持的特性 在Intel® Parallel Studio里，包含以下开发工具： Composer 更优化的C++编译器 并行开发调试器扩展 Intel® Threaded Performance Libraries(Intel® IPP)软件库 Intel® Threaded Libraries(Intel® TBB, Intel® ArBB)软件库 Intel® Parallel Building Blocks(Intel® PBB) Inspector Memory&#38;Thread Analysis(内存和线程调试分析器) Amplifier Hotsopt, Concurrency, Locks &#38; Waits Profiling Source View（源代码级浏览） Advisor Threading [...]]]></description>
			<content:encoded><![CDATA[<p>英特尔公司发布了两款面向并行软件开发的软件产品，他们是Intel® Parallel Studio和Intel® Parallel Studio XE。为了方便比较这两款软件的特点，现将它们的特性罗列如下：<br />
<strong>支持的开发平台</strong><br />
Intel® Parallel Studio是一款基于MS Window系统，面向Microsoft Visuall Studio™ C/C++开发人员的高性能的并行开发工具集；<br />
Intel® Parallel Studio XE是一款同时面向Window*和Linux*平台，既支持C/C++开发语言又支持Fortran开发语言的更高性能的并行开发工具集。<br />
<strong>支持的特性</strong><br />
在<em>Intel® Parallel Studio</em>里，包含以下开发工具：<br />
<em>Composer</em><br />
更优化的C++编译器<br />
并行开发调试器扩展<br />
Intel® Threaded Performance Libraries(Intel® IPP)软件库<br />
Intel® Threaded Libraries(Intel® TBB, Intel® ArBB)软件库<br />
Intel® Parallel Building Blocks(Intel® PBB)<br />
<em>Inspector</em><br />
Memory&amp;Thread Analysis(内存和线程调试分析器)<br />
<em>Amplifier</em><br />
Hotsopt, Concurrency, Locks &amp; Waits Profiling<br />
Source View（源代码级浏览）<br />
<em>Advisor</em><br />
Threading advice for serial applications（对串行应用程序的线程开发建议）<br />
<em>User Interface &amp; Support</em><br />
Visual Studio integration（与MS Visual Studio开发工具的集成）<br />
Basic Command line support（基本命令行操作支持）<br />
Support: Forums or Premier（同时支持论坛和贵宾客户级的支持）</p>
<p>在<em>Intel® Parallel Studio XE</em>里，包含以下开发工具：<br />
<em>Parallel Studio XE</em><br />
Static Security Analysis（应用程序的静态安全分析）<br />
<em>Composer</em><br />
更优化的C++编译器<br />
更优化的Fortran编译器<br />
Advanced compiler optimizations（先进的编译器优化功能）<br />
Co-Array Fortran(支持单点并行的Co-Array功能)<br />
Profile Guided Optimization（PGO）<br />
并行开发调试器扩展<br />
Intel® Threaded Performance Libraries(Intel® IPP)软件库<br />
Intel® Threaded Libraries(Intel® TBB, Intel® ArBB)软件库<br />
Intel® Trheaded Math Libraries(Intel® MKL)软件库<br />
Intel® Parallel Building Blocks(Intel® PBB)<br />
<em>Inspector</em><br />
Memory&amp;Thread Analysis(内存和线程调试分析器)<br />
Advanced Memory&amp;Thread Analysis(先进的内存和线程调试分析器)<br />
<em>Amplifier</em><br />
Hotsopt, Concurrency, Locks &amp; Waits Profiling<br />
Timeline, Frame Analysis<br />
Event based sampling<br />
Source View（源代码级浏览）<br />
Assembly view（汇编级浏览）<br />
<em>User Interface &amp; Support</em><br />
Visual Studio integration（与MS Visual Studio开发工具的集成）<br />
Stand alone graphical interface（独立的图形接口）<br />
Advanced Command line support（先进的命令行操作支持）<br />
Support: Forums or Premier（同时支持论坛和贵宾客户级的支持）</p>
<p>总之，英特尔在持续不断地完善高性能开发工具方面继续处于领先位置。如：<br />
• 同时宣布提供面向Windows和Linux平台的开发工具集<br />
• 用户易用性的显著改进<br />
• 不断提高和改进 C/C++ 和Fortran编译器<br />
– 支持对未来‘Sandy Bridge’处理器的支持<br />
– 为简化多核开发而设计的并行开发模型<br />
– 包括Co-arrays特性在内的Fortran 2008语言的支持<br />
• 对代码的可靠性，安全性和性能提高得扩展<br />
– 在一个工具内同时提供了内存，线程和安全检查调试功能<br />
– 扩展了辨别和分离性能瓶颈的能力</p>
<p>更多的信息请参考</p>
<ul>www.intel.com/software/products</ul>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/11/25/intel-parallel-studiointel-parallel-studio-xe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cilk 和 pthread 的编程比较</title>
		<link>http://software.intel.com/zh-cn/blogs/2010/06/25/cilk-pthread/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2010/06/25/cilk-pthread/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 07:31:37 +0000</pubDate>
		<dc:creator>Wise Chen (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[软件开发工具]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2010/06/25/cilk-pthread/</guid>
		<description><![CDATA[本文是针对刚刚接触Cilk技术的新手，通过实例介绍了cilk_for和pthread的编程风格和区别。该程序在linux下编译成功，完全可以参考使用。]]></description>
			<content:encoded><![CDATA[<p>英特尔Cilk的多线程编程技术让C/C++程序员更容易地编写多线程程序，继而充分利用多核处理器的计算能力，它已被集成到英特尔Parallel Composer2011（Beta）中。</p>
<p>通过Cilk和pthread编程的比较让我们看看Cilk编程的便捷性。<br />
英特尔® C++编译器的新功能 Cilk语言扩展（以下简称”Cilk”）为C/C++语言增加了细粒度任务支持,使对新的和现有软件增加并行性来充分发掘多处理器能力变得更加容易。<br />
Cilk程序需要运行系统和库函数的支持，运行系统和库函数将自动连接到那些使用了Cilk语言扩展的程序中。为了控制应用程序的执行，运行系统提供了仅有的几个供用户访问的函数。</p>
<p>这里我将比较用cilk_for和pthread的编程方法。</p>
<p>Cilk_for 是Cilk提供的API之一。其说明如下：<br />
<strong>Cilk_for </strong>循环用于取代常规的C/C++中的for 循环，它允许循环迭代并行执行。其语法规则如下：<br />
cilk_for (declaration; conditional expression; increment expression) body<br />
<strong>cilk_sync </strong>指出当前函数无法超越此位置，继续和它衍生的子线程并行执行。</p>
<p>在linux下，目前大家所熟悉的开发多线程程序技术遵循POSIX线程接口，称为pthread的多线程开发方法。<br />
 int <strong>pthread_create</strong>(pthread_t *restrict tidp, const pthread_attr_t *restrict attr,<br />
void *(*start_rtn)(void), void *restrict arg);<br />
第一个参数为指向线程标识符的指针。<br />
第二个参数用来设置线程属性。<br />
第三个参数是线程运行函数的起始地址。<br />
最后一个参数是运行函数的参数。</p>
<p>下面的实例通过对最常用的for语句进行多线程开发来说明在Linux下用Cilk和pthread技术编写并行多线程程序的方法。</p>
<p><strong>程序代码</strong><br />
#include <strong>&lt;</strong>cilk/cilk.h<strong>&gt;</strong><br />
#include <strong>&lt;</strong>pthread.h<strong>&gt;</strong><br />
#include <strong>&lt;</strong>stdio.h<strong>&gt;</strong><br />
#include <strong>&lt;</strong>pthread.h<strong>&gt;</strong><br />
#include <strong>&lt;</strong>string.h<strong>&gt;</strong><br />
#include <strong>&lt;</strong>sys/types.h<strong>&gt;</strong><br />
#include <strong>&lt;</strong>unistd.h<strong>&gt;</strong></p>
<p>#include "cilktime.h"</p>
<p>#define TP 56<br />
#define TF 8</p>
<p>int TCPU = 8;<br />
int ip, iif, cpu, err;<br />
pthread_t ntid[32];</p>
<p>void printids(const char *s){<br />
pid_t pid;<br />
pthread_t tid;</p>
<p>pid = getpid();<br />
tid = pthread_self();<br />
printf("%s pid %u tid %u (0x%x)\n",s,(unsigned int)pid,(unsigned int)tid,(unsigned<br />
int)tid);<br />
}</p>
<p>void *thr_fn(void *arg){<br />
//printids("new thread:");<br />
printf("Pthread thread testing\n");</p>
<p>return ((void *)0);<br />
}</p>
<p>void process_cilk(int pnum)<br />
{<br />
printf("Cilk thread num is %d\n", pnum);<br />
}</p>
<p><strong>void call_cilk()</strong><br />
{<br />
int i;<br />
for ( ip=0; ip&lt;TP;ip++)<br />
{<br />
for( iif=0; iif&lt;TF; iif++)<br />
{<br />
cilk_for (i=0;i&lt;TCPU;i++)<br />
{<br />
process_cilk(i);<br />
}<br />
cilk_sync;</p>
<p>cilk_for (i=0; i &lt; TCPU; i++)<br />
{<br />
process_cilk(i);<br />
}<br />
cilk_sync;<br />
}<br />
}<br />
}</p>
<p><strong>void call_pthread()</strong><br />
{<br />
int i;<br />
for ( ip=0; ip&lt;TP;ip++)<br />
{<br />
for( iif=0; iif&lt;TF; iif++)<br />
{<br />
for (i=0; i&lt; TCPU; i++) {<br />
err = pthread_create(&amp;ntid[i],NULL,thr_fn,NULL);<br />
if(err != 0){<br />
printf("can't create thread: %s\n",strerror(err));<br />
return;<br />
}<br />
}<br />
for (i=0; i &lt; TCPU; i++)<br />
{<br />
pthread_join(ntid[i], NULL);<br />
}</p>
<p>for (i=0; i&lt; TCPU; i++) {<br />
err = pthread_create(&amp;ntid[i],NULL,thr_fn,NULL);<br />
if(err != 0){<br />
printf("can't create thread: %s\n",strerror(err));<br />
return;<br />
}<br />
}<br />
for (i=0; i 1) {<br />
n = atoi(argv[1]); // test case for pthred(0) and cilk(1)<br />
}<br />
if (argc &gt;2) {<br />
TCPU = atoi(argv[2]);<br />
if (0!= __cilkrts_set_param("nworkers", argv[2]))<br />
{<br />
printf("Failed to set worker count\n");<br />
return 0;<br />
}<br />
}<br />
if (argc &lt;= 1) {<br />
printf("Usage: t1 []\n");<br />
printf("n=1 for cilk testing; n=2 for pthread testing\n");<br />
printf("cpu is core number you want to setup for testing\n");<br />
return 0;<br />
}</p>
<p>switch (n) {<br />
case 1:{ // cilk method<br />
start_ticks = cilk_getticks();<br />
call_cilk();<br />
end_ticks = cilk_getticks();<br />
ticks = end_ticks - start_ticks;<br />
printf("Sort ok in %f mseconds in cilk.\n ", cilk_ticks_to_seconds(ticks)*1000);<br />
}<br />
break;<br />
case 0:<br />
case 2:<br />
default:<br />
{ // pthread method<br />
start_ticks = cilk_getticks();<br />
call_pthread();<br />
end_ticks = cilk_getticks();<br />
ticks = end_ticks - start_ticks;<br />
printf("Sort ok in %f mseconds in pthread.\n ", cilk_ticks_to_seconds(ticks)*1000);<br />
}<br />
break;<br />
}<br />
return 1;<br />
}</p>
<p>不用太多地说明，我们就可以从上述代码call_cilk()和call_pthread()看到，使用Cilk_for的多线程编程比使用pthread的编程更加与传统的编程风格相近。英特尔的Cilk多线程开发技术可以极大地方便开发人员开发多线程应用程序。</p>
<p><strong>编译命令</strong></p>
<p>icc –o t1 t1.cc –lpthread</p>
<p>注：使用上述cilk技术需要要英特尔最新的编译器Intel® Parallel Composer beta。</p>
<p><strong>附头文件 cilktime.h源代码</strong><br />
/*<br />
* This file declares the following functions:<br />
* cilk_getticks() - Returns a timer value with a resolution of<br />
* milliseconds<br />
* cilk_ticks_to_seconds - Converts the timer value to seconds.<br />
*/</p>
<p>#ifdef _WIN32<br />
#include <strong>&lt;</strong>Windows.h<strong>&gt;</strong></p>
<p>static inline unsigned long long cilk_getticks()<br />
{<br />
// Fetch number of milliseconds that have elapsed sin the system started<br />
return GetTickCount();<br />
}</p>
<p>static inline double cilk_ticks_to_seconds(unsigned long long ticks)<br />
{<br />
return ticks * 1.0e-3;<br />
}<br />
#endif</p>
<p>#if defined __unix__ || defined __APPLE__<br />
#include <strong>&lt;</strong>time.h<strong>&gt;</strong><br />
#include <strong>&lt;</strong>sys/time.h<strong>&gt;</strong></p>
<p>static inline unsigned long long cilk_getticks()<br />
{<br />
struct timeval t;<br />
gettimeofday(&amp;t, 0);<br />
return t.tv_sec * 1000000ULL + t.tv_usec;<br />
}<br />
static inline double cilk_ticks_to_seconds(unsigned long long ticks)<br />
{<br />
return ticks * 1.0e-6;<br />
}<br />
#endif</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2010/06/25/cilk-pthread/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

