J'exécute des simulations de dynamique moléculaire (MD) en utilisant plusieurs progiciels, comme Gromacs et DL_POLY.
Gromacs prend désormais en charge les algorithmes de décomposition des particules et de décomposition de domaine. Par défaut, les simulations Gromacs utilisent la décomposition de domaine, bien que pendant de nombreuses années, jusqu'à récemment, la décomposition des particules était la seule méthode mise en œuvre dans Gromacs. Dans l'un des articles de Gromacs (DOI 10.1002 / jcc.20291), les auteurs expliquent leur choix initial de décomposition des particules:
"Une décision de conception précoce a été le choix de travailler avec la décomposition des particules plutôt que la décomposition des domaines pour répartir le travail sur les processeurs. Dans ce dernier cas, les domaines spatiaux sont attribués aux processeurs, ce qui permet de trouver rapidement des voisins spatiaux uniquement par communication locale, mais des complications dues aux particules qui se déplacent au-delà des limites spatiales sont considérables. La décomposition de domaine n'est un meilleur choix que lorsque la taille du système linéaire dépasse considérablement la plage d'interaction, ce qui est rarement le cas en dynamique moléculaire. Avec la décomposition des particules, chaque processeur calcule les forces et les mises à jour de coordonnées / vitesses pour une fraction assignée des particules, en utilisant une liste de voisins précalculée également répartie sur les processeurs. résultant de l'interaction de paire entre les particules i et j , qui est nécessaire pour la mise à jour de la vitesse des particules i et j, est calculé une seule fois et communiqué aux autres processeurs. Chaque processeur conserve dans sa mémoire locale l'ensemble complet de coordonnées du système plutôt que de limiter le stockage aux coordonnées dont il a besoin. Ceci est plus simple et économise les frais de communication, tandis que la revendication de mémoire n'est généralement pas un facteur limitant du tout, même pour des millions de particules. La liste de voisins, en revanche, qui peut contenir jusqu'à 1000 fois le nombre de particules, est répartie sur les processeurs. La communication est essentiellement limitée à l'envoi de coordonnées et de forces une fois par pas de temps autour de l'anneau du processeur. Ces choix se sont révélés robustes dans le temps et facilement applicables aux clusters de processeurs modernes. "
Que signifient-ils par "taille du système linéaire" dans la phrase "La décomposition de domaine est un meilleur choix uniquement lorsque la taille du système linéaire dépasse considérablement la plage d'interaction, ce qui est rarement le cas en dynamique moléculaire"? Du paragraphe ci-dessus, j'ai l'idée que la décomposition des particules a l'avantage de ne pas avoir à faire face à des particules se déplaçant à travers les limites du domaine; il vous suffit plutôt d'avoir suffisamment de mémoire pour chaque processeur pour stocker la configuration totale du système. La décomposition des particules semble donc très favorable, tandis que la décomposition du domaine semble très défavorable.
Je suis sûr que c'est une question très compliquée (et probablement le sujet de nombreux livres), mais simplement, si la décomposition des particules semble si favorable, pourquoi quelqu'un aurait-il besoin d'utiliser la décomposition de domaine? La décomposition de domaine est-elle juste favorable si la taille du système est très grande (ce qui rend difficile ou impossible de stocker la configuration totale dans chaque processeur)? Sur la base du paragraphe cité ci-dessus, je ne sais pas pourquoi la décomposition de domaine est maintenant, tout récemment, l'algorithme de parallélisation par défaut dans Gromacs.
Il semble que DL_POLY maintenant (version 4) utilise également la décomposition de domaine. Du manuel de la version 4:
"La division des données de conguration de cette manière est basée sur l'emplacement des atomes dans la cellule de simulation, une telle allocation géométrique des données du système est la marque des algorithmes DD. Notez que pour que cette stratégie fonctionne efficacement, la simulation Le système doit posséder une densité raisonnablement uniforme, de sorte que chaque processeur se voit allouer presque autant de données atomiques (autant que possible). Grâce à cette approche, le calcul des forces et l'intégration des équations de mouvement sont partagés (raisonnablement) également entre les processeurs et dans une large mesure, peut être calculé indépendamment sur chaque processeur.La méthode est conceptuellement simple mais difficile à programmer et est particulièrement adaptée aux simulations à grande échelle, où l'efficacité est la plus élevée.
...
Dans le cas de la stratégie DD, l'algorithme SHAKE (RATTLE) est plus simple que pour la méthode des données répliquées de DL_POLY Classic), où des mises à jour globales des positions des atomes (fusion et épissage) sont nécessaires. "
Cela donne l'impression que la décomposition de domaine est bonne car elle peut être plus efficace, même si elle est peut-être plus difficile à implémenter.
D'un autre côté, une version précédente (DL_POLY Classic) utilisait la parallélisation des données répliquées, ce qui semble être un autre nom pour la décomposition des particules. Du manuel de cette version:
atomes dans le système simulé, sont reproduits sur chaque nœud de traitement). Dans cette stratégie, la plupart des forces de calcul et d'intégration des équations de mouvement peuvent être partagées facilement et également entre les nœuds et dans une large mesure être traitées indépendamment sur chaque nœud. La méthode est relativement simple à programmer et est raisonnablement efficace. De plus, il peut être «réduit» pour fonctionner sur un seul processeur très facilement. Cependant, la stratégie peut être coûteuse en mémoire et avoir des frais généraux de communication élevés, mais dans l'ensemble, elle s'est avérée efficace sur une large gamme d'applications.
Ce paragraphe semble généralement cohérent avec le premier paragraphe de cette question, sauf qu'il dit que la décomposition des données / particules répliquées a des «frais généraux de communication élevés». Le paragraphe de l'article de Gromacs semble dire le contraire - que la décomposition des particules est préférable car elle a une surcharge de communication inférieure à la décomposition du domaine.
Avez-vous des pensées?