<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>Thanks Richard. Now that's what I'm talking about!</p>
<p>Miles<br>
</p>
<br>
<div class="moz-cite-prefix">On 9/20/16 6:14 AM, Richard Carlsson
wrote:<br>
</div>
<blockquote
cite="mid:CANKG3zmLnHk1v+UZZRNPoxsPjHBADymtH2iB6LFr-ijCVSDQzw@mail.gmail.com"
type="cite">
<div dir="ltr">2016-09-19 17:55 GMT+02:00 Miles Fidelman <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:mfidelman@meetinghouse.net" target="_blank">mfidelman@meetinghouse.net</a>></span>
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF">I'm actually thinking about
military simulation - where the model is essentially:<br>
<br>
- every simulator (e.g., a flight sim, or a tank) is
running on its own machine, complete with local world
model and image generation (necessary to keep up with
jitter-free image generation during high-g turns - you
don't want pilots to puke all over the simulators)<br>
<br>
- there's a lot of dead reckoning going on locally - the
only things that cross the network are deltas and
events, generally sent by multicast<br>
<br>
- everything is synchronized by GPS time-stamp<br>
<br>
I discovered Erlang when I realized that we (the company
I worked for) took a very different approach for
simulating "virtual forces" (think non-player
characters) - when we simulated 1000 tanks, on one
machine, each tank would be an object, and we had 4
threads winding their way through every object, 20 time
a second. Turns out that the main loops are real
spaghetti code that breaks every time a new property
gets added to an object.<br>
<br>
I started wondering why we didn't just have a process
per simulated object - essentially the way we treated
the person-in-the-loop simulators. The answer, of
course, being context switching overhead.<br>
<br>
Then, I discovered Erlang. And I started thinking - why
not just have a process per object.<span class="gmail-"></span><br>
<span class="gmail-"> </span> </div>
</blockquote>
<div><br>
</div>
<div>Back in the day, there was the Sim94 troop simulation
project, which was pretty successful - and way before
Erlang got multicore support:<br>
<a moz-do-not-send="true"
href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.52.6023">http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.52.6023</a>
<br>
</div>
</div>
<br>
</div>
<div class="gmail_extra">This related master's thesis might also
be of interest (oops, turns out I was the examiner):<br>
<a moz-do-not-send="true"
href="https://www.scribd.com/document/184935294/Design-Patterns-for-Simulations-in-Erlang">https://www.scribd.com/document/184935294/Design-Patterns-for-Simulations-in-Erlang</a><br>
<br>
</div>
<div class="gmail_extra">I also found this newer work while
searching, but I haven't read it myself:<br>
<a moz-do-not-send="true"
href="https://www.researchgate.net/publication/233985869_Parallel_Discrete_Event_Simulation_with_Erlang">https://www.researchgate.net/publication/233985869_Parallel_Discrete_Event_Simulation_with_Erlang</a><br>
<br>
</div>
<div class="gmail_extra">Finally, I found this, which made me
double-check that I wasn't answering a post from 2012 :-) <a
moz-do-not-send="true"
href="http://erlang.org/pipermail/erlang-questions/2012-March/065136.html">http://erlang.org/pipermail/erlang-questions/2012-March/065136.html</a><br>
</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra"> /Richard<br>
<br>
</div>
</div>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
In theory, there is no difference between theory and practice.
In practice, there is. .... Yogi Berra</pre>
</body>
</html>