4

エージェントベースのモデルや NetLogo などの ABM モデリング ソフトウェアを実装するために取り組む必要のある具体的な実装上の問題やボトルネックは何ですか?

TL;DR バージョン:

ABM ソフトウェア、特に NetLogo を複数の CPU を利用できるように実装する際の問題は何ですか?
それらの問題に取り組む試みは何ですか?
NetLogoを並列化するには何が必要ですか?
NetLogo は並列モードでどのように動作しますか?

より長いバージョン:

現在、NetLogo は一度に 1 つのエージェントを順番に進めてシミュレーションを実行します。複数のモデルを単一のマシンで (別々の NetLogo インスタンスで) 実行したり、特定のモデルの異なる構成を (単一の NetLogo インスタンスで) BehaviorSpace [6] を使用して実行したりすることは可能ですが、単一のモデルは 1 つの CPU で実行されます [ 2、3]。

ask-concurrent コマンド [4, 5] によってエージェントの動作を進める疑似並列モードもありますが、複数の CPU での並列実行は必要ありません。

NetLogo を Haskell で実装して並列化する試みについて読んだことがあります (Nikolaos Bezirgiannis による HLogo 実装) [1]。ただし、研究プロジェクトの著者は次のように述べています。エージェント人口が増加して STM 競合が大量に発生すると、HLogo のパフォーマンスが大幅に低下します。」</p>

非並列のシーケンシャルな方法でシミュレーションを実行すると、明らかに並列実行に比べて大幅に遅くなります。NetLogo の実装が [単一モデルの実行に関して] マルチプロセッシング/並列処理を使用しないという事実 [2, 3] は、そうすることにいくつかの問題がある可能性が高いことを意味します。それらの問題は何で、どのように解決できるのでしょうか?

このトピックについて私が見つけた資料:

  1. Nikolaos Bezirgiannis による「Haskell の同時実行性と並列性を使用したシミュレーション ソフトウェアのパフォーマンスの改善」論文
    http://dspace.library.uu.nl/handle/1874/284708

  2. NetLogo / documentation / FAQ #Multiprocessing
    (「1 つのモデルの実行には、1 つのプロセッサのみが使用されます。」)
    http://ccl.northwestern.edu/netlogo/docs/faq.html#multiprocessing

  3. 「並列実行についての質問」<br/> http://netlogo-users.18673.x6.nabble.com/Question-about-parallel-running-td4869363.html

  4. 「NetLogoで複数の手順を同時に実行する方法は?」StackOverflow に関する質問
    NetLogo で複数のプロシージャを同時に実行するには?

  5. NetLogo ドキュメントの Ask-concurrent
    (「ask-concurrent の動作は完全に決定論的です。」)
    http://ccl.northwestern.edu/netlogo/docs/programming.html#ask-concurrent

  6. NetLogo ドキュメントの BehaviorSpace
    http://ccl.northwestern.edu/netlogo/docs/behaviorspace.html

4

0 に答える 0