Quali sono i vantaggi e gli svantaggi degli algoritmi di parallelizzazione di decomposizione delle particelle e di decomposizione del dominio?


15

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 processoriFioj derivante dall'interazione di coppia tra le particelle e , necessaria per l'aggiornamento della velocità di entrambe le particelle e iojioj, 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 NrioviofioNatomi 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?

Risposte:


10

La decomposizione di particelle e domini è direttamente collegata ai due metodi principali per accelerare i calcoli della forza per i sistemi con interazioni a intervallo limitato: elenchi dei vicini Verlet ed elenchi collegati a celle. Se vuoi entrare nei dettagli, c'è un bel libro di Allen e Tildesley, chiamato Computer Simulation of Liquids , considerato da molti come la "bibbia" degli studi di Dinamica Molecolare e Monte Carlo. Poi c'è la simulazione numerica in dinamica molecolare di Griebel, Knapek e Zumbusch, che approfondisce le varie tecniche per l'implementazione parallela di MD.

O(N2)O(N)

O(N)O(N) Nsi ridimensiona meglio. Da qui l'argomento della dimensione lineare. Il metodo di decomposizione del dominio è un'estensione semplice del metodo degli elenchi collegati alle celle: le celle sono divise tra CPU diverse.

Il problema con la decomposizione del dominio è che deve comunicare quando le particelle si spostano da una cella all'altra che viene gestita da un'altra CPU. Ciò potrebbe diventare problematico a temperature di simulazione più elevate in cui le particelle tendono ad allontanarsi più della loro posizione di equilibrio o quando vi è un flusso di particelle. Inoltre, le informazioni provenienti dalle celle sul bordo del dominio devono essere trasferite su ciascuna iterazione ai domini vicini. Ma tutto ciò è comunicazione locale sincrona e potrebbe essere fatta in modo molto efficiente.

I dati replicati sono l'approccio più semplice, ma purtroppo richiede che ad ogni passo tutte le informazioni di posizione e velocità siano sincronizzate a livello globale. Questo in realtà non si adatta bene e per un sistema molto grande la quantità globale di memoria è la dimensione della struttura dei dati moltiplicata per il numero di CPU utilizzate, mentre uno degli obiettivi dell'elaborazione parallela è la distribuzione di dati in modo tale che ogni CPU detenga meno rispetto alla quantità globale di dati.

In sintesi, non esiste un metodo "taglia unica", adatto a tutti i sistemi simulati. Il più delle volte la migliore strategia di parallelizzazione può essere dedotta dalla geometria del sistema e potrebbe essere scelto il codice MD appropriato per quel caso - dopotutto implementano tutti più o meno gli stessi campi di forza e integratori sottostanti.


Bella risposta! È comune avere una distribuzione atomica uniforme? funziona allo stesso modo per distribuzioni non uniformi?
fcruz,

3
Dipende dal sistema simulato. Se si tratta di liquido, gas o cristallo sfuso, gli atomi sarebbero distribuiti in modo meno uniforme. Se ci sono fasi o aggregati di particelle altamente localizzati, meno. Per una distribuzione non uniforme la decomposizione del dominio potrebbe essere meno efficiente a meno che non venga adottato un approccio adattivo.
Hristo Iliev,

2
Nel ridurre la complessità del calcolo dell'elettrostatica, metodi come il metodo multipolare veloce ( O(N2)O(NlogN)orO(N)

4

Con "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", gli autori di quel (molto vecchio) documento GROMACS indicano che se la dimensione spaziale dell'elenco vicino è dell'ordine di 1 nm e la cella di simulazione è solo di diversi nanometri, quindi il sovraccarico derivante dalla decomposizione del dominio è troppo elevato. Potresti anche accettare una distribuzione di informazioni complessive nella decomposizione delle particelle e non è necessario dedicare tempo a tutta la contabilità per la decomposizione del dominio.

Il problema con la decomposizione delle particelle durante l'implementazione di GROMACS era che nel tempo le particelle assegnate a ciascun processore si diffondevano nello spazio. Poiché la responsabilità del calcolo di ogni interazione era fissata dalla loro posizione iniziale, la diffusione aumentava gradualmente il volume dello spazio totale che ogni processore doveva conoscere per costruire la sua lista vicina, anche se il calcolo totale descritto dalla lista vicina era costante. In pratica, si riavvierebbe periodicamente la simulazione per ripristinare i dati e la località di comunicazione.

La tua supposizione che "la decomposizione delle particelle abbia il vantaggio di non avere a che fare con particelle che si muovono attraverso i confini del dominio" non è valida se la diffusione è significativa sulla scala temporale della simulazione.

La decomposizione del dominio affronta questo "fronte" migrando la responsabilità dell'interazione insieme alla diffusione, migliorando così la localizzazione dei dati su ciascun processore e minimizzando il volume di comunicazione.

Disclaimer: aiuto lo sviluppo di GROMACS e probabilmente strapperò l'implementazione della decomposizione delle particelle la prossima settimana ;-)


0

Vorrei aggiungere alla risposta di Hristo Iliev. Mentre il suo post parla principalmente della complessità computazionale , quando si tratta di parallelizzazione, la complessità della comunicazione è almeno altrettanto importante - e che è la ragione principale della decomposizione del dominio.

Le moderne macchine parallele di solito hanno una sorta di topologia del toro. Ciò significa che ogni CPU ha un numero di CPU "vicine" a cui può comunicare molto rapidamente. Comunicare a una CPU che non è un vicino è più costoso. Pertanto, è sempre vantaggioso disporre di un algoritmo che deve solo comunicare con le CPU vicine.

Quando si utilizza una decomposizione di particelle, i partner di interazione di una particella vengono distribuiti casualmente su tutte le altre CPU. Per poter calcolare le interazioni, deve conoscere le coordinate di tutti i partner, quindi deve comunicare con tutte le altre CPU. In effetti, questo significa che quando haiPO(P2)

PO(P)

O(P)

Si noti, tuttavia, che i sistemi non uniformi non sono così comuni come potrebbe sembrare, si verificano solo quando si simula qualcosa nel vuoto o quando si utilizza un solvente implicito. Le densità di cristalli e liquidi sono abbastanza vicine da eseguire la decomposizione del dominio.


Questa è un'ottima risposta Volevo solo aggiungere una precisione. Le simulazioni del flusso granulare che utilizzano metodi basati su algoritmi simili a quelli del MD (come il Discrete Element Method) incontrano spesso casi in cui ci sono regioni che sono quasi prive di particelle e altre che ne sono piene ...
BlaB

Non è certamente un requisito di decomposizione delle particelle che i partner di interazione siano distribuiti casualmente. Si può e spesso si dovrebbe partire dalla decomposizione in gruppi di particelle spazialmente compatti, perché condivideranno i vicini comuni di interazione. Alla fine la diffusione significherà che la distribuzione diventa casuale. Questo è il motivo per cui le simulazioni di decomposizione delle particelle di GROMACS sopra menzionate sarebbero periodicamente riavviate, per rinfrescare la località della decomposizione.
mabraham,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.