<?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: How-to Split a Problem into Tasks</title>
	<atom:link href="http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/</link>
	<description>A Blog on Parallel Programming and Concurrency by Michael Suess</description>
	<pubDate>Thu, 11 Mar 2010 23:51:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Mathieu&#8217;s log &#187; Blog Archive &#187; Easy parallelization with data decomposition</title>
		<link>http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/comment-page-1/#comment-98331</link>
		<dc:creator>Mathieu&#8217;s log &#187; Blog Archive &#187; Easy parallelization with data decomposition</dc:creator>
		<pubDate>Fri, 27 Nov 2009 23:53:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/#comment-98331</guid>
		<description>[...] make things simpler, let me quote the excellent blog post How-to Split a Problem into Tasks.  The very first step in every successful parallelization effort is always the same: you take a [...]</description>
		<content:encoded><![CDATA[<p>[...] make things simpler, let me quote the excellent blog post How-to Split a Problem into Tasks.  The very first step in every successful parallelization effort is always the same: you take a [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Carl Turner</title>
		<link>http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/comment-page-1/#comment-37655</link>
		<dc:creator>Carl Turner</dc:creator>
		<pubDate>Fri, 28 Dec 2007 14:40:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/#comment-37655</guid>
		<description>I linked to your description of problem decomposition in my own blog. My blog entry describes the results of failing to properly decompose a problem, a design anti-pattern I called &lt;a href="http://triangleinnovation.blogspot.com/2007/12/design-anti-patterns-exploding-whale.html" rel="nofollow"&gt;Exploding Whale&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>I linked to your description of problem decomposition in my own blog. My blog entry describes the results of failing to properly decompose a problem, a design anti-pattern I called <a href="http://triangleinnovation.blogspot.com/2007/12/design-anti-patterns-exploding-whale.html" rel="nofollow">Exploding Whale</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Reinhardt</title>
		<link>http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/comment-page-1/#comment-26774</link>
		<dc:creator>Steve Reinhardt</dc:creator>
		<pubDate>Sun, 14 Oct 2007 13:39:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/#comment-26774</guid>
		<description>We've been working on parallel constructs for very high-level languages (Python, MATLAB(R), and R) that are suitable for programmers who are not expert in parallelism and who do not want to invest the time to become expert in parallelism.  We now have a fair amount of evidence that data decomposition as a concept works for many programmers.  We've implemented both data-parallel and task-parallel flavors, with each having its strengths and weaknesses.  (See discussion of these at  http://isc.hubspot.com/starp_blog/tabid/8706/bid/2464/Types-of-Parallelism-Task-Parallelism.aspx.)  Extending the task-parallel approach to include communication looks like it will require some careful thought about what the right abstractions are, to keep the conceptual complexity within reason.

Functional decomposition looks valuable, though as you note, its scalability is often limited.  I've run into an interesting twist on functional decomposition (perhaps with a note of speculative decomposition in it as well), where people have different algorithms (one example is from image processing) and they don't know in advance which algorithm will work best on the data in question.  So, they just run all the candidate algorithms in parallel and choose the best answer.  

As for recursive decomposition, I question whether this is something that typical programmers will readily accept.  I know for us computer science types recursion is a powerful tool, but for most of the rest of the planet it doesn't seem intuitive.  Perhaps the right abstractions could help overcome this.</description>
		<content:encoded><![CDATA[<p>We&#8217;ve been working on parallel constructs for very high-level languages (Python, MATLAB(R), and R) that are suitable for programmers who are not expert in parallelism and who do not want to invest the time to become expert in parallelism.  We now have a fair amount of evidence that data decomposition as a concept works for many programmers.  We&#8217;ve implemented both data-parallel and task-parallel flavors, with each having its strengths and weaknesses.  (See discussion of these at  <a href="http://isc.hubspot.com/starp_blog/tabid/8706/bid/2464/Types-of-Parallelism-Task-Parallelism.aspx" rel="nofollow">http://isc.hubspot.com/starp_blog/tabid/8706/bid/2464/Types-of-Parallelism-Task-Parallelism.aspx</a>.)  Extending the task-parallel approach to include communication looks like it will require some careful thought about what the right abstractions are, to keep the conceptual complexity within reason.</p>
<p>Functional decomposition looks valuable, though as you note, its scalability is often limited.  I&#8217;ve run into an interesting twist on functional decomposition (perhaps with a note of speculative decomposition in it as well), where people have different algorithms (one example is from image processing) and they don&#8217;t know in advance which algorithm will work best on the data in question.  So, they just run all the candidate algorithms in parallel and choose the best answer.  </p>
<p>As for recursive decomposition, I question whether this is something that typical programmers will readily accept.  I know for us computer science types recursion is a powerful tool, but for most of the rest of the planet it doesn&#8217;t seem intuitive.  Perhaps the right abstractions could help overcome this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: problem decomposition &#171; eORmap</title>
		<link>http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/comment-page-1/#comment-23295</link>
		<dc:creator>problem decomposition &#171; eORmap</dc:creator>
		<pubDate>Sat, 15 Sep 2007 10:09:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/#comment-23295</guid>
		<description>[...] и speculative decomposition. Если возникли трудности - читайте How-to Split a Problem into Tasks. Статья особенно интересна людям с опытом [...]</description>
		<content:encoded><![CDATA[<p>[...] и speculative decomposition. Если возникли трудности - читайте How-to Split a Problem into Tasks. Статья особенно интересна людям с опытом [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitriy Setrakyan</title>
		<link>http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/comment-page-1/#comment-23082</link>
		<dc:creator>Dmitriy Setrakyan</dc:creator>
		<pubDate>Thu, 13 Sep 2007 18:46:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/#comment-23082</guid>
		<description>Hi.

Great outline of various decomposition techniques. I actually never separated Recursive Decomposition and Data Decomposition in my mind, but you are right - they are different, although often used together. 

A good special case to mention is Recursive Decomposition with depth of one (1). This one is most commonly used in my opinion.

Best,
Dmitriy Setrakyan
&lt;a href="http://www.gridgain.com" rel="nofollow"&gt;GridGain - Grid Computing Made Simple&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Hi.</p>
<p>Great outline of various decomposition techniques. I actually never separated Recursive Decomposition and Data Decomposition in my mind, but you are right - they are different, although often used together. </p>
<p>A good special case to mention is Recursive Decomposition with depth of one (1). This one is most commonly used in my opinion.</p>
<p>Best,<br />
Dmitriy Setrakyan<br />
<a href="http://www.gridgain.com" rel="nofollow">GridGain - Grid Computing Made Simple</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Decomposition Techniques &#124; iface thoughts</title>
		<link>http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/comment-page-1/#comment-22667</link>
		<dc:creator>Decomposition Techniques &#124; iface thoughts</dc:creator>
		<pubDate>Mon, 10 Sep 2007 13:35:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/#comment-22667</guid>
		<description>[...] Suess gives an introduction to various decomposiion techniques to split the problem into sub-problems. While Michael starts with reference to parallel [...]</description>
		<content:encoded><![CDATA[<p>[...] Suess gives an introduction to various decomposiion techniques to split the problem into sub-problems. While Michael starts with reference to parallel [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Minesh B. Amin</title>
		<link>http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/comment-page-1/#comment-22209</link>
		<dc:creator>Minesh B. Amin</dc:creator>
		<pubDate>Thu, 06 Sep 2007 19:37:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/#comment-22209</guid>
		<description>Have one interesting case: a collection of fine grain tasks that:
    +) need to be executed in parallel (obvious goal)
    +) but Quality of Result depends on each compute resource
         having access to the __complete__ list of the aforementioned
         fine grain tasks (the trick is to do this in a scalable manner)

The reason: a task, when done, can be leveraged to prune a list of
pending tasks, but this information is only available in real-time; i.e.
one cannot precompute this, rather critical, piece of information
ahead of time.

Now, why is this important? Simply because this is the key when implementing
scalable SAT solvers; in fact, this is the only way to do it :)</description>
		<content:encoded><![CDATA[<p>Have one interesting case: a collection of fine grain tasks that:<br />
    +) need to be executed in parallel (obvious goal)<br />
    +) but Quality of Result depends on each compute resource<br />
         having access to the __complete__ list of the aforementioned<br />
         fine grain tasks (the trick is to do this in a scalable manner)</p>
<p>The reason: a task, when done, can be leveraged to prune a list of<br />
pending tasks, but this information is only available in real-time; i.e.<br />
one cannot precompute this, rather critical, piece of information<br />
ahead of time.</p>
<p>Now, why is this important? Simply because this is the key when implementing<br />
scalable SAT solvers; in fact, this is the only way to do it <img src='http://www.thinkingparallel.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Petrov Alexander</title>
		<link>http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/comment-page-1/#comment-22174</link>
		<dc:creator>Petrov Alexander</dc:creator>
		<pubDate>Thu, 06 Sep 2007 15:32:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/09/06/how-to-split-a-problem-into-tasks/#comment-22174</guid>
		<description>Good things at the same time, in one place. Thank you.</description>
		<content:encoded><![CDATA[<p>Good things at the same time, in one place. Thank you.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
