Come gestire troppi dati?


14

Le nostre simulazioni di dinamica del plasma spesso producono troppe informazioni. Durante le simulazioni registriamo varie proprietà fisiche su una griglia (x, y, z, t) grande quanto (8192x1024x1024x1500), per almeno 10 proprietà. Queste informazioni vengono elaborate al termine della simulazione. Con esso noi

  1. fare film di proprietà,
  2. eseguire un'analisi di Fourier,
  3. calcola le proprietà medie.

Questo semplice scarico di quante più informazioni possibili ha funzionato bene quando abbiamo studiato sistemi più piccoli. Questo ci ha dato la flessibilità di interagire con i risultati e decidere in seguito cosa volevamo farci. Ci ha anche permesso di assegnare le nostre risorse computazionali (tempo di CPU) alla semplice esecuzione delle simulazioni.

Abbiamo iniziato il processo di analisi al volo di Fourier e di filtraggio solo per un intervallo selezionato di scale di lunghezza. Per motivi numerici, a volte abbiamo bisogno di risolvere scale di lunghezza più piccole di quelle a cui siamo realmente interessati, quindi in questi casi questo filtro aiuta molto. Stiamo anche esplorando varie librerie di I / O parallele , ad es. Opzioni di I / O parallele, in particolare l'HDF5 parallelo .

Quali strategie sono disponibili per massimizzare l'efficienza del trattamento dei dati?

C'è qualche vantaggio nell'eseguire al volo tutte le analisi (esclusa la post-elaborazione, ad esempio film e trame)?

Posso immaginare che questo problema si presenti in altre aree di ricerca. Ad esempio, potresti avere una simulazione di dinamica molecolare che deve evolversi a lungo, ma sei interessato al breve momento in cui sta accadendo qualcosa di interessante. O in CFD, lo sviluppo iniziale potrebbe essere lento, ma una volta che la turbolenza inizia, potrebbe essere necessaria una risoluzione temporale più elevata per monitorare la dinamica.

Esistono esempi gratuiti di raccolta di risultati sofisticati da simulazioni?


Potrebbe sembrare una domanda ampia. Se la pensi così, ti preghiamo di suggerire come posso essere più specifico.
Yann

1
Guarda anche come alcuni gruppi sperimentali affrontano questo problema. La fisica delle alte energie (al CERN) e l'astrofisica possono avere scale di dati ancora più grandi che devono essere archiviate (o persino filtrate prima dell'archiviazione perché i dati arrivano più velocemente di quanto possano essere scritti su qualsiasi memoria), distribuiti e analizzati.
Brian Diggs,

Risposte:


10

Penso che potresti dover dividere l'output per abbinare i tuoi obiettivi:

  1. per i film delle proprietà, probabilmente non hai bisogno della piena risoluzione spaziale e di tutte le variabili. Scegli con attenzione cosa vuoi mostrare e pensa alla risoluzione finale del film che mostrerai, probabilmente non avrà 8 miliardi di pixel.
  2. Per le analisi di Fourier (o cose come il POD), se sono temporali, probabilmente puoi semplicemente campionare alcune centinaia di punti saggiamente scelti nel tuo dominio. Se sono spaziali, probabilmente avrai bisogno solo di alcune istantanee e non di 1500. E ancora, non di tutte le proprietà.
  3. Per la media del tempo, puoi semplicemente continuare ad aggiungere allo stesso campo e non devi preoccuparti della dimensione temporale, giusto? Tuttavia, la media spaziale è dolorosa, soprattutto se si desidera osservarne l'evoluzione nel tempo. Ma una maggiore elaborazione online prima di scaricare i dati potrebbe ridurne le dimensioni ...

Ciò significa un bel po 'di lavoro per avere output dedicati anziché generici ma ciò dovrebbe aiutare a mantenere bassi costi e dimensioni. Spero che sia di aiuto !

Solo un'altra cosa che voglio aggiungere, in generale, la piena risoluzione dei dati è necessaria solo per riavviare i file, ovvero i file per riavviare la simulazione. Non hai bisogno di molti di questi per una determinata simulazione (diciamo 100, quindi se succede qualcosa tra 2 riavvii perdi al massimo l'1% del tuo calcolo), mentre probabilmente vuoi aumentare la frequenza di output per il tuo film. E puoi farlo ad esempio ad appena 1/64 della risoluzione (1 ogni 4 punti in ciascuna direzione).


