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
- faire des films de propriétés,
- effectuer une analyse de Fourier,
- 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?
Réponses:
Je pense que vous devrez peut-être diviser votre sortie pour correspondre à vos objectifs:
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).
la source
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».
la source
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é.
la source
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.
la source