<?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"
	>
<channel>
	<title>Comments for Thinking Parallel</title>
	<atom:link href="http://www.thinkingparallel.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thinkingparallel.com</link>
	<description>A Blog on Parallel Programming and Concurrency by Michael Suess</description>
	<pubDate>Fri, 09 May 2008 20:30:40 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
		<item>
		<title>Comment on Is the Multi-Core Revolution a Hype? by Squirrl</title>
		<link>http://www.thinkingparallel.com/2007/08/21/is-the-multi-core-revolution-a-hype/#comment-55039</link>
		<dc:creator>Squirrl</dc:creator>
		<pubDate>Tue, 01 Apr 2008 21:02:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/08/21/is-the-multi-core-revolution-a-hype/#comment-55039</guid>
		<description>Just read the article:

The real problem exists in determining the critical section of your source code.  Game Developer or Hobiest, you still have to deal with splitting up what parts you want to run where.   As of now I don't know of any smart scheduler that will handle that for you.  

Recalling what I read of PS3 developers, they had to either run sections of sound, video, mesh parsers on individual cores or designate critical sections to some sort of scheduler.

Nobody really knows what will work best.  It takes development time that nobody seems to have anymore.   It's all about release dates.   But that is a story for another time.

I have a dual-core 32-bit intel laptop.  My real problem with the industry is that my parents' single core 32/64-bit amd desktop leaves it behind as one would a bad dream.  

