Ich führe Molekulardynamik (MD) -Simulationen mit verschiedenen Softwarepaketen wie Gromacs und DL_POLY durch.
Gromacs unterstützt jetzt sowohl den Partikelzerlegungs- als auch den Domänenzerlegungsalgorithmus . Standardmäßig verwenden Gromacs-Simulationen die Domänenzerlegung, obwohl bis vor kurzem die Partikelzerlegung für viele Jahre die einzige in Gromacs implementierte Methode war. In einem der Gromacs-Artikel (DOI 10.1002 / jcc.20291) geben die Autoren einen Grund für ihre anfängliche Wahl der Partikelzersetzung an:
"Eine frühe Entwurfsentscheidung war die Entscheidung, mit Partikelzerlegung statt Domänenzerlegung zu arbeiten, um die Arbeit auf die Prozessoren zu verteilen. Im letzteren Fall werden räumliche Domänen Prozessoren zugewiesen, wodurch räumliche Nachbarn nur durch lokale Kommunikation schnell gefunden werden können, aber Komplikationen aufgrund Die Domänenzerlegung ist nur dann eine bessere Wahl, wenn die lineare Systemgröße den Wechselwirkungsbereich erheblich überschreitet, was in der Molekulardynamik selten der Fall ist. Bei der Partikelzerlegung berechnet jeder Prozessor die Kräfte und Koordinaten- / Geschwindigkeitsaktualisierungen für einen zugewiesenen Bruchteil der Partikel unter Verwendung einer vorberechneten Nachbarliste, die gleichmäßig auf Prozessoren verteilt ist ergibt sich aus der Paarwechselwirkung zwischen den Partikeln i und j , die für die Geschwindigkeitsaktualisierung beider Partikel i und j benötigt wird, wird nur einmal berechnet und an andere Prozessoren übermittelt. Jeder Prozessor speichert in seinem lokalen Speicher den vollständigen Koordinatensatz des Systems, anstatt den Speicher auf die benötigten Koordinaten zu beschränken. Dies ist einfacher und spart Kommunikationsaufwand, während der Speicheranspruch selbst für Millionen von Partikeln in der Regel kein einschränkender Faktor ist. Die Nachbarliste hingegen, die das 1000-fache der Partikelanzahl enthalten kann, ist auf die Prozessoren verteilt. Die Kommunikation beschränkt sich im Wesentlichen auf das Senden von Koordinaten und Kräften einmal pro Zeitschritt um den Prozessorring. Diese Auswahl hat sich im Laufe der Zeit als robust erwiesen und lässt sich problemlos auf moderne Prozessor-Cluster anwenden. "
Was bedeuten sie mit "linearer Systemgröße" im Satz "Domänenzerlegung ist nur dann eine bessere Wahl, wenn die lineare Systemgröße den Wechselwirkungsbereich, der in der Molekulardynamik selten vorkommt, erheblich überschreitet"? Aus dem obigen Absatz gehe ich davon aus, dass die Partikelzerlegung den Vorteil hat, dass man sich nicht mit Partikeln befassen muss, die sich über Domänengrenzen hinweg bewegen. Vielmehr muss jeder Prozessor über genügend Speicher verfügen, um die gesamte Systemkonfiguration zu speichern . Die Zersetzung von Partikeln sieht also sehr günstig aus, wohingegen die Zersetzung von Domänen sehr ungünstig ausschaut.
Ich bin mir sicher, dass dies eine sehr komplizierte Frage ist (und wahrscheinlich das Thema vieler Bücher ist), aber im Grunde genommen, wenn die Zerlegung von Partikeln so günstig erscheint, warum sollte jemand die Zerlegung von Domänen verwenden müssen? Ist die Zerlegung von Domänen nur dann günstig, wenn das System sehr groß ist (was es schwierig oder unmöglich macht, die Gesamtkonfiguration in jedem Prozessor zu speichern)? Aufgrund des oben zitierten Abschnitts bin ich mir nicht sicher, warum die Zerlegung von Domänen in letzter Zeit der Standard-Parallelisierungsalgorithmus in Gromacs ist.
Es scheint, dass DL_POLY jetzt (Version 4) auch die Zerlegung von Domänen verwendet. Aus dem Handbuch der Version 4:
Die Aufteilung der Kongurationsdaten auf diese Weise basiert auf der Position der Atome in der Simulationszelle. Eine solche geometrische Zuordnung von Systemdaten ist das Kennzeichen von DD-Algorithmen. Damit diese Strategie effizient funktioniert, muss das Simulierte beachtet werden Das System muss eine einigermaßen einheitliche Dichte haben, damit jedem Prozessor (so weit wie möglich) nahezu der gleiche Anteil an Atomdaten zugewiesen wird Die Methode ist konzeptionell einfach, aber schwierig zu programmieren und eignet sich besonders für Simulationen in großem Maßstab, bei denen die Effizienz am höchsten ist.
...
Bei der DD-Strategie ist der Algorithmus SHAKE (RATTLE) einfacher als bei der Methode Replicated Data von DL_POLY Classic, bei der globale Aktualisierungen der Atompositionen (Zusammenführen und Spleißen) erforderlich sind. "
Dies lässt den Eindruck entstehen, dass die Zerlegung von Domänen gut ist, da sie möglicherweise effizienter ist, auch wenn sie möglicherweise schwieriger zu implementieren ist.
Andererseits verwendete eine frühere Version (DL_POLY Classic) die Parallelisierung replizierter Daten, was ein anderer Name für die Partikelzerlegung zu sein scheint. Aus dem Handbuch dieser Version:
Atome im simulierten System werden auf jedem Verarbeitungsknoten reproduziert. Bei dieser Strategie können die meisten Kräfte, die für die Berechnung und Integration der Bewegungsgleichungen benötigt werden, leicht und gleichmäßig auf die Knoten verteilt und zu einem großen Teil auf jedem Knoten unabhängig voneinander verarbeitet werden. Die Methode ist relativ einfach zu programmieren und relativ effizient. Darüber hinaus kann es „zusammengeklappt“ werden, um sehr einfach auf einem einzelnen Prozessor ausgeführt zu werden. Die Strategie kann im Speicher teuer sein und einen hohen Kommunikationsaufwand verursachen. Insgesamt hat sie sich jedoch in einer Vielzahl von Anwendungen als erfolgreich erwiesen.
Dieser Absatz scheint im Allgemeinen mit dem ersten Absatz dieser Frage übereinzustimmen, mit der Ausnahme, dass er besagt, dass die Zerlegung replizierter Daten / Partikel einen "hohen Kommunikationsaufwand" hat. Der Absatz aus dem Gromacs-Papier scheint das Gegenteil zu sagen: Die Zersetzung von Partikeln ist vorzuziehen, da sie einen geringeren Kommunikationsaufwand als die Zersetzung von Domänen hat.
Hast du irgendwelche Gedanken?