Як можна вирішити паралельно гравітаційну задачу n-тіла?


25

Як можна гравітаційну задачу n-тіла вирішити чисельно паралельно?

Чи можливий компроміс точності та складності?

Як точність впливає на якість моделі?


У цьому документі описані можливі реалізації з OpenMP.
Геремія

Відповіді:


27

Існує велика різноманітність алгоритмів; Барнс Хат - популярний метод , а метод швидкого мультиполю - набагато більш досконала альтернатива.O(NlogN)O(N)

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

Ви знайдете нещодавній документ, що обговорює FMM на машинах з високим розміром шрифту тут .


2
BH, що також називається деревним кодом, здається, переважний з низькою точністю. Ось документ, де методи поєднуються адаптивно, але я ще не бачив цієї роботи на практиці.
Метт Кнеплі


8

В якості альтернативного джерела ви також можете розглянути методи, подібні до Евальда на основі сітки. Генезис методів "сітки частинок" (таких як PPPM та згладжена сітка частинок Евальда) полягає в моделюванні галактик для астрофізики; підключення до зарядів було ненавмисним побічним ефектом (що трапилося, зрештою, обігнати початкове використання).

Зовсім недавно з'явилася також література про методи багаторівневого підсумовування, які по духу схожі на швидкі багатополюсні методи та Барнса-Хату, але можуть запропонувати переваги в різних обставинах (більш загальна та гнучка геометрія, деяке підвищення ефективності тощо).


8

Що стосується класичної проблеми гравітаційного n-тіла , я думаю, що наступні два документи добре справляються з обговоренням кишок паралельної реалізації для кроку оцінки сили. Хоча статті обговорюють реалізацію графічного процесора, вони непогано працюють над обговоренням паралелізму та надають деталі алгоритмів:

У цій роботі Nyland, Harris та Prins представлений алгоритм прямого n-body в CUDA для GPU.

Цей інший документ Йокоти та Барби добре обговорює код дерева та швидкий багатополюсний алгоритм також у контексті GPU-обчислень

Ваші запитання щодо точності чисельних моделювання n-тіла трохи більше задіяні, і є так багато важливих деталей, що відповідь може породити кілька книг. Я думаю, що найкраще думати - це дати вам декілька посилань на книги. Я пропоную:

Гравітаційні імітації N-тіла від Sverre J. Aarseth

Комп'ютерне моделювання за допомогою частинок Хокні та Іствуда. (Вибачте, немає версії PDF)


4

Якщо вам потрібен простий підхід до впровадження, який не є оптимальним в асимптотичному сенсі, ви можете розглянути можливість використання комунікаційних операцій все зібрати. Оскільки кожному з N-тіл необхідно знати гравітаційний ефект інших тіл, кожному процесору важливо знати весь набір даних. Це те, що роблять всі операції збору. Є гарна книга: Паралельне програмування на C з MPI та OPENMP Майкла Дж. Куїнна (2004), яка обговорює саме цю тему на стор. 82. Можливо, варто поглянути, щоб почати.


3
Ви описуєте "пряме підсумовування", яке є алгоритмом з величезним обсягом зв'язку, тому його можна рекомендувати лише для надзвичайно малих проблем. Оскільки взаємодія має структуру, "кожному процесору не потрібно знати весь набір даних". Ваша пропозиція нагадує, як рекомендувати розв’язати розріджену лінійну систему з щільною лінійною алгеброю або сортувати за допомогою сортування бульбашок. O(n2)
Джед Браун

Це правда. Хоча, як я вже говорив раніше, це проста реалізація, не обов'язково ефективна.
Павло

+1 якось всі інші відповіді припускають, що ОП шукає ефективності терасу або петизалі. FMM і подібні мають сенс лише протистояти більш наївним підходам.
Стефано М

1

Перегляньте Google Scholar і шукайте посилання на HACC та GADGET, серед інших кодів.


2
Чи можете ви додати трохи детальніше, чому ви рекомендуєте HACC та GADGET?
Пол

1
Вони обидва гучних космологічних кодів, які включають гравітаційні розв'язувачі.
Джефф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.