What happens is if you want real performance then you need real tools.   Logic sims for the processor and assembler commands "reference code, docs, .
You really need to know the architecture you are working on.  Registers if you will.   Think about the Jaguar, Atari developers.  They knew the processors and interleave times.  Once you have all that information gathered you can start programming for your then out of date processor which is another problem with the industry.</description>
		<content:encoded><![CDATA[<p>Just read the article:</p>
<p>The real problem exists in determining the critical section of your source code.  Game Developer or Hobiest, you still have to deal with splitting up what parts you want to run where.   As of now I don&#8217;t know of any smart scheduler that will handle that for you.  </p>
<p>Recalling what I read of PS3 developers, they had to either run sections of sound, video, mesh parsers on individual cores or designate critical sections to some sort of scheduler.</p>
<p>Nobody really knows what will work best.  It takes development time that nobody seems to have anymore.   It&#8217;s all about release dates.   But that is a story for another time.</p>
<p>I have a dual-core 32-bit intel laptop.  My real problem with the industry is that my parents&#8217; single core 32/64-bit amd desktop leaves it behind as one would a bad dream.  </p>
<p>What happens is if you want real performance then you need real tools.   Logic sims for the processor and assembler commands &#8220;reference code, docs, .<br />
You really need to know the architecture you are working on.  Registers if you will.   Think about the Jaguar, Atari developers.  They knew the processors and interleave times.  Once you have all that information gathered you can start programming for your then out of date processor which is another problem with the industry.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Mutual Exclusion with Locks - an Introduction by varun</title>
		<link>http://www.thinkingparallel.com/2006/09/09/mutual-exclusion-with-locks-an-introduction/#comment-54489</link>
		<dc:creator>varun</dc:creator>
		<pubDate>Sun, 30 Mar 2008 09:32:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2006/09/09/mutual-exclusion-with-locks-an-introduction/#comment-54489</guid>
		<description>Can you please tel me when the mutex and spinlock is useful,

I mean,  in case of uniprocessor and multiprocessor environment.

As per as my knowledge is concerned, in uniprocessor , we should use mutex and in multiprocessor, we should use spin lock.??

Please explain is it right or wrong?</description>
		<content:encoded><![CDATA[<p>Can you please tel me when the mutex and spinlock is useful,</p>
<p>I mean,  in case of uniprocessor and multiprocessor environment.</p>
<p>As per as my knowledge is concerned, in uniprocessor , we should use mutex and in multiprocessor, we should use spin lock.??</p>
<p>Please explain is it right or wrong?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on C++ vs. C# - a Checklist from a C++ Programmers Point of View by Dragontamer</title>
		<link>http://www.thinkingparallel.com/2007/03/06/c-vs-c-a-checklist-from-a-c-programmers-point-of-view/#comment-54425</link>
		<dc:creator>Dragontamer</dc:creator>
		<pubDate>Sun, 30 Mar 2008 00:50:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/03/06/c-vs-c-a-checklist-from-a-c-programmers-point-of-view/#comment-54425</guid>
		<description>I don't really know C# and I appreciate the list... but I do know C++ and would like to make a few comments if you don't mind.

    * garbage collection

C++ has 3rd party garbage collection, and in all flavors too. You can get a reference counting GC or use a Mark and Sweep one or whatever other algorithms are out there. They work pretty well and override the global operator "new" function. Check out Stroustrup's FAQs for pointers on this part. http://www.research.att.com/~bs/bs_faq.html#garbage-collection

    * array bounds checking

Just pointing out that you can use std::vector.at() and you'll get bounds checking. I find it hard to think of situations when I'd use an array over a std::vector.

    * built-in support for threads

A valid complaint, just noting that C++0x will hopefully rectify that situation :-) (Stroustrup says "C++0x will almost certainly include a threads library." in his FAQ).

    * no fall-through on switch-statements
    * arithmetic operations can be checked for overflow if required

These sound pretty awesome. I'll have to look into C# just for these feature alone.

    * objects must have a definite value before being used

I'm somewhat confused by what you mean about this. If you don't provide a default constructor in C++, you are forced to initialize every object, or else you get a compile time error. Perhaps you mean primitives must have definite values?</description>
		<content:encoded><![CDATA[<p>I don&#8217;t really know C# and I appreciate the list&#8230; but I do know C++ and would like to make a few comments if you don&#8217;t mind.</p>
<p>    * garbage collection</p>
<p>C++ has 3rd party garbage collection, and in all flavors too. You can get a reference counting GC or use a Mark and Sweep one or whatever other algorithms are out there. They work pretty well and override the global operator &#8220;new&#8221; function. Check out Stroustrup&#8217;s FAQs for pointers on this part. <a href="http://www.research.att.com/~bs/bs_faq.html#garbage-collection" rel="nofollow">http://www.research.att.com/~bs/bs_faq.html#garbage-collection</a></p>
<p>    * array bounds checking</p>
<p>Just pointing out that you can use std::vector.at() and you&#8217;ll get bounds checking. I find it hard to think of situations when I&#8217;d use an array over a std::vector.</p>
<p>    * built-in support for threads</p>
<p>A valid complaint, just noting that C++0x will hopefully rectify that situation <img src='http://www.thinkingparallel.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> (Stroustrup says &#8220;C++0x will almost certainly include a threads library.&#8221; in his FAQ).</p>
<p>    * no fall-through on switch-statements<br />
    * arithmetic operations can be checked for overflow if required</p>
<p>These sound pretty awesome. I&#8217;ll have to look into C# just for these feature alone.</p>
<p>    * objects must have a definite value before being used</p>
<p>I&#8217;m somewhat confused by what you mean about this. If you don&#8217;t provide a default constructor in C++, you are forced to initialize every object, or else you get a compile time error. Perhaps you mean primitives must have definite values?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Update: A Smart Way to Send a std::vector with MPI - and why it Fails by Mahantesh</title>
		<link>http://www.thinkingparallel.com/2007/02/08/a-smart-way-to-send-a-stdvector-with-mpi-and-why-it-fails/#comment-51315</link>
		<dc:creator>Mahantesh</dc:creator>
		<pubDate>Wed, 12 Mar 2008 17:32:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/02/08/a-smart-way-to-send-a-stdvector-with-mpi-and-why-it-fails/#comment-51315</guid>
		<description>Thanks! this works for me. I usually do vec1.reserve(N) within try and catch and reserve its place. The next operation will be .resize(N), that way you can hope for O(N) ((will not have to move data around if N is large.</description>
		<content:encoded><![CDATA[<p>Thanks! this works for me. I usually do vec1.reserve(N) within try and catch and reserve its place. The next operation will be .resize(N), that way you can hope for O(N) ((will not have to move data around if N is large.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Recommended Books on Parallel Programming by Anthony Williams</title>
		<link>http://www.thinkingparallel.com/recommended-books-on-parallel-programming/#comment-51082</link>
		<dc:creator>Anthony Williams</dc:creator>
		<pubDate>Tue, 11 Mar 2008 14:14:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/recommended-books-on-parallel-programming/#comment-51082</guid>
		<description>I'd like to second Guarav's recommendation of "Patterns for Parallel Programming". I've reviewed it on my website: http://www.justsoftwaresolutions.co.uk/reviews/patterns_for_parallel_programming_review.html</description>
		<content:encoded><![CDATA[<p>I&#8217;d like to second Guarav&#8217;s recommendation of &#8220;Patterns for Parallel Programming&#8221;. I&#8217;ve reviewed it on my website: <a href="http://www.justsoftwaresolutions.co.uk/reviews/patterns_for_parallel_programming_review.html" rel="nofollow">http://www.justsoftwaresolutions.co.uk/reviews/patterns_for_parallel_programming_review.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Is the Multi-Core Revolution a Hype? by Stefan</title>
		<link>http://www.thinkingparallel.com/2007/08/21/is-the-multi-core-revolution-a-hype/#comment-49152</link>
		<dc:creator>Stefan</dc:creator>
		<pubDate>Sat, 01 Mar 2008 21:35:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/08/21/is-the-multi-core-revolution-a-hype/#comment-49152</guid>
		<description>What to call a "crisis"

My first question is who cares about that multicore crisis? Should I care? And if, why?
We are talking about a problem software developers have or maybe will have (oh yes, WE already had the crisis in 1999). All developers? Me? No. Not me. Why?

Let me go into greater detail to explain what I mean. As cpus became faster and faster new CASE tools became available that allowdevelopers using more and more abstract designs for application development. Those tools create code, integrate libraries and put general purpose code into your application. The effect is a shorter time to market paid with more calculation overhead.

An example: Create a hello world application in 1970, 1990 and 2008. They all will say "Hello world" but the first will run 5000 cpu cycles, the second 500,000 and the last more than 10,000,000 cycles. The hello world app of 2008 won't be slower though. Why? Because the cpu it will run on is more than 10,000 times faster that that of 1970.

Now back to the crisis. My problem is that the application I just created dosn't meet the performance requirements on the target architecture. A faster cpu isn't available and it doesn't scale in a multicore environment. You can call that a multicore crisis if you want. Why not call it an overhead crisis?

There is so called redshifting business, right. Google, Ebay and the military won't solve their capacity problems by going back to assembler programming. But as smoothspan wrote in his blog in 2007 - they already have a solution! So they aren't hit by the crisis right now and won't be in the nearer future.

Maybe the mid-sized software companies are. Those that deliver 95% of the applications in use by 95% of the people. Those that deliver applications that don't scale well in multicore environments. Those that use the tools that generate code that keeps a cpu busy with overhead most of the time. Runtime analysis of legacy software systems (that, in my opinion, make up more than 50% of all software systems) shows that a cpu spends most of its time in calculating things the programmer has no idea of. Listen to them, they will tell you something like "what the hell is ..." or "which crazy bastard created that routine?".

Back to my optimization problem. I don't have the knowledge and skills to transform my algorithms in well scaling parallel ones. Maybe I get it running on two cpus, maybe on four. But N is unreachable. But if I had, I wouldn't do it anyways. This is mainly a question of my application doing the right things rather than doing the (wrong) things right (in this case: faster).

As long as applications are as described there will be no multicore crisis. Today's business applications don't perform operations 10,000 times more complex than those of 1970. Because today's cpus deliver 10,000 times more calculation power there is no need for more cpus. After that it is all about a cost problem. The question is: Is parallel programming cheaper than creating less redundant code?</description>
		<content:encoded><![CDATA[<p>What to call a &#8220;crisis&#8221;</p>
<p>My first question is who cares about that multicore crisis? Should I care? And if, why?<br />
We are talking about a problem software developers have or maybe will have (oh yes, WE already had the crisis in 1999). All developers? Me? No. Not me. Why?</p>
<p>Let me go into greater detail to explain what I mean. As cpus became faster and faster new CASE tools became available that allowdevelopers using more and more abstract designs for application development. Those tools create code, integrate libraries and put general purpose code into your application. The effect is a shorter time to market paid with more calculation overhead.</p>
<p>An example: Create a hello world application in 1970, 1990 and 2008. They all will say &#8220;Hello world&#8221; but the first will run 5000 cpu cycles, the second 500,000 and the last more than 10,000,000 cycles. The hello world app of 2008 won&#8217;t be slower though. Why? Because the cpu it will run on is more than 10,000 times faster that that of 1970.</p>
<p>Now back to the crisis. My problem is that the application I just created dosn&#8217;t meet the performance requirements on the target architecture. A faster cpu isn&#8217;t available and it doesn&#8217;t scale in a multicore environment. You can call that a multicore crisis if you want. Why not call it an overhead crisis?</p>
<p>There is so called redshifting business, right. Google, Ebay and the military won&#8217;t solve their capacity problems by going back to assembler programming. But as smoothspan wrote in his blog in 2007 - they already have a solution! So they aren&#8217;t hit by the crisis right now and won&#8217;t be in the nearer future.</p>
<p>Maybe the mid-sized software companies are. Those that deliver 95% of the applications in use by 95% of the people. Those that deliver applications that don&#8217;t scale well in multicore environments. Those that use the tools that generate code that keeps a cpu busy with overhead most of the time. Runtime analysis of legacy software systems (that, in my opinion, make up more than 50% of all software systems) shows that a cpu spends most of its time in calculating things the programmer has no idea of. Listen to them, they will tell you something like &#8220;what the hell is &#8230;&#8221; or &#8220;which crazy bastard created that routine?&#8221;.</p>
<p>Back to my optimization problem. I don&#8217;t have the knowledge and skills to transform my algorithms in well scaling parallel ones. Maybe I get it running on two cpus, maybe on four. But N is unreachable. But if I had, I wouldn&#8217;t do it anyways. This is mainly a question of my application doing the right things rather than doing the (wrong) things right (in this case: faster).</p>
<p>As long as applications are as described there will be no multicore crisis. Today&#8217;s business applications don&#8217;t perform operations 10,000 times more complex than those of 1970. Because today&#8217;s cpus deliver 10,000 times more calculation power there is no need for more cpus. After that it is all about a cost problem. The question is: Is parallel programming cheaper than creating less redundant code?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Installing the Intel Compiler on Ubuntu Linux by Giuseppe</title>
		<link>http://www.thinkingparallel.com/2006/12/23/installing-the-intel-compiler-on-ubuntu-linux/#comment-49053</link>
		<dc:creator>Giuseppe</dc:creator>
		<pubDate>Sat, 01 Mar 2008 12:42:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2006/12/23/installing-the-intel-compiler-on-ubuntu-linux/#comment-49053</guid>
		<description>You are _fully_ right,Rushikesh!
The proper environment commands for Fortran Intel compilation from any location is yours, in 4 steps like below carried out directly from $ prompt:

1) $PATH=$PATH:/opt/intel/cc/9.1.044/bin (enter)
2) $export PATH (enter)
3) $LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/cc/9.1.044/lib (enter)
4) $export LD_LIBRARY_PATH (enter)

Thanks to all</description>
		<content:encoded><![CDATA[<p>You are _fully_ right,Rushikesh!<br />
The proper environment commands for Fortran Intel compilation from any location is yours, in 4 steps like below carried out directly from $ prompt:</p>
<p>1) $PATH=$PATH:/opt/intel/cc/9.1.044/bin (enter)<br />
2) $export PATH (enter)<br />
3) $LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/cc/9.1.044/lib (enter)<br />
4) $export LD_LIBRARY_PATH (enter)</p>
<p>Thanks to all</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Ten Questions with Joe Duffy about Parallel Programming and .NET Threads by d</title>
		<link>http://www.thinkingparallel.com/2007/04/18/ten-questions-with-joe-duffy-about-parallel-programming-and-net-threads/#comment-48400</link>
		<dc:creator>d</dc:creator>
		<pubDate>Tue, 26 Feb 2008 20:19:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/04/18/ten-questions-with-joe-duffy-about-parallel-programming-and-net-threads/#comment-48400</guid>
		<description>Q: What do you think about. . .?

A: Go Read &lt;em&gt;myblog&lt;/em&gt;

Q: But what about . . .?

A: Go Read &lt;em&gt;myblog&lt;/em&gt;

Tell us something useful here since this is the page we actually wanted to come to, not &lt;em&gt;myblog&lt;/em&gt;</description>
		<content:encoded><![CDATA[<p>Q: What do you think about. . .?</p>
<p>A: Go Read <em>myblog</em></p>
<p>Q: But what about . . .?</p>
<p>A: Go Read <em>myblog</em></p>
<p>Tell us something useful here since this is the page we actually wanted to come to, not <em>myblog</em></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Installing the Intel Compiler on Ubuntu Linux by Rushikesh Matkar</title>
		<link>http://www.thinkingparallel.com/2006/12/23/installing-the-intel-compiler-on-ubuntu-linux/#comment-45889</link>
		<dc:creator>Rushikesh Matkar</dc:creator>
		<pubDate>Wed, 13 Feb 2008 05:26:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2006/12/23/installing-the-intel-compiler-on-ubuntu-linux/#comment-45889</guid>
		<description>Thanks for the excellent tutorial...
I would like to point out that the path statements should be amended in the ~/.bashrc or ~/.profile as follows

PATH=$PATH:/opt/intel/cc/9.1.044/bin/
export PATH
   
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/cc/9.1.044/lib
export LD_LIBRARY_PATH

I just downloaded 10.1.008 from intels website and everything works perfectly on ubuntu gutsy 7.10

I have a pentium celeron 556 Mhz 384 mb ram computer with linux installed

Thanks again for the excellent tutorial...</description>
		<content:encoded><![CDATA[<p>Thanks for the excellent tutorial&#8230;<br />
I would like to point out that the path statements should be amended in the ~/.bashrc or ~/.profile as follows</p>
<p>PATH=$PATH:/opt/intel/cc/9.1.044/bin/<br />
export PATH</p>
<p>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/cc/9.1.044/lib<br />
export LD_LIBRARY_PATH</p>
<p>I just downloaded 10.1.008 from intels website and everything works perfectly on ubuntu gutsy 7.10</p>
<p>I have a pentium celeron 556 Mhz 384 mb ram computer with linux installed</p>
<p>Thanks again for the excellent tutorial&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Some Fresh News on OpenMP by Milos</title>
		<link>http://www.thinkingparallel.com/2007/06/12/some-fresh-news-on-openmp/#comment-45346</link>
		<dc:creator>Milos</dc:creator>
		<pubDate>Sat, 09 Feb 2008 23:02:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.thinkingparallel.com/2007/06/12/some-fresh-news-on-openmp/#comment-45346</guid>
		<description>Hi Michael and Josh,

nice blog. It would be interesting to see the more information about the  parallel programming.

By the way to answer Josh's question. I pusblished the paper at IWOMP in China about Transactional Memory and OpanMP. You can find it on my web page &lt;a href="http://galeb.etf.bg.ac.yu/~mmilos/" title="link" rel="nofollow"&gt;. We plan to publish the TM+OpenMP compiler and runtime soon. I hope in less than one month. So I'll let you know.</description>
		<content:encoded><![CDATA[<p>Hi Michael and Josh,</p>
<p>nice blog. It would be interesting to see the more information about the  parallel programming.</p>
<p>By the way to answer Josh&#8217;s question. I pusblished the paper at IWOMP in China about Transactional Memory and OpanMP. You can find it on my web page <a href="http://galeb.etf.bg.ac.yu/~mmilos/" title="link" rel="nofollow">. We plan to publish the TM+OpenMP compiler and runtime soon. I hope in less than one month. So I&#8217;ll let you know.</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
