Как гравитационная проблема n-тела может быть решена параллельно?

25

Как гравитационная проблема n-тела может быть решена численно параллельно?

Возможен ли компромисс между точностью и сложностью?

Как точность влияет на качество модели?

Sklavit
источник
Эта статья описывает возможные реализации с OpenMP.
Геремия

Ответы:

27

Существует большое разнообразие алгоритмов; Barnes Hut - это популярный метод , а быстрый мультипольный метод - гораздо более сложная альтернатива O ( N ) .О(NжурналN)О(N)

Оба метода используют древовидную структуру данных, где узлы по существу взаимодействуют только со своими ближайшими соседями на каждом уровне дерева; Вы можете подумать о том, чтобы разделить дерево между наборами процессов на достаточной глубине, а затем заставить их взаимодействовать только на самых высоких уровнях.

Вы можете найти недавнюю статью, посвященную обсуждению FMM на машинах с петаскалей, здесь .

Джек Полсон
источник
2
BH, также называемый древовидным кодом, представляется предпочтительным при низкой точности. Вот статья, где методы комбинируются адаптивно, но я еще не видел эту работу на практике.
Мэтт Кнепли
8

В качестве альтернативного источника, вы также можете взглянуть на Ewald-подобные методы на основе меша. Генезис методов «сетки частиц» (таких как PPPM и сглаженная сетка частиц Эвальда) заключается в моделировании галактик для астрофизики; связь с обвинениями была непреднамеренным побочным эффектом (который как раз случайно обгонял первоначальное использование).

В последнее время появилась также некоторая литература по методам многоуровневого суммирования, которая по духу близка к быстрым мультипольным методам и Barnes-Hut, но может предложить преимущества в различных обстоятельствах (более общая и гибкая геометрия, некоторое повышение эффективности и т. Д.).

aeismail
источник
8

Что касается классической гравитационной задачи n-тела , я думаю, что следующие две статьи хорошо справляются с обсуждением интуиции параллельной реализации для этапа оценки силы. Хотя в статьях обсуждается реализация GPU, они хорошо справляются с обсуждением параллелизма и предоставляют подробности алгоритмов:

В этой статье Nyland, Harris и Prins представлен прямой алгоритм n-body в CUDA для графических процессоров.

В этой другой статье Йокоты и Барбы подробно обсуждается древовидный код и быстрый многополюсный алгоритм также в контексте вычислений на GPU.

Ваши вопросы о точности численного моделирования n-тела немного сложнее, и есть так много важных деталей, что ответ может породить несколько книг. Я думаю, что лучшее, что можно сделать, это дать вам пару ссылок на книги. Я предлагаю:

Гравитационное моделирование N-тела Сверре Дж. Аарсет

Компьютерное моделирование с использованием частиц Хокни и Иствуда. (Извините, нет версии PDF)

fcruz
источник
4

Если вам нужен простой подход к реализации, который не является оптимальным в асимптотическом смысле, вы можете рассмотреть возможность использования коммуникационных операций в целом. Поскольку каждое из N-тел должно знать гравитационное влияние других тел, важно, чтобы каждый процессор знал весь набор данных. Это то, что делают все сборы. Есть хорошая книга Майкла Дж. Куинна (2004), посвященная параллельному программированию на C с использованием MPI и OPENMP, в которой обсуждается именно эта тема на стр. 82. Возможно, стоит взглянуть на нее, чтобы начать.

Пол
источник
3
О(N2)
Это правда. Хотя, как я уже говорил ранее, это простая реализация, не обязательно эффективная.
Павел
+1 почему-то все остальные ответы предполагают, что ОП ищет тера или петаскаль производительность. FMM и akin имеют смысл только против более наивных подходов.
Стефано М
1

Посмотрите Google Scholar и найдите ссылки на HACC и GADGET, среди других кодов.

Джефф
источник
2
Не могли бы вы добавить немного больше информации о том, почему вы рекомендуете HACC и GADGET?
Пол
1
Они оба являются высококлассными космологическими кодами, которые включают гравитационные решатели.
Джефф