Каковы узкие места в реализации параллелизма в NetLogo?

Какие конкретные проблемы внедрения или узкие места необходимо решить для реализации агентной модели или программного обеспечения для моделирования ABM, такого как NetLogo?

Версия TL;DR:

Какие проблемы связаны с внедрением программного обеспечения ABM, в частности NetLogo, чтобы оно могло использовать несколько процессоров?
Какие предпринимаются попытки решить эти проблемы?
Что потребуется для распараллеливания NetLogo ?
Как по-другому будет работать NetLogo в параллельном режиме?

Более длинная версия:

В настоящее время NetLogo выполняет моделирование, последовательно работая с одним агентом за раз. Хотя можно запускать несколько моделей на одном компьютере (в отдельных экземплярах NetLogo) или даже разные конфигурации конкретной модели (в одном экземпляре NetLogo) с помощью BehaviorSpace [6], одна модель работает на одном процессоре [6]. 2, 3].

Существует также псевдопараллельный режим работы агентов с помощью команды ask-concurrent [4, 5], но он не предполагает параллельного выполнения на нескольких процессорах.

Я читал о попытке распараллелить реализацию NetLogo на Haskell (реализация HLogo Николаоса Безиргианниса) [1]. Однако автор исследовательского проекта отмечает, что «результаты [e]execution показывают, что HLogo быстрее, чем NetLogo в большинстве случаев, особенно там, где количество агентов остается небольшим. Когда популяция агентов растет, что приводит к значительному количеству конфликтов STM, производительность HLogo значительно падает».

Очевидно, что запуск симуляций непараллельным последовательным образом значительно замедляет работу по сравнению с параллельным выполнением. Тот факт, что реализация NetLogo не использует многопроцессорность/параллелизм [в отношении одиночных прогонов модели] [2, 3], означает, что, скорее всего, при этом есть некоторые проблемы. Что это за проблемы и как их можно решить?

Материалы, которые мне удалось найти по теме:

  1. «Повышение производительности программного обеспечения для моделирования с использованием параллелизма и параллелизма Haskell», диссертация Николаоса Безиргианниса
    http://dspace.library.uu.nl/handle/1874/284708

  2. NetLogo / документация / FAQ #Multiprocessing
    («Для запуска одной модели используется только один процессор»).
    http://ccl.northwestern.edu/netlogo/docs/faq.html#multiprocessing

  3. "Вопрос о параллельном запуске"
    http://netlogo-users.18673.x6.nabble.com/Question-about-parallel-running-td4869363.html

  4. «Как запустить несколько процедур одновременно в NetLogo?» вопрос по StackOverflow
    Как запустить несколько процедур одновременно в NetLogo?

  5. Ask-concurrent в документации NetLogo
    («поведение ask-concurrent полностью детерминировано»).
    http://ccl.northwestern.edu/netlogo/docs/programming.html#ask-concurrent

  6. BehaviorSpace в документации NetLogo
    http://ccl.northwestern.edu/netlogo/docs/behaviorspace.html


person Agent    schedule 31.07.2014    source источник
comment
Хотите докторскую степень? Хороший ответ на этот вопрос может принести вам один.   -  person Seth Tisue    schedule 01.08.2014
comment
@SethTisue, спасибо за добавление ссылок в мой пост. Я не знал, что эти вопросы ставят такие сложные вопросы/проблемы. Значит ли это, что на данный момент и, вероятно, в обозримом будущем этот вопрос не имеет ответа?   -  person Agent    schedule 02.08.2014
comment
@SethTisue, что вы думаете об актерской модели параллелизма? Рассматривали ли вы его как жизнеспособный вариант для NetLogo?   -  person Agent    schedule 22.01.2015
comment
Я бы предложил попытаться начать дискуссию об этом на netlogo-devel. Это не совсем то место.   -  person Seth Tisue    schedule 23.01.2015
comment
Соответствующий вопрос был задан в группе google netlogo-devel: groups.google. com/forum/#!topic/netlogo-devel/dOUAmntqXGQ @SethTisue, не стесняйтесь закрывать вопрос как неактуальный или что-то в этом роде.   -  person Agent    schedule 29.01.2015