Parallel processing 在NetLogo中实现并行性的瓶颈是什么?

Parallel processing 在NetLogo中实现并行性的瓶颈是什么?,parallel-processing,netlogo,agent-based-modeling,Parallel Processing,Netlogo,Agent Based Modeling,实现基于代理的模型或ABM建模软件(如NetLogo)需要解决哪些具体的实现问题或瓶颈 TL;DR版本: 实施ABM软件,特别是NetLogo,使其能够使用多个CPU,有哪些相关问题? 解决这些问题的尝试是什么? 将NetLogo并行化需要什么? NetLogo在并行模式下的工作方式会有多大不同? 较长版本: 目前,NetLogo通过一次一个代理依次执行模拟。尽管可以通过BehaviorSpace[6]在一台机器上运行多个模型(在单独的NetLogo实例中),甚至可以在一个特定模型的不同配置(在

实现基于代理的模型或ABM建模软件(如NetLogo)需要解决哪些具体的实现问题或瓶颈

TL;DR版本:

实施ABM软件,特别是NetLogo,使其能够使用多个CPU,有哪些相关问题?
解决这些问题的尝试是什么?
将NetLogo并行化需要什么?
NetLogo在并行模式下的工作方式会有多大不同?

较长版本:

目前,NetLogo通过一次一个代理依次执行模拟。尽管可以通过BehaviorSpace[6]在一台机器上运行多个模型(在单独的NetLogo实例中),甚至可以在一个特定模型的不同配置(在单个NetLogo实例中),但单个模型在一个CPU上运行[2,3]

还有一种通过ask concurrent命令[4,5]执行代理行为的伪并行模式,但它不需要在多个CPU上并行执行

我读过一篇关于在Haskell中并行NetLogo实现它的尝试(Nikolaos Bezirgiannis的HLogo实现)[1]。然而,该研究项目的作者指出,“执行结果表明,在大多数情况下,HLogo比NetLogo更快,特别是在代理数量保持较低的情况下。当代理数量增长导致大量STM冲突时,HLogo的性能会显著下降。”

显然,与并行执行相比,以非并行、顺序的方式运行仿真会大大降低速度。NetLogo实现不使用多处理/并行[关于单模型运行][2,3]这一事实意味着,在这样做时很可能存在一些问题。 这些问题是什么?如何解决

我能够找到的关于该主题的材料:

  • Nikolaos Bezirgiannis的“利用Haskell的并发性和并行性改进仿真软件的性能”论文

  • NetLogo/文档/常见问题解答#多处理
    (“对于单个型号的运行,仅使用一个处理器。”)

  • “关于并行运行的问题”

  • “如何在NetLogo中同时运行多个过程?”有关StackOverflow的问题

  • 询问NetLogo文档中的并发问题
    (“ask concurrent的行为是完全确定的。”)

  • NetLogo文档中的行为空间


  • 想要博士学位吗?一个好的答案可以为你赢得一个。@SethTisue,谢谢你添加到我文章的链接。我不知道这些问题会带来如此困难的问题/挑战。这是否意味着,就目前和可能在可预见的未来而言,这个问题是无法回答的?@SethTisue您对并发的参与者模型有何看法?您是否认为它是NetLogo的可行选项?我建议尝试在NetLogo-devel上开始讨论。事实并非如此。netlogo devel google group上已提出相关问题:@SethTisue,请随意以“不再相关”或smth结束该问题。