Comment gérer trop de données?


14

Nos simulations de dynamique du plasma produisent souvent trop d'informations. Au cours des simulations, nous enregistrons diverses propriétés physiques sur une grille (x, y, z, t) qui est aussi grande que (8192x1024x1024x1500), pour au moins 10 propriétés. Ces informations sont traitées une fois la simulation terminée. Avec elle, nous

  1. faire des films de propriétés,
  2. effectuer une analyse de Fourier,
  3. calculer les propriétés moyennes.

Ce simple vidage d'autant d'informations que possible a bien fonctionné lorsque nous avons étudié les petits systèmes. Cela nous a donné la flexibilité d'interagir avec les résultats et de décider plus tard ce que nous voulions en faire. Cela nous a également permis d'allouer nos ressources de calcul (temps CPU) pour simplement exécuter les simulations.

Nous avons commencé le processus consistant à effectuer l'analyse de Fourier à la volée et à filtrer uniquement une plage sélectionnée d'échelles de longueur. Pour des raisons numériques, nous devons parfois résoudre des échelles de longueur plus petites que ce qui nous intéresse réellement, donc dans ces cas, ce filtre est très utile. Nous explorons également diverses bibliothèques d' E / S parallèles , par exemple les options d'E / S parallèles, en particulier le HDF5 parallèle .

Quelles stratégies sont disponibles pour maximiser l'efficacité du traitement des données?

Y a-t-il un avantage à effectuer toutes les analyses (à l'exclusion du post-traitement, par exemple des films et des tracés) à la volée?

Je peux imaginer que cette question se pose dans d'autres domaines de recherche. Par exemple, vous pourriez avoir une simulation de dynamique moléculaire qui doit évoluer pendant longtemps, mais vous êtes intéressé par le bref moment où quelque chose d'intéressant se produit. Ou dans CFD, le développement précoce peut être lent, mais une fois la turbulence installée, vous devrez peut-être une résolution temporelle plus élevée pour surveiller la dynamique.

Existe-t-il des exemples librement disponibles de collecte de résultats sophistiqués à partir de simulations?


Cela peut sembler une question générale. Si vous pensez de cette façon, veuillez faire des suggestions sur la façon dont je peux être plus précis.
Yann

1
Regardez également comment certains groupes expérimentaux gèrent ce problème. La physique des hautes énergies (au CERN) et l'astrophysique peuvent avoir des échelles de données encore plus importantes qui doivent être stockées (ou même filtrées avant d'être stockées car les données arrivent plus rapidement qu'elles ne peuvent être écrites sur n'importe quel stockage), distribuées et analysées.
Brian Diggs

Réponses:


10

Je pense que vous devrez peut-être diviser votre sortie pour correspondre à vos objectifs:

  1. pour les films de propriétés, vous n'avez probablement pas besoin de la résolution spatiale complète et de toutes les variables. Choisissez soigneusement ce que vous voulez montrer et pensez à la résolution finale du film que vous allez montrer, il n'aura probablement pas 8 milliards de pixels.
  2. Pour les analyses de Fourier (ou des choses comme POD), si elles sont temporelles, vous pouvez probablement simplement échantillonner quelques centaines de points judicieusement choisis dans votre domaine. S'ils sont spatiaux, vous n'avez probablement besoin que de quelques instantanés et non de 1500. Et encore une fois, pas de toutes les propriétés.
  3. Pour la moyenne temporelle, vous pouvez simplement continuer à ajouter au même champ et ne pas avoir à vous soucier de la dimension temporelle, n'est-ce pas? La moyenne spatiale est cependant douloureuse, surtout si vous voulez regarder son évolution dans le temps. Mais plus de traitement en ligne avant de vider les données pourrait en réduire la taille ...

Cela signifie pas mal de travail pour avoir des sorties dédiées au lieu d'une grande générique, mais cela devrait aider à réduire le coût et la taille. J'espère que cela t'aides !

Encore une chose que je veux ajouter, en général, la pleine résolution des données n'est nécessaire que pour redémarrer les fichiers, c'est-à-dire les fichiers pour redémarrer votre simulation. Vous n'avez pas besoin de ce nombre pour une simulation donnée (disons 100, de sorte que si quelque chose se produit entre 2 redémarrages, vous perdez au plus 1% de votre calcul), alors que vous voulez probablement augmenter la fréquence de sortie pour votre films. Et vous pouvez le faire à seulement 1 / 64e de la résolution par exemple (1 tous les 4 points dans chaque direction).