Perché la media spaziale è dolorosa? Fallo al volo e scrivi il risultato, che dovrebbe essere minuscolo.
David Ketcheson,

@DavidKetcheson La media spaziale è dolorosa perché richiede molta comunicazione ed è potenzialmente influenzata dalla topologia del tuo dominio no? Certo se hai una griglia ortogonale pura allineata con il tuo quadro di riferimento non è poi così male, ma devi comunque fare una combinazione intelligente di calcolo e MPI_REDUCE perché con una griglia di quelle dimensioni, non puoi semplicemente fare un ALL_REDUCE su 1 processore penserei ...
FrenchKheldar

1
Bene, ora capisco il tuo commento. Ma la comunicazione di solito non è male, dal momento che è possibile eseguire la media su ciascun processo localmente e quindi ridurre un singolo float per processo. Nella mia esperienza (su un core BlueGene / P 65K), il costo di questo è banale, soprattutto rispetto ai costi di I / O. In effetti, eseguiamo un ALL_REDUCE su tutti i core da 65.000 in ogni fase ed è molto veloce.
David Ketcheson,

@DavidKetcheson In realtà ora penso di aver frainteso anche il tuo punto e stavo anche sopravvalutando il costo della riduzione dei dati. Quello che avevo in mente era qualcosa come una media spanwise / azimutale in cui dovresti archiviare / produrre i dati 2D completi che potrebbero essere o meno sulla stessa griglia della griglia computazionale. Ma hai ragione, il costo effettivo di MPI_ALL_REDUCE non è un problema in sé.
FrenchKheldar,

8

Penso che gli attuali maestri di quest'arte siano i grandi esperimenti di fisica delle particelle (ho più familiarità con CDF e D0 perché sono vecchio e lavoro all'Università di Chicago). Hanno trigger hardware che scaricano petabyte (o più) all'anno. Tuttavia, questo è l'intero argomento della quantizzazione / discretizzazione, o "buttare via solo ciò di cui non hai bisogno". Non sono sicuro che tu possa dare una risposta ragionevole in generale. Sarebbe meglio restringere il problema a qualcosa del tipo: "Ho una simulazione PDE discretizzata nel modo seguente e vorrei sottocampionare efficacemente".


3

Peter LePage è piuttosto famoso nei circoli reticolari-QCD per aver suggerito un metodo in base al quale griglie reticolari ingiustificatamente grandi potrebbero essere ridotte trovando e applicando buone soluzioni analitiche a corto raggio.

Ciò equivale all'incirca a notare che un insieme di spline ben scelte può consentire un'integrazione accurata con meno nodi rispetto al metodo trapezoidale (tranne che come nel tuo caso puoi trarne vantaggio su quattro dimensioni contemporaneamente).

Il risultato è che si scambiano dimensioni non elaborate del set di dati per ulteriori calcoli per nodo - passaggio, ma alla fine si esce avanti a causa dell'elevata dimensionalità del problema.

Non sono un argomento che conosco abbastanza bene da dare qualche suggerimento decente, ma ha funzionato in alcuni campi in passato.


3

La domanda è un po 'ampia, quindi fornirò una risposta altrettanto vaga che suggerisce possibili tecniche in questi casi.

1) Elaborazione immediata, su cui stai già lavorando. Un modo per eseguire l'elaborazione al volo e tuttavia separarla dalla fase di generazione dei dati è generare un file di output ciclico che contenga sempre gli ultimi N passaggi e che l'analisi venga eseguita in un processo separato. Ovviamente è necessario sincronizzare i due per prevenire una condizione di gara.

2) Scelta dei dati memorizzati con maggiore attenzione. Questo è altamente specifico per la situazione, sfortunatamente.

3) Comprimere i dati prima di archiviarli o utilizzare una libreria di archiviazione con opzioni di compressione integrate, come HDF5.

4) Memorizzare i checkpoint regolari anziché l'output completo. Se si memorizza un checkpoint completo ogni N passaggi, ovvero dati sufficienti per riavviare la simulazione da lì, è possibile ricostruire i dati mancanti in modo altamente parallelo se e quando necessario. Si noti che nel caso dei metodi Monte-Carlo, il checkpoint deve includere lo stato dei generatori di numeri casuali. Puoi effettivamente considerarla una tecnica di compressione altamente specifica per l'applicazione.

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.