<?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: Have GIL: Want Benchmarks.</title>
	<atom:link href="http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/feed/" rel="self" type="application/rss+xml" />
	<link>http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/</link>
	<description>python, programming and other things</description>
	<lastBuildDate>Thu, 11 Feb 2010 00:42:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: jessenoller.com - Benchmark followup: Google-code Edition</title>
		<link>http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/comment-page-1/#comment-6088</link>
		<dc:creator>jessenoller.com - Benchmark followup: Google-code Edition</dc:creator>
		<pubDate>Mon, 17 Sep 2007 00:06:12 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/#comment-6088</guid>
		<description>[...] last weeks tempest in a blogpot, and my subsequent post &quot;Have GIL: Want Benchmarks&quot; I&#039;ve been doing a lot of reading, planning and discussion with [...]</description>
		<content:encoded><![CDATA[<p>[...] last weeks tempest in a blogpot, and my subsequent post &#8220;Have GIL: Want Benchmarks&#8221; I&#8217;ve been doing a lot of reading, planning and discussion with [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eli</title>
		<link>http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/comment-page-1/#comment-5701</link>
		<dc:creator>Eli</dc:creator>
		<pubDate>Fri, 14 Sep 2007 19:16:52 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/#comment-5701</guid>
		<description>I&#039;m really glad you&#039;re doing this.  Python definitely needs good libraries  for running multiple processes on different cpus, and your benchmarking efforts will definitely help this happen.</description>
		<content:encoded><![CDATA[<p>I&#8217;m really glad you&#8217;re doing this.  Python definitely needs good libraries  for running multiple processes on different cpus, and your benchmarking efforts will definitely help this happen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael Dillon</title>
		<link>http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/comment-page-1/#comment-5535</link>
		<dc:creator>Michael Dillon</dc:creator>
		<pubDate>Thu, 13 Sep 2007 21:13:21 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/#comment-5535</guid>
		<description>Please include Pyro in your tests: http://pyro.sourceforge.net/

Since Parallel Python uses threading inside the module, it really isn&#039;t a pure non-threading solution. If you set up a similar test with Pyro using two worker processes on one machine, and a process on another machine to control it all, that would completely remove threading from the equation. It may turn out to have a minimal difference from Parallel Python but that is the kind of thing we want to learn from benchmarking.

Also, I think that the benchmark should be structured so that the master thread/process does a fair amount of communication, i.e. to supply the parameters for each loop. That way you can run the test in two ways, first with the Fibonacci computations, and second with a null computation. The second style of test will only measure the overhead. Theoretically, the variance in overhead would be the only difference between the Fibonacci runs, but, as always, you need to run the benchmarks to learn this.

Once you have it all running, please distribute it so that people can try it on different CPU and OS types. Benchmarks on a single CPU or OS type can often be deceptive.</description>
		<content:encoded><![CDATA[<p>Please include Pyro in your tests: <a href="http://pyro.sourceforge.net/" rel="nofollow">http://pyro.sourceforge.net/</a></p>
<p>Since Parallel Python uses threading inside the module, it really isn&#8217;t a pure non-threading solution. If you set up a similar test with Pyro using two worker processes on one machine, and a process on another machine to control it all, that would completely remove threading from the equation. It may turn out to have a minimal difference from Parallel Python but that is the kind of thing we want to learn from benchmarking.</p>
<p>Also, I think that the benchmark should be structured so that the master thread/process does a fair amount of communication, i.e. to supply the parameters for each loop. That way you can run the test in two ways, first with the Fibonacci computations, and second with a null computation. The second style of test will only measure the overhead. Theoretically, the variance in overhead would be the only difference between the Fibonacci runs, but, as always, you need to run the benchmarks to learn this.</p>
<p>Once you have it all running, please distribute it so that people can try it on different CPU and OS types. Benchmarks on a single CPU or OS type can often be deceptive.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nick Gerner</title>
		<link>http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/comment-page-1/#comment-5531</link>
		<dc:creator>Nick Gerner</dc:creator>
		<pubDate>Thu, 13 Sep 2007 20:42:49 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/#comment-5531</guid>
		<description>Thanks for taking the time to verify results.  This is the kind of thing you (or me, or anyone) could screw up really easily.  And it&#039;s important we get solid results on this issue.</description>
		<content:encoded><![CDATA[<p>Thanks for taking the time to verify results.  This is the kind of thing you (or me, or anyone) could screw up really easily.  And it&#8217;s important we get solid results on this issue.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jesse</title>
		<link>http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/comment-page-1/#comment-5504</link>
		<dc:creator>jesse</dc:creator>
		<pubDate>Thu, 13 Sep 2007 14:40:54 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/#comment-5504</guid>
		<description>I got the email and replied, I also linked to Watkins&#039; blog post in mine, I will be following up with him as soon as I have a moment.</description>
		<content:encoded><![CDATA[<p>I got the email and replied, I also linked to Watkins&#8217; blog post in mine, I will be following up with him as soon as I have a moment.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Miguel Sousa Filipe</title>
		<link>http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/comment-page-1/#comment-5503</link>
		<dc:creator>Miguel Sousa Filipe</dc:creator>
		<pubDate>Thu, 13 Sep 2007 14:37:48 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/#comment-5503</guid>
		<description>I agree with you that alternatives must be measured and tested.

Check out this other blog post about testing something similar with what you did:
http://blogs.warwick.ac.uk/dwatkins/entry/benchmarking_parallel_python_1_2/
Speccially, have a lot at what Mr. Guido Van Rossum said. (9th comment)

I&#039;ve also sent you a email elaborating more on my thoughts about this whole &quot;thinking, testing and choosing&quot; a alternative &quot;parallel/concurrency&quot; API for python.

Best regards,

Miguel Sousa Filipe
miguel dot-thingie0 filipe at-thingie1 gmail dot-thingie2 com</description>
		<content:encoded><![CDATA[<p>I agree with you that alternatives must be measured and tested.</p>
<p>Check out this other blog post about testing something similar with what you did:<br />
<a href="http://blogs.warwick.ac.uk/dwatkins/entry/benchmarking_parallel_python_1_2/" rel="nofollow">http://blogs.warwick.ac.uk/dwatkins/entry/benchmarking_parallel_python_1_2/</a><br />
Speccially, have a lot at what Mr. Guido Van Rossum said. (9th comment)</p>
<p>I&#8217;ve also sent you a email elaborating more on my thoughts about this whole &#8220;thinking, testing and choosing&#8221; a alternative &#8220;parallel/concurrency&#8221; API for python.</p>
<p>Best regards,</p>
<p>Miguel Sousa Filipe<br />
miguel dot-thingie0 filipe at-thingie1 gmail dot-thingie2 com</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jesse</title>
		<link>http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/comment-page-1/#comment-5496</link>
		<dc:creator>jesse</dc:creator>
		<pubDate>Thu, 13 Sep 2007 13:40:06 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/#comment-5496</guid>
		<description>I will be posting the results + code once I get all my ducks in a row. I also want to pass it by a few people to verify I didn&#039;t do something monumentally screwy.</description>
		<content:encoded><![CDATA[<p>I will be posting the results + code once I get all my ducks in a row. I also want to pass it by a few people to verify I didn&#8217;t do something monumentally screwy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve</title>
		<link>http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/comment-page-1/#comment-5451</link>
		<dc:creator>Steve</dc:creator>
		<pubDate>Thu, 13 Sep 2007 09:49:49 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/#comment-5451</guid>
		<description>Have read blog post: want your results.</description>
		<content:encoded><![CDATA[<p>Have read blog post: want your results.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard Jones</title>
		<link>http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/comment-page-1/#comment-5395</link>
		<dc:creator>Richard Jones</dc:creator>
		<pubDate>Thu, 13 Sep 2007 00:07:27 +0000</pubDate>
		<guid isPermaLink="false">http://jessenoller.com/2007/09/12/have-gil-want-benchmarks/#comment-5395</guid>
		<description>Interestingly enough, I&#039;ve just implemented a GUI-based file downloader using both threading and processing on OS X on a G4 (single core). Using urllib2 to download (reading chunks of 1MB at a time) I found that the threading implementation played better with the GUI (with some semi-icky hacks) than the processing approach.

Both approaches had the download worker writing directly to disk, so the traffic back from the worker to the parent was minimal (a &quot;size received&quot; message after each read()).

This was downloading from a LAN server, so the download speed was roughly 10MB/s.

The semi-icky hack in the threading approach: I had to introduce a semaphore in the worker main loop which only allowed the worker  to &quot;fire&quot; once per every two GUI update loops, otherwise the GUI was starved for CPU.

So for me it wasn&#039;t totally about how to make things go the fastest, but also about how to best share the CPU in an interactive application.</description>
		<content:encoded><![CDATA[<p>Interestingly enough, I&#8217;ve just implemented a GUI-based file downloader using both threading and processing on OS X on a G4 (single core). Using urllib2 to download (reading chunks of 1MB at a time) I found that the threading implementation played better with the GUI (with some semi-icky hacks) than the processing approach.</p>
<p>Both approaches had the download worker writing directly to disk, so the traffic back from the worker to the parent was minimal (a &#8220;size received&#8221; message after each read()).</p>
<p>This was downloading from a LAN server, so the download speed was roughly 10MB/s.</p>
<p>The semi-icky hack in the threading approach: I had to introduce a semaphore in the worker main loop which only allowed the worker  to &#8220;fire&#8221; once per every two GUI update loops, otherwise the GUI was starved for CPU.</p>
<p>So for me it wasn&#8217;t totally about how to make things go the fastest, but also about how to best share the CPU in an interactive application.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
