<?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: What He Said</title>
	<atom:link href="http://www.linux-mag.com/id/7087/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.linux-mag.com/id/7087/</link>
	<description>Open Source, Open Standards</description>
	<lastBuildDate>Sat, 05 Oct 2013 13:48:18 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
	<item>
		<title>By: dmpase</title>
		<link>http://www.linux-mag.com/id/7087/#comment-5726</link>
		<dc:creator>dmpase</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/7087/#comment-5726</guid>
		<description>Many years ago we at Floating-Point Systems had a more than serious flirtation with functional programming languages, as you have sometimes promoted as a solution to this problem. We defined a functional programming language called &quot;Flo&quot;, developed a compiler and parallel hardware to support that language and declared success. But it never sold (for many reasons, I suppose) so we promptly abandoned the idea in favor of more successful ideas. I&#039;m sure we were neither the first nor the last to do so. &lt;br /&gt;
&lt;br /&gt;
Ever since then I have pondered how we solve the problem of managing parallel complexity in large scale programs. Much of the difficulty lies in the nature of specifying what constitutes a correct program. If the specification is too high level, you may get what you asked for but not what you want. But the more detail you supply, the more it becomes like a programming language with all its associated problems and less like a correctness specification. &lt;br /&gt;
&lt;br /&gt;
About the most promising approach I have seen so far is the algorithmic skeleton. My first exposure to that was Murray Cole&#039;s book &quot;Algorithmic Skeletons&quot;. Extending the idea to parallel skeletons is not a far stretch and seems to strike a good balance between high-level specification and efficiency. I&#039;m sure such work is already under way. High level operators are already supported in MPI in the form of reduce, allreduce and other functions. They&#039;re ugly syntactically because they are MPI, but the concepts are there.&lt;br /&gt;
&lt;br /&gt;
While declaring the ultimate demise of computing due to high levels of parallelism does make for good entertainment, all I would really expect to see is the price of computation fall as parallel resources increase. When that happens we may not have single applications that can span significant fractions of the available compute power, say a million cores in a cluster. But virtually free compute power won&#039;t be left idle, either. It will instead be used for lower valued tasks.&lt;br /&gt;
&lt;br /&gt;
Douglas Pase, PhD</description>
		<content:encoded><![CDATA[<p>Many years ago we at Floating-Point Systems had a more than serious flirtation with functional programming languages, as you have sometimes promoted as a solution to this problem. We defined a functional programming language called &#8220;Flo&#8221;, developed a compiler and parallel hardware to support that language and declared success. But it never sold (for many reasons, I suppose) so we promptly abandoned the idea in favor of more successful ideas. I&#8217;m sure we were neither the first nor the last to do so. </p>
<p>Ever since then I have pondered how we solve the problem of managing parallel complexity in large scale programs. Much of the difficulty lies in the nature of specifying what constitutes a correct program. If the specification is too high level, you may get what you asked for but not what you want. But the more detail you supply, the more it becomes like a programming language with all its associated problems and less like a correctness specification. </p>
<p>About the most promising approach I have seen so far is the algorithmic skeleton. My first exposure to that was Murray Cole&#8217;s book &#8220;Algorithmic Skeletons&#8221;. Extending the idea to parallel skeletons is not a far stretch and seems to strike a good balance between high-level specification and efficiency. I&#8217;m sure such work is already under way. High level operators are already supported in MPI in the form of reduce, allreduce and other functions. They&#8217;re ugly syntactically because they are MPI, but the concepts are there.</p>
<p>While declaring the ultimate demise of computing due to high levels of parallelism does make for good entertainment, all I would really expect to see is the price of computation fall as parallel resources increase. When that happens we may not have single applications that can span significant fractions of the available compute power, say a million cores in a cluster. But virtually free compute power won&#8217;t be left idle, either. It will instead be used for lower valued tasks.</p>
<p>Douglas Pase, PhD</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mwolfe</title>
		<link>http://www.linux-mag.com/id/7087/#comment-5727</link>
		<dc:creator>mwolfe</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/7087/#comment-5727</guid>
		<description>Minor comment: You said that the modern compiler analysis and optimization would probably be called magic thirty years ago.  I&#039;ve been working in compilers for thirty years, and perhaps there are aspects of compilers where that&#039;s true (perhaps for very high level, post-object-oriented languages), but in the optimization, parallelization, vectorization space, there has been at best incremental improvements.  Data-flow analysis, loop parallelization, vectorization, all date back to the 1960s and 1970s.  PRE goes back to 1978.  The more recent widespread use of static single assignment (SSA) gives a convenient representation for analysis, but doesn&#039;t give fundamentally better results than data-flow.  The only significant improvement that I can think of is whole program analysis, which was unrealistic 30 years ago because system memory wasn&#039;t big enough to hold the results of such analysis.  Now it is.  For what it&#039;s worth.&lt;br /&gt;
&lt;br /&gt;
-Michael Wolfe  (Hi Dr. Pase)</description>
		<content:encoded><![CDATA[<p>Minor comment: You said that the modern compiler analysis and optimization would probably be called magic thirty years ago.  I&#8217;ve been working in compilers for thirty years, and perhaps there are aspects of compilers where that&#8217;s true (perhaps for very high level, post-object-oriented languages), but in the optimization, parallelization, vectorization space, there has been at best incremental improvements.  Data-flow analysis, loop parallelization, vectorization, all date back to the 1960s and 1970s.  PRE goes back to 1978.  The more recent widespread use of static single assignment (SSA) gives a convenient representation for analysis, but doesn&#8217;t give fundamentally better results than data-flow.  The only significant improvement that I can think of is whole program analysis, which was unrealistic 30 years ago because system memory wasn&#8217;t big enough to hold the results of such analysis.  Now it is.  For what it&#8217;s worth.</p>
<p>-Michael Wolfe  (Hi Dr. Pase)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: bixbyru</title>
		<link>http://www.linux-mag.com/id/7087/#comment-5728</link>
		<dc:creator>bixbyru</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/7087/#comment-5728</guid>
		<description>Wow. That&#039;s a excellent little vignette and a great suggestion for the killer application.&lt;br /&gt;
&lt;br /&gt;
That said, I suppose that I fear change. My mind was honed pouring over assembly programmes, optimising them for size and speed.&lt;br /&gt;
&lt;br /&gt;
If I could shave a few instructions, I might take another block (half K) off the image size, a significant consideration when the entire storage was one 35 MB washing machine.&lt;br /&gt;
&lt;br /&gt;
While the &quot;real programme&quot; has been obscured since creation of the first compiler, I find the idea of &quot;programming&quot; in &quot;PDL&quot; to be truly alien, and a bit freakish.&lt;br /&gt;
&lt;br /&gt;
I&#039;d draw a parallel to modern electronics (especially digital) in which there is no fixed, discrete design.&lt;br /&gt;
&lt;br /&gt;
While &#039;twould be truly miraculous to be able to ask my computer to create an ad hoc application based upon my whim of the moment, a part of me will always long for the source listing.&lt;br /&gt;
&lt;br /&gt;
We will have lost something important.  We will have also gained more than we lost, but there will still be the ache of amputation.&lt;br /&gt;
&lt;br /&gt;
Ah well, the tyrannosaur was likely no fan of progress.&lt;br /&gt;
&lt;br /&gt;
Cheers, &lt;br /&gt;
&lt;br /&gt;
Russ Bixby, geek of the plains&lt;br /&gt;
&lt;br /&gt;
&quot;What&#039;s the bandwidth of localhost?&quot;</description>
		<content:encoded><![CDATA[<p>Wow. That&#8217;s a excellent little vignette and a great suggestion for the killer application.</p>
<p>That said, I suppose that I fear change. My mind was honed pouring over assembly programmes, optimising them for size and speed.</p>
<p>If I could shave a few instructions, I might take another block (half K) off the image size, a significant consideration when the entire storage was one 35 MB washing machine.</p>
<p>While the &#8220;real programme&#8221; has been obscured since creation of the first compiler, I find the idea of &#8220;programming&#8221; in &#8220;PDL&#8221; to be truly alien, and a bit freakish.</p>
<p>I&#8217;d draw a parallel to modern electronics (especially digital) in which there is no fixed, discrete design.</p>
<p>While &#8216;twould be truly miraculous to be able to ask my computer to create an ad hoc application based upon my whim of the moment, a part of me will always long for the source listing.</p>
<p>We will have lost something important.  We will have also gained more than we lost, but there will still be the ache of amputation.</p>
<p>Ah well, the tyrannosaur was likely no fan of progress.</p>
<p>Cheers, </p>
<p>Russ Bixby, geek of the plains</p>
<p>&#8220;What&#8217;s the bandwidth of localhost?&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dwilde1</title>
		<link>http://www.linux-mag.com/id/7087/#comment-5729</link>
		<dc:creator>dwilde1</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/7087/#comment-5729</guid>
		<description>Am I missing something? We have the killer app: weather analysis and other similar things like visual portrayals of Finite Element Analysis and DiffEq runs. &lt;br /&gt;
&lt;br /&gt;
Not to mention my kid&#039;s game machines. 8+1 core Cell processors aren&#039;t going to cut it for very long, and my last perusal of the Stanford Folding@Home READMEs hinted that the graphics processors were scaling core count through the roof and that they were quite happily making use of them. &lt;br /&gt;
&lt;br /&gt;
Another prediction: just as home video became more real and hi-res cameras are now $449 commodities, the Linux and FreeBSD clusters that do animation and architectural rendering will scale to the deskside within the next 5 years.&lt;br /&gt;
&lt;br /&gt;
Sure, these are not going to sell gazillions of PCs or MPPs in the next two weeks, but we will see an explosion of visualization-enabled reality simulations that will start showing up next to desktops and gaming joysticks (hopefully) near you Real Soon Now.&lt;br /&gt;
&lt;br /&gt;
I think back to my first bare board 8086 with 2kx16 of RAM and a similar amount of UV EPROM, and I start to giggle insanely when I realize that the 2GB USB key I toss in my pocket has more CPU juice than it did.&lt;br /&gt;
&lt;br /&gt;
None of which is meant to disagree with anything said. I think the most cogent point you both make is that money people have to see value in the same way that they grokked and then bought spreadsheets on PCs. Having a great analysis won&#039;t save or make money until some bright bulb figures out what to do with it besides play.&lt;br /&gt;
&lt;br /&gt;
-- Don Wilde&lt;br /&gt;
no egg on my mortarboard, but I do work &lt;br /&gt;
for a rather large commodity PC maker</description>
		<content:encoded><![CDATA[<p>Am I missing something? We have the killer app: weather analysis and other similar things like visual portrayals of Finite Element Analysis and DiffEq runs. </p>
<p>Not to mention my kid&#8217;s game machines. 8+1 core Cell processors aren&#8217;t going to cut it for very long, and my last perusal of the Stanford Folding@Home READMEs hinted that the graphics processors were scaling core count through the roof and that they were quite happily making use of them. </p>
<p>Another prediction: just as home video became more real and hi-res cameras are now $449 commodities, the Linux and FreeBSD clusters that do animation and architectural rendering will scale to the deskside within the next 5 years.</p>
<p>Sure, these are not going to sell gazillions of PCs or MPPs in the next two weeks, but we will see an explosion of visualization-enabled reality simulations that will start showing up next to desktops and gaming joysticks (hopefully) near you Real Soon Now.</p>
<p>I think back to my first bare board 8086 with 2kx16 of RAM and a similar amount of UV EPROM, and I start to giggle insanely when I realize that the 2GB USB key I toss in my pocket has more CPU juice than it did.</p>
<p>None of which is meant to disagree with anything said. I think the most cogent point you both make is that money people have to see value in the same way that they grokked and then bought spreadsheets on PCs. Having a great analysis won&#8217;t save or make money until some bright bulb figures out what to do with it besides play.</p>
<p>&#8211; Don Wilde<br />
no egg on my mortarboard, but I do work <br />
for a rather large commodity PC maker</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gregpfister</title>
		<link>http://www.linux-mag.com/id/7087/#comment-5730</link>
		<dc:creator>gregpfister</dc:creator>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.linux-mag.com/id/7087/#comment-5730</guid>
		<description>Thanks for the kind words, Douglas. It&#039;s good to find a kindred spirit. Everyone one else seems to either be ignoring the issue, bypassing it with virtualization, or trying to profit from it by selling lessons in how to parallel program (not a bad personal solution).&lt;br /&gt;
&lt;br /&gt;
I do say that what everybody uses is MPI (mainly) and OpenMP (some). I just don&#039;t consider those languages. As you say, they&#039;re APIs.&lt;br /&gt;
&lt;br /&gt;
One thing I do want to bring up: When I say &quot;killer app&quot; I think you understand but need to emphasize that it must be a client app, on the grounds that only clients have the volumes to justify the fabs. (See my &quot;Clarifying the Black Hole&quot; post.) There are many parallel server apps; no problem there. (See &quot;IT Departments Should NOT fear Multicore&quot; and elsewhere), But server volumes aren&#039;t even visible next to clients.&lt;br /&gt;
&lt;br /&gt;
Right now, it looks like those volumes are going to come from cell phones and other mobile applications, coming up from the bottom like PCs rose to meet workstations, with everybody stopping in the same place. I think I find this depressing. But a 32-way single-chip client is something I find, well, closer to terrifying.&lt;br /&gt;
&lt;br /&gt;
- Greg Pfister</description>
		<content:encoded><![CDATA[<p>Thanks for the kind words, Douglas. It&#8217;s good to find a kindred spirit. Everyone one else seems to either be ignoring the issue, bypassing it with virtualization, or trying to profit from it by selling lessons in how to parallel program (not a bad personal solution).</p>
<p>I do say that what everybody uses is MPI (mainly) and OpenMP (some). I just don&#8217;t consider those languages. As you say, they&#8217;re APIs.</p>
<p>One thing I do want to bring up: When I say &#8220;killer app&#8221; I think you understand but need to emphasize that it must be a client app, on the grounds that only clients have the volumes to justify the fabs. (See my &#8220;Clarifying the Black Hole&#8221; post.) There are many parallel server apps; no problem there. (See &#8220;IT Departments Should NOT fear Multicore&#8221; and elsewhere), But server volumes aren&#8217;t even visible next to clients.</p>
<p>Right now, it looks like those volumes are going to come from cell phones and other mobile applications, coming up from the bottom like PCs rose to meet workstations, with everybody stopping in the same place. I think I find this depressing. But a 32-way single-chip client is something I find, well, closer to terrifying.</p>
<p>- Greg Pfister</p>
]]></content:encoded>
	</item>
</channel>
</rss>