<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: [荐]平行處理概觀</title>
	<atom:link href="http://erlang-china.org/misc/parallel_processing_overview.html/feed" rel="self" type="application/rss+xml" />
	<link>http://erlang-china.org/misc/parallel_processing_overview.html</link>
	<description>erlang 中文社区</description>
	<lastBuildDate>Mon, 21 May 2012 07:55:26 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: jackyz</title>
		<link>http://erlang-china.org/misc/parallel_processing_overview.html/comment-page-1#comment-12625</link>
		<dc:creator>jackyz</dc:creator>
		<pubDate>Mon, 13 Apr 2009 04:11:58 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=475#comment-12625</guid>
		<description>&lt;a href=&quot;#comment-12615&quot; rel=&quot;nofollow&quot;&gt;@dsun&lt;/a&gt; 了解了，有道理。</description>
		<content:encoded><![CDATA[<p><a href="#comment-12615" rel="nofollow">@dsun</a> 了解了，有道理。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dsun</title>
		<link>http://erlang-china.org/misc/parallel_processing_overview.html/comment-page-1#comment-12615</link>
		<dc:creator>dsun</dc:creator>
		<pubDate>Sun, 12 Apr 2009 06:04:20 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=475#comment-12615</guid>
		<description>@jackyz 我说的“并行和并发在底层支撑机制上有很大重叠”意思是指在当前的通用计算平台和操作系统平台上，这两种范型在实现时基本上都是采用多线程、多进程等手段。我说不能这么理解，是指“并发包装起来的并行，并行包装起来的并发”这种说法不妥。之所以会有这样的理解，我觉得可能是把并发和多线（进）程等起来的缘故吧，不知道是不是这样？在有些上下文中把这两者等同并没有问题，但是在探讨并行和并发范型时，这种等同会造成问题。

固然，现在有很多库对当前通用计算平台上这些primitive的手段进行了包装，但绝不是为了简化编程范型，而只是为了让程序员能够更关注于范型本身，而不被当前实现手段的繁琐分散了注意。这两种范型有清晰地目标。

你引用的几段话，也主要是并行系统设计的一些原则、手段以及好的支撑应该做的事情。

虽然Joe Armstrong现在到处宣扬Erlang在并行编程方面的优势，并把并行/并发编程作为Erlang最重要的特征进行推介，但这只是Joe在当前的形势下的一种推销Erlang的手段。从JoeArmstrong的一些严肃的访谈和论文中，可以看出，Erlang最核心的特征是软件容错，Erlang非常优雅、深刻地解决了容错这个问题，从而像并发/并行/分布这些问题都很容易地被同样优雅地解决了。其他语言无论做出怎样的更改、扩展、创新，只要没有正确地解决容错的问题，在这些方面都无法和Erlang相提并论，因为：you can&#039;t fix stupid. 跑题了，呵呵。</description>
		<content:encoded><![CDATA[<p>@jackyz 我说的“并行和并发在底层支撑机制上有很大重叠”意思是指在当前的通用计算平台和操作系统平台上，这两种范型在实现时基本上都是采用多线程、多进程等手段。我说不能这么理解，是指“并发包装起来的并行，并行包装起来的并发”这种说法不妥。之所以会有这样的理解，我觉得可能是把并发和多线（进）程等起来的缘故吧，不知道是不是这样？在有些上下文中把这两者等同并没有问题，但是在探讨并行和并发范型时，这种等同会造成问题。</p>
<p>固然，现在有很多库对当前通用计算平台上这些primitive的手段进行了包装，但绝不是为了简化编程范型，而只是为了让程序员能够更关注于范型本身，而不被当前实现手段的繁琐分散了注意。这两种范型有清晰地目标。</p>
<p>你引用的几段话，也主要是并行系统设计的一些原则、手段以及好的支撑应该做的事情。</p>
<p>虽然Joe Armstrong现在到处宣扬Erlang在并行编程方面的优势，并把并行/并发编程作为Erlang最重要的特征进行推介，但这只是Joe在当前的形势下的一种推销Erlang的手段。从JoeArmstrong的一些严肃的访谈和论文中，可以看出，Erlang最核心的特征是软件容错，Erlang非常优雅、深刻地解决了容错这个问题，从而像并发/并行/分布这些问题都很容易地被同样优雅地解决了。其他语言无论做出怎样的更改、扩展、创新，只要没有正确地解决容错的问题，在这些方面都无法和Erlang相提并论，因为：you can&#8217;t fix stupid. 跑题了，呵呵。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jackyz</title>
		<link>http://erlang-china.org/misc/parallel_processing_overview.html/comment-page-1#comment-12592</link>
		<dc:creator>jackyz</dc:creator>
		<pubDate>Sat, 11 Apr 2009 03:21:14 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=475#comment-12592</guid>
		<description>James Reinders 在 &lt;a href=&quot;http://www.zdnet.com.tw/white_board/intel/video-5.htm&quot; target=_blank rel=&quot;nofollow&quot;&gt;Programming for Parallelism&lt;/a&gt; 中说：
&lt;blockquote&gt;
……
最好的平行程式不是先問處理器的數量，然後圍繞這個數量來撰寫所有演算法。雖然較低的階層上可能存在這種情況，但程式的高層部分應該製造任務——大量任務，然後讓一些底層結構把這些任務和處理器的數量聯繫起來。顯然，與一個只能製造兩個任務的程式相比，一個能製造數千個平行任務的程式的擴展性要好得多。因此，程式設計時的重點是任務，而非執行緒。
……
&lt;/blockquote&gt;

Joe Armstrong 在 &lt;a href=&quot;http://erlang-china.org/wp-content/uploads/2007/09/joes-thesis.zip&quot; target=_blank rel=&quot;nofollow&quot;&gt;Joe Thesis CN&lt;/a&gt; 中的表述是：
&lt;blockquote&gt;
……
巨大的潜在效率——设计成以许多独立的并行进程来实现的系统,可以很方便地实现在多处理器上,或者运行在分布式的处理器网络上。注意,这种效率的提升只是潜在的,只有当应用程序可以被分解成许多真正独立的任务时,才能产生实效。如果任务之间有很强的数据依赖,这种提升往往是不可能的。
……
&lt;/blockquote&gt;

说法很有一些相似……。

Ulf Wiger 在 &lt;a href=&quot;http://ulf.wiger.net/weblog/wp-content/uploads/2009/01/damp09-erlang-multicore.pdf&quot; target=_blank rel=&quot;nofollow&quot;&gt;Erlang Multicore&lt;/a&gt; 中则说：
&lt;blockquote&gt;
Erlang SMP ”Credo”
SMP should be transparent to the programmer in much the same way as distribution is,
– I.e. you shouldn’t have to think about it
– ...but sometimes you must
Use SMP mainly for stuff that
you’d make concurrent anyway.
&lt;/blockquote&gt;

诚然 SMP 并不等于 Parallel (或者说只是后者的一部分)，而且“被并发包装起来的并行”也不能涵盖全部情况(...but sometimes you must)。但，除此之外，“SMP should be transparent to the programmer in much the same way as distribution is”。｛对于(Erlang)程序员来说，和分布式(distribution)一样，对称多处理(SMP)也是透明的｝。

这是一个极具诱惑力的范型简化(并发范型包装并行范型)。如果不能这么理解，那又是为什么？(比如，具一个反例？)</description>
		<content:encoded><![CDATA[<p>James Reinders 在 <a href="http://www.zdnet.com.tw/white_board/intel/video-5.htm" target=_blank rel="nofollow">Programming for Parallelism</a> 中说：</p>
<blockquote><p>
……<br />
最好的平行程式不是先問處理器的數量，然後圍繞這個數量來撰寫所有演算法。雖然較低的階層上可能存在這種情況，但程式的高層部分應該製造任務——大量任務，然後讓一些底層結構把這些任務和處理器的數量聯繫起來。顯然，與一個只能製造兩個任務的程式相比，一個能製造數千個平行任務的程式的擴展性要好得多。因此，程式設計時的重點是任務，而非執行緒。<br />
……
</p></blockquote>
<p>Joe Armstrong 在 <a href="http://erlang-china.org/wp-content/uploads/2007/09/joes-thesis.zip" target=_blank rel="nofollow">Joe Thesis CN</a> 中的表述是：</p>
<blockquote><p>
……<br />
巨大的潜在效率——设计成以许多独立的并行进程来实现的系统,可以很方便地实现在多处理器上,或者运行在分布式的处理器网络上。注意,这种效率的提升只是潜在的,只有当应用程序可以被分解成许多真正独立的任务时,才能产生实效。如果任务之间有很强的数据依赖,这种提升往往是不可能的。<br />
……
</p></blockquote>
<p>说法很有一些相似……。</p>
<p>Ulf Wiger 在 <a href="http://ulf.wiger.net/weblog/wp-content/uploads/2009/01/damp09-erlang-multicore.pdf" target=_blank rel="nofollow">Erlang Multicore</a> 中则说：</p>
<blockquote><p>
Erlang SMP ”Credo”<br />
SMP should be transparent to the programmer in much the same way as distribution is,<br />
– I.e. you shouldn’t have to think about it<br />
– &#8230;but sometimes you must<br />
Use SMP mainly for stuff that<br />
you’d make concurrent anyway.
</p></blockquote>
<p>诚然 SMP 并不等于 Parallel (或者说只是后者的一部分)，而且“被并发包装起来的并行”也不能涵盖全部情况(&#8230;but sometimes you must)。但，除此之外，“SMP should be transparent to the programmer in much the same way as distribution is”。｛对于(Erlang)程序员来说，和分布式(distribution)一样，对称多处理(SMP)也是透明的｝。</p>
<p>这是一个极具诱惑力的范型简化(并发范型包装并行范型)。如果不能这么理解，那又是为什么？(比如，具一个反例？)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dsun</title>
		<link>http://erlang-china.org/misc/parallel_processing_overview.html/comment-page-1#comment-12574</link>
		<dc:creator>dsun</dc:creator>
		<pubDate>Fri, 10 Apr 2009 09:10:59 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=475#comment-12574</guid>
		<description>@jackyz
  
    不能这么理解。呵呵</description>
		<content:encoded><![CDATA[<p>@jackyz</p>
<p>    不能这么理解。呵呵</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jackyz</title>
		<link>http://erlang-china.org/misc/parallel_processing_overview.html/comment-page-1#comment-12573</link>
		<dc:creator>jackyz</dc:creator>
		<pubDate>Fri, 10 Apr 2009 08:58:27 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=475#comment-12573</guid>
		<description>&lt;a href=&quot;#comment-12568&quot; rel=&quot;nofollow&quot;&gt;@dsun&lt;/a&gt; ：“并行和并发都是编程范型，而且它们所需要的底层基础支持设施又有很大的重叠”——为什么两种彼此不同的编程范型，它们的基础设施会出现这样的重叠？我们(在大部分的应用中)是否同时需要这两种编程范型？其中的一种范型是否(在部分情况下)可以“包装”另外一种？

这样做的目的是试图(至少是在一部分场景下)&lt;b&gt;简化&lt;/b&gt;编程范型(用并发来包装并行)。当然，这必须要建立在这种“简化”本身是可行的基础之上。Erlang 承诺使用面向“并行”编程写出来的程序，在多核的系统中能“自动”的获得多核CPU上的“并发”加速。这是一个很漂亮的“简化”。那么这是否就意味着“底层的并行问题已经被(部分的)包装在并发技术之中”了呢？

当然，一些诸如大规模科学运算一样的应用，是不适用这种简化的。这需要另当别论，但对于“常规”应用而言，是否上面这样的简化就已经足够了呢。毕竟 OpenMP/MPI/CUDA/OpenCL/... 这些“并行”设施和技术都需要相当的精力去啃(尤其是 CUDA 和 OpenCL，好像都是很专注于“数据并行”风格的东西，确实适合数据并行，但并非所有的项目都能通用)。

如果这样说是成立的，那么，比较“接近应用”的程序员们就只需要用“并发”来解决问题，不需要了解太多关于“并行”的背景知识，就能很好的应付大部分的状况。因为“并行”问题已经被“并发”包装起来，被更“接近硬件”的底层程序员们解决掉了。</description>
		<content:encoded><![CDATA[<p><a href="#comment-12568" rel="nofollow">@dsun</a> ：“并行和并发都是编程范型，而且它们所需要的底层基础支持设施又有很大的重叠”——为什么两种彼此不同的编程范型，它们的基础设施会出现这样的重叠？我们(在大部分的应用中)是否同时需要这两种编程范型？其中的一种范型是否(在部分情况下)可以“包装”另外一种？</p>
<p>这样做的目的是试图(至少是在一部分场景下)<b>简化</b>编程范型(用并发来包装并行)。当然，这必须要建立在这种“简化”本身是可行的基础之上。Erlang 承诺使用面向“并行”编程写出来的程序，在多核的系统中能“自动”的获得多核CPU上的“并发”加速。这是一个很漂亮的“简化”。那么这是否就意味着“底层的并行问题已经被(部分的)包装在并发技术之中”了呢？</p>
<p>当然，一些诸如大规模科学运算一样的应用，是不适用这种简化的。这需要另当别论，但对于“常规”应用而言，是否上面这样的简化就已经足够了呢。毕竟 OpenMP/MPI/CUDA/OpenCL/&#8230; 这些“并行”设施和技术都需要相当的精力去啃(尤其是 CUDA 和 OpenCL，好像都是很专注于“数据并行”风格的东西，确实适合数据并行，但并非所有的项目都能通用)。</p>
<p>如果这样说是成立的，那么，比较“接近应用”的程序员们就只需要用“并发”来解决问题，不需要了解太多关于“并行”的背景知识，就能很好的应付大部分的状况。因为“并行”问题已经被“并发”包装起来，被更“接近硬件”的底层程序员们解决掉了。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dsun</title>
		<link>http://erlang-china.org/misc/parallel_processing_overview.html/comment-page-1#comment-12568</link>
		<dc:creator>dsun</dc:creator>
		<pubDate>Fri, 10 Apr 2009 07:23:19 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=475#comment-12568</guid>
		<description>@jackyz &quot;&quot;&quot;这里我不清楚的一点是，“并发”在概念上是否强调了这些被同时运行的多个任务，一定要是彼此不相同的呢？那么，如果某种情况下，这些被同时运行的多个任务其实就是“一个(相同的)任务”，此时，“并发”和“并行”之间的区别是否就只有“多个CPU”这么一条了呢？&quot;&quot;&quot;


关键的一点应该是，这些同时运行的任务是为了更快地完成同一个计算的目标呢？还是仅仅是为了能够同时运行以提升系统的响应能力呢？至于任务本身是不是一定相同倒不是关键问题，比如：数据并行中，任务是相同的，但是任务并行中，任务就不相同。

&quot;&quot;&quot;更进一步，如果把“任务”概念扩大化，将“并发”系统在一个单CPU上的“运行实例”当作是“一个(相同的)任务”，通过“并行”手段，让它能在“多个CPU”上得到加速(貌似Erlang的SMP就是如此)。&quot;&quot;&quot;

你这样做的目的是啥。如果一开始设计系统时，就考虑到系统可以在多个CPU上得到加速时，其实这就是一个并行设计的问题了,Map-Reduce框架就是这样一个例子。另外，如果我们开发一个Web server，希望能够同时处理更多的用户请求，在这个场景下，处理用户请求的任务看似也相同，但是这些任务并不是为了一个更大的计算目标服务，某些任务失败仅仅会影响系统的服务质量。此时，我们可以使用多核，但是目标是为了提升系统的可用性和响应能力。这就是并发设计了。


&quot;&quot;&quot;我们是否可以说，并发和并行的研究领域不同，并发要比并行的抽象层次更高(上面的例子实际上是用“并行”技术支持了“并发”系统)，在具体应用中，也更加灵活呢(在有“并行”支持的“并发”系统上，也可以通过将相同的任务分发出去，来达到与“并行”相同的加速效果)？&quot;&quot;&quot;

并行和并发都是编程范型，它们需要的底层基础设施支持有很大的重叠。它们本身我觉得并没有层次高低之分。</description>
		<content:encoded><![CDATA[<p>@jackyz &#8220;&#8221;"这里我不清楚的一点是，“并发”在概念上是否强调了这些被同时运行的多个任务，一定要是彼此不相同的呢？那么，如果某种情况下，这些被同时运行的多个任务其实就是“一个(相同的)任务”，此时，“并发”和“并行”之间的区别是否就只有“多个CPU”这么一条了呢？&#8221;"&#8221;</p>
<p>关键的一点应该是，这些同时运行的任务是为了更快地完成同一个计算的目标呢？还是仅仅是为了能够同时运行以提升系统的响应能力呢？至于任务本身是不是一定相同倒不是关键问题，比如：数据并行中，任务是相同的，但是任务并行中，任务就不相同。</p>
<p>&#8220;&#8221;"更进一步，如果把“任务”概念扩大化，将“并发”系统在一个单CPU上的“运行实例”当作是“一个(相同的)任务”，通过“并行”手段，让它能在“多个CPU”上得到加速(貌似Erlang的SMP就是如此)。&#8221;"&#8221;</p>
<p>你这样做的目的是啥。如果一开始设计系统时，就考虑到系统可以在多个CPU上得到加速时，其实这就是一个并行设计的问题了,Map-Reduce框架就是这样一个例子。另外，如果我们开发一个Web server，希望能够同时处理更多的用户请求，在这个场景下，处理用户请求的任务看似也相同，但是这些任务并不是为了一个更大的计算目标服务，某些任务失败仅仅会影响系统的服务质量。此时，我们可以使用多核，但是目标是为了提升系统的可用性和响应能力。这就是并发设计了。</p>
<p>&#8220;&#8221;"我们是否可以说，并发和并行的研究领域不同，并发要比并行的抽象层次更高(上面的例子实际上是用“并行”技术支持了“并发”系统)，在具体应用中，也更加灵活呢(在有“并行”支持的“并发”系统上，也可以通过将相同的任务分发出去，来达到与“并行”相同的加速效果)？&#8221;"&#8221;</p>
<p>并行和并发都是编程范型，它们需要的底层基础设施支持有很大的重叠。它们本身我觉得并没有层次高低之分。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jackyz</title>
		<link>http://erlang-china.org/misc/parallel_processing_overview.html/comment-page-1#comment-12567</link>
		<dc:creator>jackyz</dc:creator>
		<pubDate>Fri, 10 Apr 2009 06:12:31 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=475#comment-12567</guid>
		<description>&lt;blockquote cite=&quot;#commentbody-12530&quot;&gt;
&lt;strong&gt;&lt;a href=&quot;#comment-12530&quot; rel=&quot;nofollow&quot;&gt;dsun&lt;/a&gt; :&lt;/strong&gt;
      并行就是为了通过多个处理器并行计算，让一个任务计算的更快。并发就是为了让多个无关的任务同时进行，这里的重点就是根据问题领域和场景区分出哪些是属于一个任务的计算，而哪些则根本就是不同的任务，以及设计的目标是什么。这是谈论并行还是并发的前提。
&lt;/blockquote&gt;

是否可以认为：“并行”的问题域是研究如何让“一个(相同的)任务”在“多个CPU”上跑得更快，换句话说，它只针对“一个(相同的)任务”，并且和“多个CPU”密切相关；而“并发”的问题域是研究如何让“多个任务”同时运行，它不强调被同时运行的多个任务是“一个(相同的)任务”，也和CPU的数量无关。

这里我不清楚的一点是，“并发”在概念上是否强调了这些被同时运行的多个任务，一定要是彼此不相同的呢？那么，如果某种情况下，这些被同时运行的多个任务其实就是“一个(相同的)任务”，此时，“并发”和“并行”之间的区别是否就只有“多个CPU”这么一条了呢？

更进一步，如果把“任务”概念扩大化，将“并发”系统在一个单CPU上的“运行实例”当作是“一个(相同的)任务”，通过“并行”手段，让它能在“多个CPU”上得到加速(貌似Erlang的SMP就是如此)。从这个意义上讲，我认为这两个概念在问题领域上的差异是：“并行”更强调“多核”，比如“显卡/CUDA/FPGA”的并行之类，似乎更接近硬件；而“并发”则更“抽象”一些，相比“并行”，要离硬件远一些(离软件更近一些)。

我们是否可以说，并发和并行的研究领域不同，并发要比并行的抽象层次更高(上面的例子实际上是用“并行”技术支持了“并发”系统)，在具体应用中，也更加灵活呢(在有“并行”支持的“并发”系统上，也可以通过将相同的任务分发出去，来达到与“并行”相同的加速效果)？

我不确定上面的理解是否正确，让我们把这个问题继续挖下去，搞清楚。</description>
		<content:encoded><![CDATA[<blockquote cite="#commentbody-12530"><p>
<strong><a href="#comment-12530" rel="nofollow">dsun</a> :</strong><br />
      并行就是为了通过多个处理器并行计算，让一个任务计算的更快。并发就是为了让多个无关的任务同时进行，这里的重点就是根据问题领域和场景区分出哪些是属于一个任务的计算，而哪些则根本就是不同的任务，以及设计的目标是什么。这是谈论并行还是并发的前提。
</p></blockquote>
<p>是否可以认为：“并行”的问题域是研究如何让“一个(相同的)任务”在“多个CPU”上跑得更快，换句话说，它只针对“一个(相同的)任务”，并且和“多个CPU”密切相关；而“并发”的问题域是研究如何让“多个任务”同时运行，它不强调被同时运行的多个任务是“一个(相同的)任务”，也和CPU的数量无关。</p>
<p>这里我不清楚的一点是，“并发”在概念上是否强调了这些被同时运行的多个任务，一定要是彼此不相同的呢？那么，如果某种情况下，这些被同时运行的多个任务其实就是“一个(相同的)任务”，此时，“并发”和“并行”之间的区别是否就只有“多个CPU”这么一条了呢？</p>
<p>更进一步，如果把“任务”概念扩大化，将“并发”系统在一个单CPU上的“运行实例”当作是“一个(相同的)任务”，通过“并行”手段，让它能在“多个CPU”上得到加速(貌似Erlang的SMP就是如此)。从这个意义上讲，我认为这两个概念在问题领域上的差异是：“并行”更强调“多核”，比如“显卡/CUDA/FPGA”的并行之类，似乎更接近硬件；而“并发”则更“抽象”一些，相比“并行”，要离硬件远一些(离软件更近一些)。</p>
<p>我们是否可以说，并发和并行的研究领域不同，并发要比并行的抽象层次更高(上面的例子实际上是用“并行”技术支持了“并发”系统)，在具体应用中，也更加灵活呢(在有“并行”支持的“并发”系统上，也可以通过将相同的任务分发出去，来达到与“并行”相同的加速效果)？</p>
<p>我不确定上面的理解是否正确，让我们把这个问题继续挖下去，搞清楚。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: IL</title>
		<link>http://erlang-china.org/misc/parallel_processing_overview.html/comment-page-1#comment-12566</link>
		<dc:creator>IL</dc:creator>
		<pubDate>Fri, 10 Apr 2009 04:40:19 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=475#comment-12566</guid>
		<description>OpenMP和MPI在烟酒僧阶段用过，OpenMP理念上类似.net 4.0里面的并行包。
MPI是对等并行，消息是广播式的。

erlang的process更自由，可以通讯，切非对等。</description>
		<content:encoded><![CDATA[<p>OpenMP和MPI在烟酒僧阶段用过，OpenMP理念上类似.net 4.0里面的并行包。<br />
MPI是对等并行，消息是广播式的。</p>
<p>erlang的process更自由，可以通讯，切非对等。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dsun</title>
		<link>http://erlang-china.org/misc/parallel_processing_overview.html/comment-page-1#comment-12532</link>
		<dc:creator>dsun</dc:creator>
		<pubDate>Wed, 08 Apr 2009 05:23:13 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=475#comment-12532</guid>
		<description>还以盖N座房子为例，我们可以让所有工人同时先砌墙，然后同时盖屋顶。。。，这个就有些数据并行的味道，不过和上面的那个任务并行一样，对于总体目标来说都是手段。

    因此在明确场景和目标的前提下，并行和并发其实是非常明确的概念。</description>
		<content:encoded><![CDATA[<p>还以盖N座房子为例，我们可以让所有工人同时先砌墙，然后同时盖屋顶。。。，这个就有些数据并行的味道，不过和上面的那个任务并行一样，对于总体目标来说都是手段。</p>
<p>    因此在明确场景和目标的前提下，并行和并发其实是非常明确的概念。</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dsun</title>
		<link>http://erlang-china.org/misc/parallel_processing_overview.html/comment-page-1#comment-12531</link>
		<dc:creator>dsun</dc:creator>
		<pubDate>Wed, 08 Apr 2009 05:19:30 +0000</pubDate>
		<guid isPermaLink="false">http://erlang-china.org/?p=475#comment-12531</guid>
		<description>比如说，要盖N座房子，如果以最快盖完为目标的话，则这肯定是个并行计算问题，你可以采用数据并行的手段，也可以采用任务并行的手段。我们可以让一部分人专门负责砌墙，一部分人专门负责盖屋顶，一部分人专门负责门窗。。。。，在这些工人看来他们是任务并发的，但是对于工程的总体目标来说只是达成总体并行的一种手段。</description>
		<content:encoded><![CDATA[<p>比如说，要盖N座房子，如果以最快盖完为目标的话，则这肯定是个并行计算问题，你可以采用数据并行的手段，也可以采用任务并行的手段。我们可以让一部分人专门负责砌墙，一部分人专门负责盖屋顶，一部分人专门负责门窗。。。。，在这些工人看来他们是任务并发的，但是对于工程的总体目标来说只是达成总体并行的一种手段。</p>
]]></content:encoded>
	</item>
</channel>
</rss>

