Какие конкретные проблемы внедрения или узкие места необходимо решить для реализации агентной модели или программного обеспечения для моделирования 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], означает, что, скорее всего, при этом есть некоторые проблемы. Что это за проблемы и как их можно решить?
Материалы, которые мне удалось найти по теме:
«Повышение производительности программного обеспечения для моделирования с использованием параллелизма и параллелизма Haskell», диссертация Николаоса Безиргианниса
http://dspace.library.uu.nl/handle/1874/284708NetLogo / документация / FAQ #Multiprocessing
(«Для запуска одной модели используется только один процессор»).
http://ccl.northwestern.edu/netlogo/docs/faq.html#multiprocessing"Вопрос о параллельном запуске"
http://netlogo-users.18673.x6.nabble.com/Question-about-parallel-running-td4869363.html«Как запустить несколько процедур одновременно в NetLogo?» вопрос по StackOverflow
Как запустить несколько процедур одновременно в NetLogo?Ask-concurrent в документации NetLogo
(«поведение ask-concurrent полностью детерминировано»).
http://ccl.northwestern.edu/netlogo/docs/programming.html#ask-concurrentBehaviorSpace в документации NetLogo
http://ccl.northwestern.edu/netlogo/docs/behaviorspace.html