<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Visual Core &#187; PyMW</title>
	<atom:link href="http://visualcore.com/index.php/tag/pymw/feed/" rel="self" type="application/rss+xml" />
	<link>http://visualcore.com</link>
	<description>An amazing repository of useless junk</description>
	<lastBuildDate>Sun, 13 Jun 2010 23:58:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PyBOINC Work Continues</title>
		<link>http://visualcore.com/index.php/2009/07/pyboinc-work-continues/</link>
		<comments>http://visualcore.com/index.php/2009/07/pyboinc-work-continues/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 23:11:40 +0000</pubDate>
		<dc:creator>Jeremy Cowles</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[BOINC]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[PyMW]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://visualcore.com/?p=160</guid>
		<description><![CDATA[I am still working on PyBOINC (the embedded Python interpreter with support for BOINC). The actual integration (exposing the BOINC API to Python) was easy, it&#8217;s the cross-platform build that&#8217;s most difficult.
The problem is that when running an application on BOINC, you have no guarantee of what libraries will be available, so you must either [...]]]></description>
			<content:encoded><![CDATA[<p>I am still working on PyBOINC (the embedded Python interpreter with support for BOINC). The actual integration (exposing the BOINC API to Python) was easy, it&#8217;s the cross-platform build that&#8217;s most difficult.</p>
<p>The problem is that when running an application on BOINC, you have no guarantee of what libraries will be available, so you must either distribute the libraries you need or compile them statically. I chose the later, which also caused lots of issues with the Python standard library. It&#8217;s mostly working now, with the exception of the <em>sqlite</em> module.</p>
<p>I moved the repo over to my bit bucket account since Nicolas is busy with other projects. The latest code can be <a href="http://bit.ly/pyboinc" target="BLANK" title="PyBOINC source">found here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualcore.com/index.php/2009/07/pyboinc-work-continues/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Integrating Python &amp; BOINC</title>
		<link>http://visualcore.com/index.php/2009/07/integrating-python-boinc/</link>
		<comments>http://visualcore.com/index.php/2009/07/integrating-python-boinc/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 05:29:38 +0000</pubDate>
		<dc:creator>Jeremy Cowles</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[BOINC]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[PyMW]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://visualcore.com/?p=157</guid>
		<description><![CDATA[I started working on an embedded Python interpreter for BOINC with Nicolás Alvarez. The interpreter will be the main executable for Python based workunits and provides interop with the BOINC client API. It allows, for example, reporting percentage complete per workunit, which isn&#8217;t possible currently with PyMW alone.
The project will likely be incorporated into the [...]]]></description>
			<content:encoded><![CDATA[<p>I started working on an embedded Python interpreter for BOINC with Nicolás Alvarez. The interpreter will be the main executable for Python based workunits and provides interop with the BOINC client API. It allows, for example, reporting percentage complete per workunit, which isn&#8217;t possible currently with PyMW alone.</p>
<p>The project will likely be incorporated into the BOINC trunk, but the current code is available on bitbucket as <a href="http://bitbucket.org/nicolas17/pyboinc/" target="_BLANK" title="PyBOINC">PyBOINC</a> if you are interested in seeing how it works.</p>
<p>The Python developers made embedding the interpreter incredibly easy from C/C++ and the BOINC API is readily available from C/C++ as well, so there really isn&#8217;t much code. However, packaging the Python standard library and compiling it so it runs on multiple platforms are still going to be challenging.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualcore.com/index.php/2009/07/integrating-python-boinc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BOINC: Bundling Files</title>
		<link>http://visualcore.com/index.php/2009/07/boinc-bundling-files/</link>
		<comments>http://visualcore.com/index.php/2009/07/boinc-bundling-files/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 17:19:21 +0000</pubDate>
		<dc:creator>Jeremy Cowles</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[BOINC]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[PyMW]]></category>

		<guid isPermaLink="false">http://visualcore.com/?p=145</guid>
		<description><![CDATA[I’ve added support into the BOINC interface for bundled data files, however adding this new featue has exposed a new issue in the BOINC interface. I’ve known previously that BOINC holds an odd assumption of immutable files — any file ever seen by BOINC is expected to *never* change it’s contents for all time — [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve added support into the BOINC interface for bundled data files, however adding this new featue has exposed a new issue in the BOINC interface. I’ve known previously that BOINC holds an odd assumption of immutable files — any file ever seen by BOINC is expected to *never* change it’s contents for all time — however when running a PyMW application, the executable (for example, “monte_pi”) is reused over and over desipite any changes that may have occurred in the code.</p>
<p>This hasn’t been an issue up until now, mainly because I was running the PyMW example applications and not modifying them between executions. However, with the introduction of PyMW data bundles, this problem has become painfully obvious. Since data bundles are given a temporary file name and this file name is dynamically embedded into the body of the executable, the executable is now changing its contents on every run.</p>
<p>The fact that the file is changing and the file name remains the same means that BOINC keeps only one copy of the file (because of file name immutability/versioning). The end result is that when a work unit executes on a worker machine, it tries to open the first data bundle file name that was ever created because that first file was cached and never updated.</p>
<p>To fix this, I’ve added some code into the BOINC interface that deletes all work unit related files from the BOINC “download” directory on every execution. This has fixed the problem for now, but the interface should rename all files to a unique name before execution. This is one of my goals for the next iteration of the BOINC interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualcore.com/index.php/2009/07/boinc-bundling-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BOINC: Failed WorkUnits</title>
		<link>http://visualcore.com/index.php/2009/07/boinc-failed-workunits/</link>
		<comments>http://visualcore.com/index.php/2009/07/boinc-failed-workunits/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 17:34:49 +0000</pubDate>
		<dc:creator>Jeremy Cowles</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[BOINC]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[PyMW]]></category>

		<guid isPermaLink="false">http://visualcore.com/?p=141</guid>
		<description><![CDATA[When work units fail in BOINC, it poses a question of how to handle the remaining work units still being processed. I&#8217;ve added code to minimally handle failures so that manual user intervention isn&#8217;t required, however there is still a burden on the developer to understand this situation and decide how to recover from it.
This [...]]]></description>
			<content:encoded><![CDATA[<p>When work units fail in BOINC, it poses a question of how to handle the remaining work units still being processed. I&#8217;ve added code to minimally handle failures so that manual user intervention isn&#8217;t required, however there is still a burden on the developer to understand this situation and decide how to recover from it.</p>
<p>This is really no different from handling exceptions in non-distributed code, but I know all to well how exceptions are normally handled (hint: they aren&#8217;t). If you are interested, you can read <a href="http://pymw.sourceforge.net/?p=11" target="_BLANK">my full post</a> on the PyMW blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualcore.com/index.php/2009/07/boinc-failed-workunits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyMW Site Finished, for Now</title>
		<link>http://visualcore.com/index.php/2009/06/pymw-site-finished-for-now/</link>
		<comments>http://visualcore.com/index.php/2009/06/pymw-site-finished-for-now/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 23:21:13 +0000</pubDate>
		<dc:creator>Jeremy Cowles</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[PyMW]]></category>

		<guid isPermaLink="false">http://visualcore.com/?p=136</guid>
		<description><![CDATA[I&#8217;ve finished converting the PyMW website over to WordPress and implemented the new design and logo. It still needs more work, but I&#8217;m going to switch back into core BOINC interface mode again for a while.
The interface is working well now, but BOINC work unit failures still require manual user intervention. I would like to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve finished converting the <a href="http://pymw.sourceforge.net/" target="_BLANK" title="PyMW website">PyMW website</a> over to WordPress and implemented the new design and logo. It still needs more work, but I&#8217;m going to switch back into core BOINC interface mode again for a while.</p>
<p>The interface is working well now, but BOINC work unit failures still require manual user intervention. I would like to automate as much failure recovery as possible, so I will be focusing on this for the next few days.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualcore.com/index.php/2009/06/pymw-site-finished-for-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyMW Distributed Pacman Server</title>
		<link>http://visualcore.com/index.php/2009/06/pymw-distributed-pacman-server/</link>
		<comments>http://visualcore.com/index.php/2009/06/pymw-distributed-pacman-server/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 19:17:03 +0000</pubDate>
		<dc:creator>Jeremy Cowles</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[BOINC]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[PyMW]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://visualcore.com/wp/?p=67</guid>
		<description><![CDATA[To create a real application for PyMW, I think I am going to create a distributed Pacman server.
Last semester I took an artificial intelligence class that used Pacman as a teaching tool. At the end of the semester, there was a tournament where each team could pit their Pacman AI client against each other in [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-133" title="Pacman CTF" src="http://visualcore.com/wp/wp-content/uploads/2009/06/pacman-ctf.png" alt="Pacman CTF" width="400" height="232" /><br/>To create a real application for PyMW, I think I am going to create a distributed Pacman server.</p>
<p>Last semester I took an artificial intelligence class that used Pacman as a teaching tool. At the end of the semester, there was a tournament where each team could pit their Pacman AI client against each other in a game of Pacman-style capture the flag. We submitted our clients to a server and then waited 24 hours or so for the results to appear. If your client crashed, you had to wait another 24 hours to see your standings.</p>
<p>My idea is this:</p>
<ul>
<li>Create a PyMW application that runs Pacman tournaments</li>
<li>Each job will be 3 matches between two clients</li>
<li>An animated GIF will be created for one of the 3 matches (one that agrees with the outcome)</li>
<li>The BOINC interface will be used so students can contribute compute time</li>
<li>The output of the PyMW application will be records in a MySQL database</li>
<li>Create a website for statistics</li>
</ul>
<p>To test the tournament server, I am going to get the AI client code from last semester&#8217;s teams and then run it on the BOINC Alpha group. This should provide a solid test of the PyMW BOINC interface and my tournament server.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualcore.com/index.php/2009/06/pymw-distributed-pacman-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PyMW: Logo and Layout</title>
		<link>http://visualcore.com/index.php/2009/06/pymw-logo-and-layout/</link>
		<comments>http://visualcore.com/index.php/2009/06/pymw-logo-and-layout/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 07:08:22 +0000</pubDate>
		<dc:creator>Jeremy Cowles</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[PyMW]]></category>

		<guid isPermaLink="false">http://visualcore.com/wp/?p=30</guid>
		<description><![CDATA[
Created a new logo and web layout/design for PyMW. This isn&#8217;t really part of the summer of code gig, but I was feeling inspired so I threw this together. It&#8217;s still a work in progress, but you can get a feel for the design.
I&#8217;m not much of a graphic artist when it come to identity, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="/images/articles/pymw-layout.png" target="_BLANK"><img style="border: none" src="/images/articles/pymw-layout-thumb.png" alt="PyMW: Python + BOINC" /></a></p>
<p>Created a new <a href="/images/articles/pymw-layout.png" target="_BLANK">logo and web layout/design</a> for PyMW. This isn&#8217;t really part of the summer of code gig, but I was feeling inspired so I threw this together. It&#8217;s still a work in progress, but you can get a feel for the design.</p>
<p>I&#8217;m not much of a graphic artist when it come to identity, but I tried to represent idea of one framework joining many disparate models of computation as well as the general idea of master-worker computing.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualcore.com/index.php/2009/06/pymw-logo-and-layout/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PyMW: Week one</title>
		<link>http://visualcore.com/index.php/2009/06/pymw-week-one/</link>
		<comments>http://visualcore.com/index.php/2009/06/pymw-week-one/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 19:01:36 +0000</pubDate>
		<dc:creator>Jeremy Cowles</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[BOINC]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[Parallel]]></category>
		<category><![CDATA[PyMW]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://visualcore.com/wp/?p=34</guid>
		<description><![CDATA[Today is the official end of my 7th day of working on the PyMW interface for BOINC for Google Summer of Code.
It took me three days to get the my first PyMW app to run (monte_pi.py), which ran on 4 virtual nodes (4 tasks). More than four tasks was causing problems, it turned out that [...]]]></description>
			<content:encoded><![CDATA[<p>Today is the official end of my 7th day of working on the PyMW interface for BOINC for Google Summer of Code.</p>
<p>It took me three days to get the my first PyMW app to run (monte_pi.py), which ran on 4 virtual nodes (4 tasks). More than four tasks was causing problems, it turned out that there was a bug in the PyMW BOINC interface. Now that that&#8217;s fixed, I ran with 200 nodes yesterday and 800 today.</p>
<p>This morning, I tried running with 2 physical nodes: my laptop and my Ubuntu VM, which failed at the end of computation. Somehow the canonical results are not being recognized which causes the BOINC interface to get lost in limbo and hang forever.</p>
<p>This week, I created a pure-Python assimilator for PyMW, which works pretty well, but is perhaps causing the error above.</p>
<p>I also rewrote a big swath of the BOINC interface to stop it from using a new thread for each task during task reclamation (getting data back from BOINC). Since it was using one thread per task, it was reaching the maximum number of scheduler threads. This in turn caused the execution thread to hang until some of the tasks completed. Now it reclaims tasks in a single thread and is able to queue all tasks in a single shot, greatly improving the throughput from PyMW -&gt; BOINC.</p>
<p>Overall, it&#8217;s been really fun so far. The first few days were trying, since there was little documentation of how to get PyMW to play nice with BOINC. But seeing the first application run was great <img src='http://visualcore.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://visualcore.com/index.php/2009/06/pymw-week-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Summer of Code!</title>
		<link>http://visualcore.com/index.php/2009/04/google-summer-of-code/</link>
		<comments>http://visualcore.com/index.php/2009/04/google-summer-of-code/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 07:33:04 +0000</pubDate>
		<dc:creator>Jeremy Cowles</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[BOINC]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Parallel]]></category>
		<category><![CDATA[PyMW]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://visualcore.com/wp/?p=38</guid>
		<description><![CDATA[
My proposal has been accepted by the Python Software Foundation for Google Summer of Code 2009!
I will be working on the Python Master-Worker computing project (PyMW), a Python API that provides access to various distributed and parallel computing frameworks. In particular, I will be working on the Berkeley Open Infrastructure for Network Computing (BOINC) integration. [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border: none" src="/images/articles/gsoc2009-pymw.png" alt="PyMW: Python + BOINC" /></p>
<p>My proposal has been accepted by the Python Software Foundation for <a href="http://socghop.appspot.com/org/home/google/gsoc2009/python" target="_BLANK">Google Summer of Code 2009</a>!</p>
<p>I will be working on the <a href="http://pymw.sourceforge.net/" target="_BLANK">Python Master-Worker</a> computing project (PyMW), a Python API that provides access to various distributed and parallel computing frameworks. In particular, I will be working on the Berkeley Open Infrastructure for Network Computing (<a href="http://boinc.berkeley.edu/" target="_BLANK">BOINC</a>) integration. BOINC is best known as the underlying system that enabled SETI@Home and I&#8217;m really excited to peek under the hood!</p>
<p>My goal is to make it easier for PyMW users to create BOINC applications by simplifying the setup process as well as adding new support for some important BOINC features. This will require some changes to PyMW as well as some changes to the BOINC server. If you are interested in seeing all the details, a public copy of <a title="GSoC Proposal" href="http://socghop.appspot.com/document/show/user/jwc/pymwprop" target="_BLANK">my proposal</a> is posted at the GSoC website.</p>
]]></content:encoded>
			<wfw:commentRss>http://visualcore.com/index.php/2009/04/google-summer-of-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