Pourquoi la moyenne spatiale est-elle douloureuse? Faites-le à la volée et écrivez le résultat, qui devrait être minuscule.
David Ketcheson

@DavidKetcheson La moyenne spatiale est pénible car elle nécessite beaucoup de communication et est potentiellement influencée par la topologie de votre domaine non? Bien sûr, si vous avez une grille orthogonale pure alignée avec votre cadre de référence, ce n'est pas trop mal, mais vous devez toujours faire une combinaison intelligente de calcul et MPI_REDUCE car avec une grille de cette taille, vous ne pouvez pas simplement faire un ALL_REDUCE sur 1 Je pense que le processeur ...
FrenchKheldar

1
D'accord, maintenant je comprends votre commentaire. Mais la communication n'est généralement pas trop mauvaise, car vous pouvez faire la moyenne de chaque processus localement, puis réduire simplement un flottant par processus. D'après mon expérience (sur un noyau 65K BlueGene / P), le coût de cela est trivial, en particulier par rapport aux coûts d'E / S. En fait, nous faisons un ALL_REDUCE sur l'ensemble des cœurs 65K à chaque pas de temps et c'est très rapide.
David Ketcheson

@DavidKetcheson En fait, je pense maintenant que j'ai mal compris votre point aussi, et je surestimais également le coût de la réduction des données. Ce que j'avais à l'esprit était quelque chose comme une moyenne sur une échelle / azimutale où vous auriez à stocker / sortir les données 2D complètes qui peuvent ou non être sur la même grille que la grille de calcul. Mais vous avez raison, le coût réel du MPI_ALL_REDUCE n'est pas un problème en soi.
FrenchKheldar

8

Je pense que les maîtres actuels de cet art sont les grandes expériences de physique des particules (je connais le mieux les CDF et D0 parce que je suis vieux et que je travaille à l'Université de Chicago). Ils ont des déclencheurs matériels qui rejettent les pétaoctets (ou plus) par an. Cependant, c'est tout le sujet de la quantification / discrétisation, ou "ne jeter que ce dont vous n'avez pas besoin". Je ne suis pas sûr que vous puissiez donner une réponse sensée en général. Il serait préférable de réduire le problème à quelque chose comme: «J'ai une simulation PDE discrétisée de la manière suivante et je voudrais sous-échantillonner efficacement».


3

Peter LePage est assez célèbre dans les cercles réseau-QCD pour avoir suggéré une méthode permettant de réduire les grilles de réseau incroyablement grandes en trouvant et en appliquant de bonnes solutions analytiques à courte portée.

Cela équivaut à peu près à remarquer qu'un ensemble de splines bien choisies peut permettre une intégration précise avec moins de nœuds que la méthode trapézoïdale (sauf que comme dans votre cas, vous pouvez en profiter sur quatre dimensions à la fois).

Le résultat est que vous échangez la taille brute de l'ensemble de données pour plus de calculs par nœud - étape, mais que vous finissez par vous imposer à la fin en raison de la grande dimensionnalité de votre problème.

Je ne suis pas un sujet que je connais assez bien pour donner des indices décents, mais cela a fonctionné dans certains domaines par le passé.


3

La question est un peu large, je vais donc fournir une réponse en conséquence vague qui suggère des techniques possibles dans de tels cas.

1) Traitement à la volée, sur lequel vous travaillez déjà. Une façon de faire un traitement à la volée et de le découpler de l'étape de génération de données consiste à générer un fichier de sortie cyclique qui contient toujours les N dernières étapes et à exécuter l'analyse dans un processus distinct. Évidemment, vous devez synchroniser les deux pour éviter une condition de concurrence.

2) Choisir plus soigneusement les données stockées. C'est très spécifique à la situation, malheureusement.

3) Compressez vos données avant de les stocker, ou utilisez une bibliothèque de stockage avec des options de compression intégrées, telles que HDF5.

4) Stockez les points de contrôle réguliers au lieu de la sortie complète. Si vous stockez un point de contrôle complet toutes les N étapes, c'est-à-dire suffisamment de données pour redémarrer la simulation à partir de là, vous pouvez reconstruire les données manquantes de manière très parallèle si et quand cela est nécessaire. Notez que dans le cas des méthodes Monte-Carlo, le point de contrôle doit inclure l'état des générateurs de nombres aléatoires. Vous pouvez réellement considérer cela comme une technique de compression hautement spécifique à l'application.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.