Відповіді:
Існує велика різноманітність алгоритмів; Барнс Хат - популярний метод , а метод швидкого мультиполю - набагато більш досконала альтернатива.
Обидва методи використовують структуру даних про дерево, де вузли по суті взаємодіють лише з найближчими сусідами на кожному рівні дерева; можна подумати про розділення дерева між сукупністю процесів на достатній глибині, а потім їх взаємодія лише на найвищих рівнях.
Ви знайдете нещодавній документ, що обговорює FMM на машинах з високим розміром шрифту тут .
Подивіться на швидкий багатополюсний метод . Він високо масштабований і . Це дозволяє торгувати між точністю та вартістю. Ось приклад, коли він працює на 42 Tflops на кластері GPU .
В якості альтернативного джерела ви також можете розглянути методи, подібні до Евальда на основі сітки. Генезис методів "сітки частинок" (таких як PPPM та згладжена сітка частинок Евальда) полягає в моделюванні галактик для астрофізики; підключення до зарядів було ненавмисним побічним ефектом (що трапилося, зрештою, обігнати початкове використання).
Зовсім недавно з'явилася також література про методи багаторівневого підсумовування, які по духу схожі на швидкі багатополюсні методи та Барнса-Хату, але можуть запропонувати переваги в різних обставинах (більш загальна та гнучка геометрія, деяке підвищення ефективності тощо).
Що стосується класичної проблеми гравітаційного n-тіла , я думаю, що наступні два документи добре справляються з обговоренням кишок паралельної реалізації для кроку оцінки сили. Хоча статті обговорюють реалізацію графічного процесора, вони непогано працюють над обговоренням паралелізму та надають деталі алгоритмів:
У цій роботі Nyland, Harris та Prins представлений алгоритм прямого n-body в CUDA для GPU.
Цей інший документ Йокоти та Барби добре обговорює код дерева та швидкий багатополюсний алгоритм також у контексті GPU-обчислень
Ваші запитання щодо точності чисельних моделювання n-тіла трохи більше задіяні, і є так багато важливих деталей, що відповідь може породити кілька книг. Я думаю, що найкраще думати - це дати вам декілька посилань на книги. Я пропоную:
Гравітаційні імітації N-тіла від Sverre J. Aarseth
Комп'ютерне моделювання за допомогою частинок Хокні та Іствуда. (Вибачте, немає версії PDF)
Якщо вам потрібен простий підхід до впровадження, який не є оптимальним в асимптотичному сенсі, ви можете розглянути можливість використання комунікаційних операцій все зібрати. Оскільки кожному з N-тіл необхідно знати гравітаційний ефект інших тіл, кожному процесору важливо знати весь набір даних. Це те, що роблять всі операції збору. Є гарна книга: Паралельне програмування на C з MPI та OPENMP Майкла Дж. Куїнна (2004), яка обговорює саме цю тему на стор. 82. Можливо, варто поглянути, щоб почати.