10.06.2013
В суперкомпьютерном центре Барселоны (Barcelona Supercomputing Centre) разработано высокопроизводительное программное обеспечение для построения крупномасштабных агент-ориентированных моделей – Пандора (Pandora). Также Пандора обеспечивает полную поддержку геоинформационных систем в том случае, если для функционирования моделей необходима географическая привязка агентов.
Результат каждой симуляции хранится в иерархическом формате данных (Hierarchical Data Format, HDF), предназначенном для хранения большого количества цифровой информации. Этот формат поддерживается большинством ГИС.
Пандора дополняется программой Кассандра (Cassandra), позволяющей визуализировать процесс выполнения симуляции с использованием 2D и 3D графики.
Ниже перечислены ключевые особенности Пандоры и Кассандры:
- все возможности C++ для разработки, выполнения и анализа агентных моделей и клеточных автоматов;
- параллельное выполнение программного кода, используя интерфейсы MPI/OpenMP;
- высокая масштабируемость;
- поддержка ГИС;
- возможность разработки распределенных агентов, построенных с использованием технологий искусственного интеллекта.
Разработчики предлагают использовать Пандору для следующих исследовательских направлений:
- социальные явления, анализ социальных сетей и межличностные взаимодействия;
- сложные социально-экономические системы;
- миграционные процессы и др.
Механизм работы Пандоры отображен на рис. 1. После концептуального определения каркаса создаваемой модели, ее первая реализация может быть разработана с помощью скриптов языка Python, а полученные результаты затем обрабатываются с использованием нескольких инструментов анализа. Если для реализации модели потребуются дополнительные аппаратные ресурсы, Пандора может конвертировать программный код в C++ версию, при этом автоматически его распараллелив. Таким образом, по заверению разработчиков, от пользователя не требуется дополнительных усилий по адаптации программного кода для узлов суперкомпьютера.
Рис. 1. Механизм реализации агентных моделей с использованием Пандоры
Среда функционирования агентов в Пандоре определяется как набор слоев, содержащих растровые карты, соответствующие стандартам ГИС. В процессе симуляции, моделируемая среда, а также населяющие ее агенты, равномерно распределяются по узлам суперкомпьютера.
Такой подход наилучшим образом решает проблему распределения вычислительной нагрузки при моделировании древних сообществ, в которых не было средств телекоммуникации.
Разработанные модели являются хорошомасштабируемыми, хотя есть проблема с синхронизацией действий агентов. В Пандоре она решается путем разделения каждого узла на четыре равные части (0, 1, 2 и 3). Программный код всех агентов, обрабатываемых в части 0 выполняется одновременно и без конфликтов, поскольку эта часть узла не является смежной по отношения к аналогичной части другого узла (рис. 2). Полученные в результате выполнения кода результаты далее передаются для последовательного выполнения соседним частям (1, 2 и 3). После этого, данные всех узлов синхронизуются и выполнение модели переходит на следующий шаг.
Рис. 2. Схема типового узла, поделенного на четыре раздела, последовательно выполняющих вычисления
Синхронизация в Пандоре осуществляется с помощью интерфейса MPI. Кроме того, директивы OpenMP используются для распределения вычислительной нагрузки по различным процессорам внутри узла. При анализе разных пакетов для разработки агентных моделей было выявлено, что наиболее ресурсоемкими участками кода являются моменты сбора информации и решения о порядке выполнения программных инструкций на следующем шаге. В Пандоре, для одного процессора выполняемый шаг модели содержит в себе три составляющих метода. В рамках первого из них (updateKnowledge) агенты собирают информацию, но не могут изменять параметры среды и состояния других агентов. Второй метод (SelectAction) позволяет агентам принимать решения и генерировать последовательность дальнейших действий, но по-прежнему не разрешает проводить какие-либо изменения. Наконец во время третьего метода (updateState) агенты меняют свое состояние. В случае использования множества процессоров, Пандора равномерно распараллеливает между ними объем вычислений первых двух методов (наиболее ресурсоемких). Что касается процедур третьего метода, то они выполняются последовательно с тем, чтобы избежать возможных конфликтов.
На первый взгляд разделение шага на три исполняемых метода кажется усложнением. Но в то же время, реализация шага с помощью одного метода требует усилий по корректному определению последовательности выполнения различных процедур в рамках моделируемых сценариев (рис. 3). Таким образом, разделение шага на три метода позволяет снять эти проблемы.
Рис. 3. Программная реализация агента в рамках цикла
Более подробно про проект можно прочитать здесь и в следующей статье: [Wittek P., Rubio-Campillo X. (2012): Scalable agent-based modelling with cloud HPC resources for social simulations. IEEE 4th International Conference on Cloud Computing Technology and Science (CloudCom), December 3-6, Taipei, Taiwan].