<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jun 25, 2015 at 10:25 AM, Sturla Molden <span dir="ltr"><<a href="mailto:sturla.molden@gmail.com" target="_blank">sturla.molden@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">On 25/06/15 16:31, Nick Coghlan wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
3. The potential for collisions between objects means it isn't an<br>
embarrassingly parallel problem where the different computational<br>
threads can entirely ignore the existence of the other threads<br>
</blockquote>
<br></span>
Well, you can have a loop that updates all particles, e.g. by calling a coroutine associated with each particle, and then this loop is an embarrassingly parallel problem. You don't need to associate each particle with its own thread.<br>
<br>
It is bad to teach students to use one thread per particle anyway. Suddenly they write a system that have thousands of threads.</blockquote><div><br></div><div>Understood that this is merely an example re: threading, but</div><div>BSP seems to be the higher-level algorithm for iterative graphs with topology:</div><div><br></div><div>* <a href="https://en.wikipedia.org/wiki/Bulk_synchronous_parallel">https://en.wikipedia.org/wiki/Bulk_synchronous_parallel</a></div><div>* <a href="http://googleresearch.blogspot.com/2009/06/large-scale-graph-computing-at-google.html">http://googleresearch.blogspot.com/2009/06/large-scale-graph-computing-at-google.html</a></div><div>* <a href="https://giraph.apache.org/">https://giraph.apache.org/</a><br></div><div>* <a href="https://spark.apache.org/docs/latest/">https://spark.apache.org/docs/latest/</a></div><div>  * <a href="https://spark.apache.org/docs/latest/graphx-programming-guide.html#pregel-api">https://spark.apache.org/docs/latest/graphx-programming-guide.html#pregel-api</a> (BSP)</div></div>  * <a href="https://spark.apache.org/news/spark-wins-daytona-gray-sort-100tb-benchmark.html">https://spark.apache.org/news/spark-wins-daytona-gray-sort-100tb-benchmark.html</a></div><div class="gmail_extra">  * <a href="https://spark.apache.org/docs/latest/api/python/">https://spark.apache.org/docs/latest/api/python/</a> (no graphx BSP yet, unfortunately)</div><div class="gmail_extra">* <a href="https://github.com/xslogic/phoebus">https://github.com/xslogic/phoebus</a> (Erlang, HDFS, Thrift)</div><div class="gmail_extra">* <a href="https://github.com/mnielsen/Pregel/blob/master/pregel.py">https://github.com/mnielsen/Pregel/blob/master/pregel.py</a> (Python)</div><div class="gmail_extra"><br></div><div class="gmail_extra">Intra-machine optimization could also be useful.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div></div>