Comment résoudre en parallèle le problème gravitationnel des n-corps?


Réponses:


27

Il existe une grande variété d'algorithmes; Barnes Hut est une méthode populaire et la méthode multipolaire rapide est une alternative beaucoup plus sophistiquée .O(NbûcheN)O(N)

Les deux méthodes utilisent une structure de données d'arbre où les nœuds n'interagissent essentiellement qu'avec leurs voisins les plus proches à chaque niveau de l'arbre; vous pouvez penser à diviser l'arborescence entre l'ensemble des processus à une profondeur suffisante, puis à les faire coopérer uniquement aux niveaux les plus élevés.

Vous pouvez trouver un article récent sur la FMM sur les machines à pétascale ici .


2
BH, également appelé arbre-code, semble préférable à faible précision. Voici un article où les méthodes sont combinées de manière adaptative, mais je n'ai pas encore vu ce travail en pratique.
Matt Knepley


8

En tant que source alternative, vous pouvez également envisager des méthodes basées sur le maillage comme celles d'Ewald. La genèse des méthodes de "maillage de particules" (comme le PPPM et le maillage de particules lissé Ewald) réside dans des simulations de galaxies pour l'astrophysique; le lien avec les accusations était un effet secondaire non intentionnel (qui s'est finalement avéré dépasser éventuellement l'usage d'origine).

Plus récemment, il existe également de la littérature sur les méthodes de sommation multiniveaux qui sont proches dans l'esprit des méthodes multipolaires rapides et du Barnes-Hut, mais qui peuvent offrir des avantages dans différentes circonstances (géométries plus générales et flexibles, certains gains d'efficacité, etc.).


8

Pour le problème classique du corps n gravitationnel , je pense que les deux articles suivants font un bon travail pour discuter des tripes de la mise en œuvre parallèle pour l'étape d'évaluation de la force. Bien que les articles traitent d'une implémentation GPU, ils font un bon travail pour discuter du parallélisme et fournissent des détails sur les algorithmes:

Cet article de Nyland, Harris et Prins présente l'algorithme direct à n corps dans CUDA pour les GPU.

Cet autre article de Yokota et Barba a une bonne discussion sur l'algorithme treecode et le multipôle rapide également dans le contexte de l'informatique GPU

Vos questions sur la précision des simulations numériques à n corps sont un peu plus compliquées et il y a tellement de détails importants qu'une réponse peut engendrer plusieurs livres. Je pense que la meilleure chose à faire est de vous donner quelques références de livres. Je suggère:

Simulations gravitationnelles à N corps par Sverre J. Aarseth

Simulations informatiques utilisant des particules par Hockney et Eastwood. (Désolé pas de version pdf)


4

Si vous avez besoin d'une approche d'implémentation simple qui n'est pas optimale au sens asymptotique, vous voudrez peut-être envisager d'utiliser des opérations de communication regroupées. Étant donné que chacun des N-corps doit connaître l'effet gravitationnel des autres corps, il est important que chaque processeur connaisse l'ensemble des données. C'est ce que font les opérations de rassemblement général. Il y a un bon livre: Programmation parallèle en C avec MPI et OPENMP de Michael J. Quinn (2004) qui traite exactement de ce sujet à la page 82. Il pourrait être utile de regarder pour vous donner un début.


3
O(n2)

C'est vrai. Bien que, comme je l'ai dit plus tôt, il s'agit d'une mise en œuvre facile, pas nécessairement efficace.
Paul

+1 d'une manière ou d'une autre, toutes les autres réponses supposent que l'OP recherche des performances en téra ou en pétascale. FMM et apparenté n'ont de sens que contre des approches plus naïves.
Stefano M

1

Consultez Google Scholar et recherchez des références à HACC et GADGET, entre autres codes.


2
Pourriez-vous ajouter un peu plus de détails sur les raisons pour lesquelles vous recommandez HACC et GADGET?
Paul

1
Ce sont deux codes de cosmologie de haut niveau qui incluent des solveurs de gravité.
Jeff
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.