Sto eseguendo simulazioni di dinamica molecolare (MD) utilizzando diversi pacchetti software, come Gromacs e DL_POLY.
Gromacs ora supporta gli algoritmi di decomposizione delle particelle e di decomposizione del dominio. Per impostazione predefinita, le simulazioni Gromacs utilizzano la decomposizione del dominio, sebbene per molti anni, fino a poco tempo fa, la decomposizione delle particelle fosse l'unico metodo implementato in Gromacs. In uno degli articoli di Gromacs (DOI 10.1002 / jcc.20291), gli autori forniscono una ragione per la loro scelta iniziale di decomposizione delle particelle:
"Una prima decisione di progettazione è stata la scelta di lavorare con la decomposizione delle particelle piuttosto che con la decomposizione del dominio per distribuire il lavoro sui processori. In quest'ultimo caso, i domini spaziali sono assegnati ai processori, il che consente di trovare rapidamente i vicini spaziali solo tramite comunicazione locale, ma le complicazioni dovute le particelle che si spostano oltre i confini spaziali sono considerevoli. La decomposizione dei domini è una scelta migliore solo quando le dimensioni del sistema lineare superano considerevolmente l'intervallo di interazione, il che accade raramente nella dinamica molecolare. Con la decomposizione delle particelle ogni processore calcola le forze e gli aggiornamenti di coordinate / velocità per una frazione assegnata delle particelle, usando un elenco vicino precompilato distribuito uniformemente sui processori derivante dall'interazione di coppia tra le particelle e , necessaria per l'aggiornamento della velocità di entrambe le particelle e , viene calcolato una sola volta e comunicato ad altri processori. Ogni processore mantiene nella sua memoria locale l'insieme completo di coordinate del sistema anziché limitare l'archiviazione alle coordinate necessarie. Questo è più semplice e salva le spese generali di comunicazione, mentre l'affermazione della memoria di solito non è affatto un fattore limitante, anche per milioni di particelle. La lista dei vicini, d'altra parte, che può contenere fino a 1000 volte il numero di particelle, è distribuita sui processori. La comunicazione è essenzialmente limitata all'invio di coordinate e forze una volta per volta attorno all'anello del processore. Queste scelte si sono dimostrate robuste nel tempo e facilmente applicabili ai moderni cluster di processori ".
Che cosa significano per "dimensione del sistema lineare" nella frase "La decomposizione del dominio è una scelta migliore solo quando la dimensione del sistema lineare supera considerevolmente l'intervallo di interazione, cosa che raramente è il caso della dinamica molecolare"? Dal paragrafo precedente, ho avuto l'idea che la decomposizione delle particelle abbia il vantaggio di non avere a che fare con particelle che si muovono attraverso i confini del dominio; piuttosto, devi solo avere abbastanza memoria per ogni processore per memorizzare la configurazione totale del sistema. Quindi la decomposizione delle particelle sembra molto favorevole, mentre la decomposizione del dominio sembra molto sfavorevole.
Sono sicuro che questa sia una domanda molto complicata (e probabilmente l'argomento di molti libri), ma in sostanza, se la decomposizione delle particelle sembra così favorevole, perché qualcuno dovrebbe usare la decomposizione del dominio? La decomposizione del dominio è solo favorevole se le dimensioni del sistema sono molto grandi (rendendo difficile o impossibile memorizzare la configurazione totale in ciascun processore)? Sulla base del paragrafo citato sopra, non sono sicuro del motivo per cui la decomposizione del dominio è ora, proprio di recente, l'algoritmo di parallelizzazione predefinito in Gromacs.
Sembra che DL_POLY ora (versione 4) utilizzi anche la decomposizione del dominio. Dal manuale versione 4:
"La divisione dei dati di congregazione in questo modo si basa sulla posizione degli atomi nella cella di simulazione, tale allocazione geometrica dei dati di sistema è il segno distintivo degli algoritmi DD. Si noti che per far sì che questa strategia funzioni in modo efficiente, la simulazione il sistema deve possedere una densità ragionevolmente uniforme, in modo che a ciascun processore venga assegnata quasi una parte uguale dei dati atomici (il più possibile). Attraverso questo approccio il calcolo delle forze e l'integrazione delle equazioni del moto sono condivise (ragionevolmente) equamente tra processori e su larga scala può essere calcolato in modo indipendente su ciascun processore. Il metodo è concettualmente semplice sebbene difficile da programmare ed è particolarmente adatto a simulazioni su larga scala, dove l'efficienza è massima.
...
Nel caso della strategia DD, l'algoritmo SHAKE (RATTLE) è più semplice rispetto al metodo Replicated Data di DL_POLY Classic), dove sono richiesti aggiornamenti globali delle posizioni atomiche (fusione e giunzione). "
Questo fa sembrare che la decomposizione del dominio sia buona perché potrebbe essere più efficiente, anche se forse più difficile da implementare.
D'altra parte, una versione precedente (DL_POLY Classic) utilizzava la parallelizzazione dei dati replicati, che sembra essere un altro nome per la decomposizione delle particelle. Dal manuale di quella versione:
La strategia Replicated Data (RD) è uno dei diversi modi per ottenere la parallelizzazione in MD. Il suo nome deriva dalla replica dei dati di configurazione su ciascun nodo di un computer parallelo (ovvero le matrici che definiscono le coordinate atomiche , velocità e forza , per tuttov i f i Natomi nel sistema simulato, sono riprodotti su ogni nodo di elaborazione). In questa strategia, la maggior parte del calcolo delle forze e l'integrazione delle equazioni del moto possono essere condivise facilmente ed equamente tra i nodi e in larga misura possono essere elaborate indipendentemente su ciascun nodo. Il metodo è relativamente semplice da programmare ed è ragionevolmente efficiente. Inoltre, può essere "compresso" per essere eseguito su un singolo processore molto facilmente. Tuttavia, la strategia può essere costosa in memoria e avere elevati costi di comunicazione, ma nel complesso ha dimostrato di avere successo in una vasta gamma di applicazioni.
Questo paragrafo sembra generalmente coerente con il primo paragrafo di questa domanda, tranne per il fatto che afferma che la decomposizione di dati / particelle replicata ha "elevate spese generali di comunicazione". Il paragrafo del documento Gromacs sembra dire il contrario: la decomposizione delle particelle è preferibile perché ha un sovraccarico di comunicazione inferiore rispetto alla decomposizione del dominio.
Hai qualche pensiero?