4

What are the specific implementation problems or bottlenecks that need to be tackled to implement an agent-based model or ABM modeling software, such as NetLogo?

TL;DR version:

What are the issues associated with implementing ABM software, NetLogo in particular, so that it is able to make use of multiple CPUs?
What are the attempts at tackling those issues?
What would be required to parallelize NetLogo?
How differently would NetLogo work in parallel mode?

Longer version:

Currently, NetLogo executes simulations by sequentially proceeding one agent at a time. Although it is possible to run multiple models on a single machine (in separate NetLogo instances), or even different configurations of a specific model (in a single NetLogo instance) by means of BehaviorSpace [6], a single model runs on one CPU [2, 3].

There also is a pseudo-parallel mode of proceeding agents' behaviors by ask-concurrent command [4, 5], but it does not entail parallel execution on multiple CPUs.

I have read about an attempt at parallelizing NetLogo implementing it in Haskell (HLogo implementation by Nikolaos Bezirgiannis) [1]. However, the author of the research project notes that “[e]xecution results show that HLogo is faster than NetLogo for most cases, particularly where the number of agents stay low. When the agent population grows as to produce significant number of STM conflicts, the performance of HLogo considerably drops.”

Running simulations in a non-parallel, sequential manner is a huge slow-down compared to parallel execution, clearly. The fact that NetLogo implementation does not use multiprocessing/parallelism [with regard to single model runs] [2, 3] means that, most likely, there are some problems in doing so. What are those problems and how could they be solved?

Materials that I have been able to find about the topic:

  1. “Improving Performance of Simulation Software Using Haskell’s Concurrency & Parallelism” thesis by Nikolaos Bezirgiannis
    http://dspace.library.uu.nl/handle/1874/284708

  2. NetLogo / documentation / FAQ #Multiprocessing
    (“For a single model run, only one processor is used.”)
    http://ccl.northwestern.edu/netlogo/docs/faq.html#multiprocessing

  3. “Question about parallel running”
    http://netlogo-users.18673.x6.nabble.com/Question-about-parallel-running-td4869363.html

  4. “How to run several procedures simultaneously in NetLogo?” question on StackOverflow
    How to run several procedures simultaneously in NetLogo?

  5. Ask-concurrent in NetLogo documentation
    (“the behavior of ask-concurrent is completely deterministic.”)
    http://ccl.northwestern.edu/netlogo/docs/programming.html#ask-concurrent

  6. BehaviorSpace in NetLogo documentation
    http://ccl.northwestern.edu/netlogo/docs/behaviorspace.html

Community
  • 1
  • 1
Agent
  • 41
  • 2
  • 4
    Want a Ph.D? A good answer to this could earn you one. – Seth Tisue Aug 01 '14 at 02:19
  • @SethTisue, thanks for adding links to my post. I was not aware that these questions pose such difficult issues / challenges. Does it mean that, as for now and probably for the foreseeable future, this question is unanswarable? – Agent Aug 02 '14 at 13:52
  • @SethTisue what are your thoughts on actor model of concurrency? Have you considered it as a viable option for NetLogo? – Agent Jan 22 '15 at 19:35
  • 1
    I'd suggest trying to start a discussion about it on netlogo-devel. This isn't really the place. – Seth Tisue Jan 23 '15 at 00:50
  • Relevant question has been asked on netlogo-devel google group: https://groups.google.com/forum/#!topic/netlogo-devel/dOUAmntqXGQ @SethTisue, feel free to close the question as "no longer relevant" or smth. – Agent Jan 29 '15 at 14:54

0 Answers0