<?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>Hazel McKendrick &#187; Distributed Computing</title>
	<atom:link href="http://hazelmckendrick.com/journal/tag/distributed-computing/feed" rel="self" type="application/rss+xml" />
	<link>http://hazelmckendrick.com</link>
	<description>Programming and Games Technology Portfolio</description>
	<lastBuildDate>Mon, 20 Jun 2011 17:44:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Honours Project Completion</title>
		<link>http://hazelmckendrick.com/journal/honours-project-completion</link>
		<comments>http://hazelmckendrick.com/journal/honours-project-completion#comments</comments>
		<pubDate>Sun, 30 May 2010 18:53:52 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[University Project]]></category>
		<category><![CDATA[dissertation]]></category>
		<category><![CDATA[Distributed Computing]]></category>
		<category><![CDATA[microcells]]></category>

		<guid isPermaLink="false">http://hazelmckendrick.com/?p=1978</guid>
		<description><![CDATA[As my laptop decided to fail quite catastrophically the day after I handed in my honours project (just luck it didn&#8217;t do so before, really) I realise I haven&#8217;t updated the blog in some time. I&#8217;ll post results and likely also the written work and source code when I have my own laptop back again, [...]]]></description>
			<content:encoded><![CDATA[<p>As my laptop decided to fail quite catastrophically the day after I handed in my honours project (just luck it didn&#8217;t do so before, really) I realise I haven&#8217;t updated the blog in some time.  I&#8217;ll post results and likely also the written work and source code when I have my own laptop back again, but for now here are some images to show how the project ended. <span id="more-1978"></span></p>
<p>The larger square shows the total area of the small virtual world.  Each smaller square represents a microcell, an area of the world to be assigned to and updated by a single worker node.  The worker nodes are shown by the three colours in the images below, which are each viewed from the central server.  The simulation was run for a number of minutes, with cells being redistributed dynamically between nodes.  Numbers at the bottom right indicate the number of minutes the system had been active for when the screenshot was captured.<br />
<center><a href="http://hazelmckendrick.com/wp-content/uploads/2010/05/time.png"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/05/time.png" alt="" title="time" width="654" height="439" class="aligncenter size-full wp-image-1979" /></a></center></p>
<p>This image shows the view from a worker node, each blue dot represents a single entity following a path.  This node is completely under-loaded just so that the entities can be seen clearly, when thousands are processed it can be hard to pick out individuals.<br />
<a href="http://hazelmckendrick.com/wp-content/uploads/2010/05/nodevisualisation.png"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/05/nodevisualisation.png" alt="" title="nodevisualisation" width="425" height="423" class="aligncenter size-full wp-image-1981" /></a></p>
<p>This shows the use of varying microcell sizes.  The use of different sizes didn&#8217;t actually make a difference to average load, maximum load or load disparity between worker nodes except when particularly small cells were used.  This caused a great deal of load for the central server, a huge increase in the number of transfers required and as the images show prevent the world from being re-partitioned in a reasonable period of time.<br />
<a href="http://hazelmckendrick.com/wp-content/uploads/2010/05/size.png"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/05/size.png" alt="" title="size" width="696" height="468" class="aligncenter size-full wp-image-1980" /></a></p>
<p>Finally, this image shows the cell distribution between worker nodes when the number used was scaled to match the problem size.  As the number of entities was increased and then decreased, the number of computers used was scaled similarly.<br />
<a href="http://hazelmckendrick.com/wp-content/uploads/2010/05/add2.png"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/05/add2.png" alt="" title="add2" width="667" height="446" class="aligncenter size-full wp-image-1983" /></a></p>
<p>That&#8217;s all for now, I&#8217;ll do my best to go over some details when my laptop has been repaired.</p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/honours-project-completion/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Honours Project Presentation</title>
		<link>http://hazelmckendrick.com/journal/honours-project-presentation</link>
		<comments>http://hazelmckendrick.com/journal/honours-project-presentation#comments</comments>
		<pubDate>Wed, 19 May 2010 18:20:17 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[University Project]]></category>
		<category><![CDATA[dissertation]]></category>
		<category><![CDATA[Distributed Computing]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://hazelmckendrick.com/?p=1975</guid>
		<description><![CDATA[Here are my slides from my final presentation on my honours project, summarising the aims and some of the methods and results.]]></description>
			<content:encoded><![CDATA[<p>Here are my slides from my final presentation on my honours project, summarising the aims and some of the methods and results.</p>
<p><center>
<div style="width:425px" id="__ss_4355672"><object id="__sse4355672" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=finalpresentation-100530132341-phpapp02&#038;stripped_title=honours-project-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4355672" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=finalpresentation-100530132341-phpapp02&#038;stripped_title=honours-project-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p></center></p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/honours-project-presentation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microcell Distribution</title>
		<link>http://hazelmckendrick.com/journal/microcell-distribution</link>
		<comments>http://hazelmckendrick.com/journal/microcell-distribution#comments</comments>
		<pubDate>Sun, 28 Mar 2010 14:17:14 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[University Project]]></category>
		<category><![CDATA[dissertation]]></category>
		<category><![CDATA[Distributed Computing]]></category>
		<category><![CDATA[microcells]]></category>

		<guid isPermaLink="false">http://hazelmckendrick.com/?p=1946</guid>
		<description><![CDATA[The images in this post show the successful distribution of space over the network, allowing clients to connect and be assigned a section of the world to process. Currently the framework allows functions for distributing cells to be added when the simulation starts, as additional nodes connect, and/or at regular intervals. These can be managed [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hazelmckendrick.com/wp-content/uploads/2010/03/QuadDistribution2.png"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/03/QuadDistribution2-300x149.png" alt="" title="QuadDistribution" width="300" height="149" class="alignleft size-medium wp-image-1948" /></a> The images in this post show the successful distribution of space over the network, allowing clients to connect and be assigned a section of the world to process.  Currently the framework allows functions for distributing cells to be added when the simulation starts, as additional nodes connect, and/or at regular intervals.  These can be managed either by the central server, or initiated by worker nodes themselves.  The majority of the remainder of the project involves the algorithms for distributing cells between nodes.</p>
<p>Additionally, the framework now supports both hexagons and quads as cells.  Hexagons have the advantage that only 3 cells meet at any corner, limiting the maximum number of nodes which might be involved should an event take place there. Here&#8217;s some images of the view from the server with the most basic (block) distribution of cells:</p>
<p><a href="http://hazelmckendrick.com/wp-content/uploads/2010/03/blockdistnetwork.png"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/03/blockdistnetwork-1024x258.png" alt="" title="blockdistnetwork" width="650" height="170" class="aligncenter size-large wp-image-1954" /></a></p>
<p><a href="http://hazelmckendrick.com/wp-content/uploads/2010/03/HexBlockdistnet.png"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/03/HexBlockdistnet.png" alt="" title="HexBlockdistnet" width="650" height="170" class="aligncenter size-full wp-image-1956" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/microcell-distribution/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Microcell Testbed Images</title>
		<link>http://hazelmckendrick.com/journal/microcell-testbed-images</link>
		<comments>http://hazelmckendrick.com/journal/microcell-testbed-images#comments</comments>
		<pubDate>Sat, 20 Mar 2010 14:26:41 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[University Project]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[dissertation]]></category>
		<category><![CDATA[Distributed Computing]]></category>
		<category><![CDATA[microcells]]></category>
		<category><![CDATA[testbed]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://hazelmckendrick.com/?p=1922</guid>
		<description><![CDATA[For once I have something visual relating to my honours project, so it seemed appropriate to share a sample here. A major part of the project involves distributing microcells (fixed areas of the world) between a series of worker nodes both statically and dynamically. In order to test methods of achieving this, I created a [...]]]></description>
			<content:encoded><![CDATA[<p>For once I have something visual relating to my honours project, so it seemed appropriate to share a sample here.  </p>
<p>A major part of the project involves distributing microcells (fixed areas of the world) between a series of worker nodes both statically and dynamically.  In order to test methods of achieving this, I created a small testbed application which simulates the task without networking.  It is capable of using various methods to distribute cells, both at the start of the application and as it runs, both controlled by a central server and initiated by worker nodes and gives graphical and numerical feedback.</p>
<p>The images below were taken with a greatly reduced number of cells, and the work involved in processing each cell is artificial: there are no pathfinding characters yet.  However hopefully it demonstrates to some extent how division of the world takes place, and allows me to easily test distribution methods before using them in the proper simulation.</p>
<div id="attachment_1928" class="wp-caption alignleft" style="width: 160px"><a href="http://hazelmckendrick.com/wp-content/uploads/2010/03/QuantityOfChars1.jpg"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/03/QuantityOfChars1-150x150.jpg" alt="" title="QuantityOfChars" width="150" height="150" class="size-thumbnail wp-image-1928" /></a><p class="wp-caption-text">Coloured by number of characters per cell.</p></div> <div id="attachment_1932" class="wp-caption alignleft" style="width: 160px"><a href="http://hazelmckendrick.com/wp-content/uploads/2010/03/BlockDistribution2.png"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/03/BlockDistribution2-150x150.png" alt="" title="BlockDistribution" width="150" height="150" class="size-thumbnail wp-image-1932" /></a><p class="wp-caption-text">Initial block distribution.</p></div> <div id="attachment_1930" class="wp-caption alignleft" style="width: 160px"><a href="http://hazelmckendrick.com/wp-content/uploads/2010/03/RandomDistribution1.png"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/03/RandomDistribution1-150x150.png" alt="" title="RandomDistribution" width="150" height="150" class="size-thumbnail wp-image-1930" /></a><p class="wp-caption-text">Random distribution for comparison.</p></div> <div id="attachment_1924" class="wp-caption alignleft" style="width: 160px"><a href="http://hazelmckendrick.com/wp-content/uploads/2010/03/BlockDistributionGreedy11.png"><img src="http://hazelmckendrick.com/wp-content/uploads/2010/03/BlockDistributionGreedy11-150x150.png" alt="" title="BlockDistributionGreedy1" width="150" height="150" class="size-thumbnail wp-image-1924" /></a><p class="wp-caption-text">Block distribution with dynamic passing after time.</p></div>
<p>As the actual application I am working on is written in C#, I used XNA to create the images here.  As it is possible to render XNA frames to a windows form application with little difficulty, this is also the approach I will employ for visualising the complete project.</p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/microcell-testbed-images/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Research Question Presentation</title>
		<link>http://hazelmckendrick.com/journal/research-question-presentation</link>
		<comments>http://hazelmckendrick.com/journal/research-question-presentation#comments</comments>
		<pubDate>Mon, 23 Nov 2009 18:57:21 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[University Project]]></category>
		<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[dissertation]]></category>
		<category><![CDATA[Distributed Computing]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[Research Question]]></category>

		<guid isPermaLink="false">http://hazelmckendrick.com/?p=1690</guid>
		<description><![CDATA[If you&#8217;re reading this in a feed reader you&#8217;ll need to click through &#8211; slides are embedded in the post. Today we were tasked with presenting our research topic to our lecturers and classmates. As you can see from the slides above, we were given only a short period of time, 3 minutes at most, [...]]]></description>
			<content:encoded><![CDATA[<p><center>
<div style="width:425px;text-align:left" id="__ss_2566333"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rqpres-091123110001-phpapp01&#038;rel=0&#038;stripped_title=research-question-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=rqpres-091123110001-phpapp01&#038;rel=0&#038;stripped_title=research-question-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p></center><br />
<i>If you&#8217;re reading this in a feed reader you&#8217;ll need to click through &#8211; slides are embedded in the post.</i></p>
<p>Today we were tasked with presenting our research topic to our lecturers and classmates.  As you can see from the slides above, we were given only a short period of time, 3 minutes at most, to cover background information, our own solutions, and the significance of our work. <span id="more-1690"></span></p>
<h3>Since 3 of my slides comprised only images, here are some additional notes:</h3>
<p><b>Simulate characters in a virtual environment</b><br />
The simulation I will be considering and using to access my project is that of multiple autonomous characters navigating a virtual environment.  They might perform multiple trivial tasks or be processed in different ways so as to create a situation involving task parallelism rather than data parallelism.</p>
<p><b>Distribute processing work</b><br />
A central sever and database will be created, passing necessary data and information to other nodes.  Each node will be assigned a part of the virtual environment and the characters with to process.</p>
<p><b>Balance workload</b><br />
Rather than splitting virtual world space evenly between nodes, giving consideration to the spatial distribution of characters is an obvious improvement.  Although using a quadtree (or other appropriate data structure) would facilitate partitioning the space based on population, it would be necessary to consider and perhaps attempt to reduce the overhead involved in moving characters between servers.</p>
<h3>Following the presentation, I was asked two questions:</h3>
<p><b>Obviously at some stage the overhead involved in adding additional nodes will outweigh the benefits of the additional processing power gained, how will this be taken into account?</b><br />
Amdahl&#8217;s law can be used to determine the improvement expected from adding additional processors to a system and as such the theoretical maximum gain in performance, given the percentage of the program which must be processed in serial.  While work can be done to minimise the amount of work which cannot be parallellised, it certainly can&#8217;t be removed completely and given the networking component of the system it will always be a major consideration.<br />
Measured and theoretical results will be drawn upon in my dissertation to help reach conclusions about the success and future potential of the project.</p>
<p><b>Extensive processing of autonomous characters is a very different situation to the work required by a server for MMO games, how can this project relate to that?</b><br />
There are large differences between the situation I hope to simulate and a game server, not having to deal with hundreds of client connections for example, however I believe they can easily be related and intend to demonstrate this in my dissertation.  Most importantly the simulation involves processing a large volume of spatially distributed data, using multiple computers, subject to strict temporal constraints &#8211; very much in common with game related situations.</p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/research-question-presentation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Proposal Draft Feedback</title>
		<link>http://hazelmckendrick.com/journal/proposal-draft-feedback</link>
		<comments>http://hazelmckendrick.com/journal/proposal-draft-feedback#comments</comments>
		<pubDate>Thu, 22 Oct 2009 13:51:06 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[University Project]]></category>
		<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[Distributed Computing]]></category>
		<category><![CDATA[Feedback]]></category>
		<category><![CDATA[Proposal]]></category>

		<guid isPermaLink="false">http://hazelmckendrick.com/?p=1608</guid>
		<description><![CDATA[After writing my proposal first draft I received feedback from Steven, a member of my class. Although I hope to address the issues he brought up in the next version of my proposal, I wanted to answer them here for the time being. &#160; Hey, sounds like a cool idea. Sounds like it might be [...]]]></description>
			<content:encoded><![CDATA[<p>After writing my <a href="http://hazelmckendrick.com/journal/a-sandpaper-like-proposal-draft/">proposal first draft</a> I received feedback from Steven, a member of my class.  Although I hope to address the issues he brought up in the next version of my proposal, I wanted to answer them here for the time being.<br />
<span id="more-1608"></span><br />&nbsp;</p>
<blockquote><p>Hey, sounds like a cool idea. Sounds like it might be quite a difficult project to undertake considering the need for multiple computers to be running the same simulation. </p></blockquote>
<p>Although multiple computers will be used for the simulation, bear in mind that I can run both a server and several client nodes on one machine during implementation and to perform limited tests.  I will need to make use of several computers to properly test the application, especially when it comes to networking and synchronisation issues, however hopefully this can be done in the evening, at home, or when the labs are less busy.</p>
<p>&nbsp;</p>
<blockquote><p>Will you start from one computer and then work you up by having more join the simulation? </p></blockquote>
<p>Partially.  Obviously my aim would be to start with the simplest working solution possible, and build from there in several steps:
<ol>
<li>Experiment with multi-threading techniques within a single application.</li>
<li>Experiment with networking between several machines.</li>
<li>Combine these approaches to create a very simple client-server framework for distributing tasks.</li>
<li>Design and build a simple basis for the simulation on top of this &#8211; get characters being processed on multiple machines.</li>
<li>Expand on the simulation and improve the underlying architecture.</li>
</ol>
<p>&nbsp;</p>
<blockquote><p>Or will there be a minimum to start with and also maybe a maximum?</p></blockquote>
<p>The number of machines which will be useful for the simulation will depend on how complicated the processing required is &#8211; for example how many entities are created.  If the project is successful the simulation should run, albeit slowly, on one machine and faster as the work is distributed over multiple machines, limited by <a href="http://en.wikipedia.org/wiki/Amdahl%27s_law">Amdahl&#8217;s law</a>.  I doubt I will achieve this ideal and the research question can still be answered even if the simulation runs slower in a distributed situation.</p>
<p>&nbsp;</p>
<blockquote><p>I take it the actions performed will just be general tasks such as moving place to place, interacting with other characters or objects, etc?</p></blockquote>
<p>I am still deciding, to some extent, what tasks would be performed.  It is important that more than one task or is handled as this creates a different type of simulation from performing an identical process on each piece of data (character).<br />
My initial plan is to have the character choose a point in a simple 2D city to aim to go to, and then have them navigate there.  Next, collisions with other data (characters) could be considered, greatly increasing the complexity of the situation.  Finally, the characters could perform simple interactions with items in the world or other characters; However, I think it is unlikely I will have time to implement this option.</p>
<p>&nbsp;</p>
<blockquote><p>Will these action just be randomly assigned to any computer as long as they are free to do so?</p></blockquote>
<p>This is a major part of what I will be investigating.  Tasks will most likely be assigned to nodes spatially &#8211; in terms of an area of a 2D map, although other methods will be tested.  I would especially like to try partitioning the world based on the density of characters in an area in order to try and create even workloads for different machines.  </p>
<p>&nbsp;</p>
<blockquote><p>Or will certain task that may need more processing power be sent to the computer with the best processing power?</p></blockquote>
<p>This will really depend on the hardware I have available.  Ideally, I would like to measure each node&#8217;s networking and processing performance and base the amount of work distributed on this.  If it is possible to use my laptop on the uni network then there will be more opportunities here than if I am working with identical lab machines.  It might also be possible to simulate different hardware using virtual machines.</p>
<p>Thanks again for the questions!</p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/proposal-draft-feedback/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Sandpaper-Like Proposal Draft</title>
		<link>http://hazelmckendrick.com/journal/a-sandpaper-like-proposal-draft</link>
		<comments>http://hazelmckendrick.com/journal/a-sandpaper-like-proposal-draft#comments</comments>
		<pubDate>Tue, 20 Oct 2009 22:08:03 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[University Project]]></category>
		<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[dissertation]]></category>
		<category><![CDATA[Distributed Computing]]></category>
		<category><![CDATA[Proposal]]></category>
		<category><![CDATA[References]]></category>
		<category><![CDATA[simulation]]></category>
		<category><![CDATA[Virtual world]]></category>

		<guid isPermaLink="false">http://hazelmckendrick.com/?p=1577</guid>
		<description><![CDATA[Having spoken to Henry Fortuna yesterday about my new project topic, I&#8217;m feeling more confident about its suitability. It was established both that the particular problem I attempt to tackle will have a huge attempt on the project overall, and also that a simulation of characters moving in a virtual world should be a feasible [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://hazelmckendrick.com/wp-content/uploads/2009/10/3008734547_f7893c27a0_b-300x200.jpg" alt="3008734547_f7893c27a0_b" title="3008734547_f7893c27a0_b" width="300" height="200" class="alignright size-medium wp-image-1599" /> Having spoken to Henry Fortuna yesterday about my new project topic, I&#8217;m feeling more confident about its suitability.  It was established both that the particular problem I attempt to tackle will have a huge attempt on the project overall, and also that a simulation of characters moving in a virtual world should be a feasible situation.</p>
<p>Although I haven&#8217;t had as much time as I would have hoped for to construct another research question and I realise my ideas still require a lot of refinement, I have a (<i>very</i>) rough first draft of my proposal below.  Hopefully I can re-write and revise this based on any feedback I receive.  It&#8217;s all text from here on in because this is <i>serious business</i> &#8211; photo thanks to <a href="http://www.flickr.com/photos/theeponymousone/3008734547/">Daniel Conway</a>..<br />
<span id="more-1577"></span></p>
<h3>Introduction</h3>
<p>The aim of the investigation is to demonstrate how a series of computers, working in parallel, can be used to process and manage entities in a simple virtual world.  Techniques to manage distribution and handle a range of tasks concurrently, as well as for dealing with scalability and fault tolerance will be considered. </p>
<h3>Motivation</h3>
<p>Concurrency has become more and more of a prominent issue within software development, even a necessity to make the most of modern advances in hardware (Davies and Shrout, 2009).  With the majority current gaming systems sporting multiple-core CPUs (Valve Corporation, 2009) and consoles tailored towards parallel computation (Stokes, 2008), the importance and currency of this issue is particularly applicable to games programming. </p>
<p>However, nowhere is this issue more apparent than concerning the development of servers for Massively Multi-player Online Games.  These systems must be capable of managing a range of tasks concurrently, dealing with variations in load while still maintaining a stable throughpu (Waldo, 2008).  Even if it were possible to use a single machine for this endeavour, running costs alone(Atwood, 2007) make employing a variable number of distributed nodes a worthwhile consideration.</p>
<p>As such this specialised area of games development combines the problems of developing parallel applications with the issues of distributed computing, but unlike render farms which can take hours to produce movie frames (Christensen, P. H. et al, 2006), or scientific investigations which might extend for years at a time (SETI@home, 2009), results must be calculated in fractions of a second to allow the game to progress.  </p>
<p>Improvements to the organisation and throughput of clusters of locally distributed machines can offer clear benefits to the scope and hardware requirements for running massively multi-player online games.</p>
<h3>Research Question</h3>
<blockquote><p>How can the processing of a real-time virtual environment benefit from parallelisation over multiple distributed computer systems?</p></blockquote>
<h3>Addressing the Question</h3>
<p>Initially, a simplest-solution framework will be created to allow for parallel tasks to be distributed over multiple networked systems, overseen by a central server.  The desired simulation will be built on this and will involve the creation of a simple 2D environment, and characters which will be made to navigate and perform actions within it.  From this point the simulation will be optimised and improved, in particular investigating whether and how load balancing can increase performance and minimise hardware requirements. </p>
<p>Although performance of the simulation will be measured in terms of throughput, a range of factors will be considered when evaluating the solution and simply allowing processing to occur over multiple systems should answer the question to a large extent.</p>
<h3>Resources and Requirements</h3>
<p>Although ideally a Beowulf cluster (Beowulf, 2009) could be set up to allow a range of existing software to be utilised, this would involve additional requirements &#8211; most notably the installation of the Linux (or another *NIX) operating system to multiple machines.  There are few reasons why a similar setup could not be achieved using the Windows operating system currently installed on available lab computers.  Multi-platform support could possibly be investigated through my own hardware, if suitable libraries and approaches were chosen for the project.</p>
<p>Although the project will focus on distributed computation, systems with multiple CPU cores should prove beneficial to the simulation.  These should be available through the dual-core processors in the lab computers.</p>
<p>In terms of software, again the laboratory machines should provide the necessary packages, which might be supplemented with open source tools and libraries.</p>
<h3>References</h3>
<ul>
<li>Davies, L and Shrout, R. 2009. <i>Who Moved the Goal Posts? The Rapidly Changing World of CPUs</i> [online] Available from: <a href="http://www.gamasutra.com/view/feature/4168/sponsored_feature_who_moved_the_.php">http://www.gamasutra.com/view/feature/4168/sponsored_feature_who_moved_the_.php</a> [Accessed October 2009]<br />&nbsp;</li>
<li>Valve Corporation. 2009. <i>Steam Hardware Survey</i> [online] Available from: <a href="http://store.steampowered.com/hwsurvey/">http://store.steampowered.com/hwsurvey/</a> [Accessed October 2009]<br />&nbsp;</li>
<li>Stokes, J. 2008. <i>Game Console Architecture In-Depth</i> [online] Available from: <a href=http://arstechnica.com/hardware/news/2008/09/game-console-architecture-in-depth.ars">http://arstechnica.com/hardware/news/2008/09/game-console-architecture-in-depth.ars</a> [Accessed 2009]<br />&nbsp;</li>
<li>Waldo, J. 2008. <a href="http://portal.acm.org/citation.cfm?id=1483101.1483105&#038;coll=ACM&#038;dl=ACM&#038;CFID=58718348&#038;CFTOKEN=53308178">Scaling in Games &#038; Virtual Worlds</a>. <i>ACM Queue</i>. 6(7), pp.10-16.<br />&nbsp;</li>
<li>Atwood, J. 2007. <i>When Hardware is Free, Power is Expensive</i> [online] <a href=http://www.codinghorror.com/blog/archives/000868.html">http://www.codinghorror.com/blog/archives/000868.html</a> [Accessed May 2007]<br />&nbsp;</li>
<li>Christensen, P. H. et al, 2006.  Ray Tracing for the Movie &#8216;Cars&#8217;. In: <i>Proceedings of the IEEE Symposium on Interactive Ray Tracing 2006, Salt Lake City USA September 18-20.</i> IEEE. pp.1-6. [online] Available from: <a href="http://graphics.pixar.com/library/RayTracingCars/paper.pdf">http://graphics.pixar.com/library/RayTracingCars/paper.pdf</a>. [Accessed October 2009]<br />&nbsp;</li>
<li>SETI@home, 2009. [online] <a href="http://setiathome.berkeley.edu/sah_about.php">http://setiathome.berkeley.edu/sah_about.php</a>[Accessed October 2009]<br />&nbsp;</li>
<li>Beowulf. 2009 [online] <a href="http://www.beowulf.org/overview/index.html">http://www.beowulf.org/overview/index.html</a> [Accessed 2008]<br />&nbsp;</li>
</ul>
<h3>Bibliography</h3>
<p>As this is a rough draft, please see my <a href="http://delicious.com/karsithe/Concurrency">relevant delicious links</a>.  These are missing references to books, ACM publications, journals I can/could only read within the university and older bookmarks which I have found useful, so I will attempt to update in the near future with a refined, current listing.</p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/a-sandpaper-like-proposal-draft/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Re-thinking My Honours Project Topic</title>
		<link>http://hazelmckendrick.com/journal/re-thinking-my-honours-project-topic</link>
		<comments>http://hazelmckendrick.com/journal/re-thinking-my-honours-project-topic#comments</comments>
		<pubDate>Fri, 16 Oct 2009 15:07:11 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[University Project]]></category>
		<category><![CDATA[Concurrency]]></category>
		<category><![CDATA[dissertation]]></category>
		<category><![CDATA[Distributed Computing]]></category>
		<category><![CDATA[Other Abertay Students]]></category>
		<category><![CDATA[worksheet]]></category>

		<guid isPermaLink="false">http://hazelmckendrick.com/?p=1554</guid>
		<description><![CDATA[As you may have gathered from my previous post I&#8217;ve been having some doubts and concerns about my honours project topic for some time, and have continued to consider possible alternatives throughout the start of term. Having completed further research, I strongly feel that one of these alternative topics in particular would be better suited [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://hazelmckendrick.com/wp-content/uploads/2009/10/3720871677_5134a85c87-247x300.jpg" alt="3720871677_5134a85c87" title="3720871677_5134a85c87" width="247" height="300" class="alignleft size-medium wp-image-1562" />As you may have gathered from my <a href="http://hazelmckendrick.com/journal/project-progress-and-meeting">previous post</a> I&#8217;ve been having some doubts and concerns about my honours project topic for some time, and have continued to consider possible alternatives throughout the start of term. </p>
<p>Having completed further research, I strongly feel that one of these alternative topics in particular would be better suited both as an honours project and as something I personally would like to investigate.  Although this decision is not yet final and requires much further refinement, I hope that completing the original worksheets and (potentially) receiving some feedback will aid me in reaching a hasty yet prudent decision.</p>
<p><span id="more-1554"></span></p>
<h3>1. State the topic of interest that you may wish to take forward into a project.</h3>
<p>Distributed Parallel Computing.<br />
Splitting an appropriate problem across multiple processing units with independent memory, for example using separate machines on a local area network.  The aim would be to establish how much of a performance gain (if any) is given above processing on a single machine, or is given by more intelligent methods of splitting workloads.  Theoretical gains could be compared to those achieved in practice. </p>
<h3>2. Indicate the issues surrounding this topic that you may wish investigate.</h3>
<p><img src="http://hazelmckendrick.com/wp-content/uploads/2009/10/3720871677_5134a85c87-247x300.jpg" alt="3720871677_5134a85c87" title="3720871677_5134a85c87" width="247" height="300" class="alignright size-medium wp-image-1562" />
<ul>
<li>Techniques and patterns for concurrency and parallelisation.
<ul>
<li>How can systems be kept in sync?</li>
<li>How can errors and faults be detected and compensated for?</li>
<li>Can redundancy be built in to accommodate the loss or addition of processing units?</li>
<li>But does it <i>scale</i>?</li>
<li>How does the solution allow for fair comparisons between approaches?</li>
<li>How can workload be balanced between different systems?</li>
</ul>
</li>
<li>Adapting parallel solutions to use across a network
<ul>
<li>How much data needs to be transferred?</li>
<li>How are varying transfer speed and reliabilities dealt with?</li>
<li>How is data loss compensated for?</li>
</ul>
</li>
<li>Available hardware and software
<ul>
<li>Must all hardware involved be identical?</li>
<li>Can the solution be ported to alternative operating environments?</li>
<li>What supporting libraries are suitable for this task?</li>
<li>Could graphics or console hardware be used additionally or alternatively?</li>
</ul>
</li>
<li>Uses or problem areas which could benefit
<ul>
<li>Rendering such as ray-tracing or ambient occlusion.</li>
<li>Grid based or particle based simulations.</li>
<li>Spatial, multi-character and world based simulations.</li>
<li>High dimensional noise generation.</li>
</ul>
</li>
</ul>
<h3>3. Outline your initial ideas about how you would carry out the practical aspects of the project. i.e. what do you envisage yourself actually doing for the project.</h3>
<p><img src="http://hazelmckendrick.com/wp-content/uploads/2009/10/3720872741_d7363c62c5-225x300.jpg" alt="3720872741_d7363c62c5" title="3720872741_d7363c62c5" width="225" height="300" class="alignleft size-medium wp-image-1563" />As I mentioned above, I&#8217;m still unsure of the type of application I&#8217;d like to focus on for this project.  Distributed rendering appears to be a very suitable process which I believe would be achievable in the limited time available.<br />
However, I would be particularly interested in the idea of taking a huge number of characters within a map or area and performing operations on each of these: collision detection, pathfinding, flocking behaviours or primitive AI behaviours.  In this way workload could be split by population densities at a given time or by given fixed areas, and comparisons performed.  I also think this would result in an exciting, scalable demonstration if some simple visualisations were shown.</p>
<p>In either case, the practical aspects of the project would involve creating a flexible simplest-case framework to allow trivial computations to be performed remotely.  This would then be expanded to deal with the problem chosen, again in its simplest form.  The application would then be iteratively improved in terms of redundancy and fault recovery, workload balancing, optimisation, with depth and complexity increased, measuring performance at each stage.  </p>
<p>Any feedback on the idea would be hugely appreciated, as ever.</p>
<p><i><small>Images thanks to <a href="http://www.flickr.com/photos/nurpax/">nurpax</a></small></i></p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/re-thinking-my-honours-project-topic/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

