Nuestras simulaciones de dinámica de plasma a menudo producen demasiada información. Durante las simulaciones registramos varias propiedades físicas en una cuadrícula (x, y, z, t) que es tan grande como (8192x1024x1024x1500), para al menos 10 propiedades. Esta información se procesa después de completar la simulación. Con ella
- hacer películas de propiedades,
- realizar un análisis de Fourier,
- calcular propiedades promedio
Este simple vertido de la mayor cantidad de información posible funcionó bien cuando estudiamos sistemas más pequeños. Esto nos dio la flexibilidad para interactuar con los resultados y decidir más adelante qué queríamos hacer con ellos. También nos permitió asignar nuestros recursos computacionales (tiempo de CPU) para simplemente ejecutar las simulaciones.
Hemos comenzado el proceso de hacer el análisis de Fourier sobre la marcha y filtrar solo para un rango selecto de escalas de longitud. Por razones numéricas, a veces necesitamos resolver escalas de longitud que son más pequeñas de lo que realmente nos interesa, por lo que en esos casos, este filtro es de gran ayuda. También estamos explorando varias bibliotecas IO paralelos, por ejemplo paralelo I / O opciones, en particular, HDF5 paralelo .
¿Qué estrategias están disponibles para maximizar la eficiencia del procesamiento de datos?
¿Hay algún beneficio en realizar todos los análisis (sin incluir el procesamiento posterior, por ejemplo, películas y tramas) sobre la marcha?
Me puedo imaginar este tema surgiendo en otras áreas de investigación. Por ejemplo, es posible que tenga una simulación de dinámica molecular que necesita evolucionar durante mucho tiempo, pero está interesado en el breve momento en que sucede algo interesante. O en CFD, el desarrollo inicial puede ser lento, pero una vez que se establece la turbulencia, es posible que necesite una resolución de tiempo más alta para monitorear la dinámica.
¿Hay ejemplos disponibles gratuitamente de sofisticada recopilación de resultados de simulaciones?
Respuestas:
Creo que podría tener que dividir su salida para que coincida con sus objetivos:
Esto significa bastante trabajo para tener resultados dedicados en lugar de uno genérico grande, pero esto debería ayudar a mantener bajos los costos y el tamaño. Espero que esto ayude !
Solo una cosa más que quiero agregar, en general, la resolución completa de los datos solo es necesaria para reiniciar archivos, es decir, archivos para reiniciar su simulación. No necesita muchos de estos para una simulación dada (digamos 100, de modo que si algo sucede entre 2 reinicios, pierde como máximo el 1% de su cálculo), mientras que probablemente quiera aumentar la frecuencia de salida para su películas. Y puede hacerlo a solo 1/64 de la resolución, por ejemplo (1 cada 4 puntos en cada dirección).
fuente
Creo que los maestros actuales de este arte son los experimentos de física de partículas grandes (estoy más familiarizado con CDF y D0 porque soy viejo y trabajo en la Universidad de Chicago). Tienen activadores de hardware que descartan petabytes (o más) al año. Sin embargo, este es el tema principal de la cuantización / discretización, o "desechar solo lo que no necesita". No estoy seguro de que pueda dar una respuesta sensata en general. Sería mejor limitar el problema a algo como: "Tengo una simulación PDE discretizada de la siguiente manera y me gustaría reducir la muestra de manera eficiente".
fuente
Peter LePage es bastante famoso en los círculos QCD de celosía por sugerir un método por el cual las cuadrículas de celosía demasiado grandes podrían reducirse al encontrar y aplicar buenas soluciones analíticas de corto alcance.
Esto es más o menos equivalente a notar que un conjunto de splines bien elegidas pueden permitir una integración precisa con menos nudos que el método trapezoidal (excepto que, como en su caso, puede aprovecharlo en cuatro dimensiones a la vez).
El resultado es que intercambia el tamaño bruto del conjunto de datos para obtener más cómputo por nodo, paso, pero al final sale adelante porque a la alta dimensionalidad de su problema.
No soy un tema que conozco lo suficientemente bien como para dar pistas decentes, pero ha funcionado en algunos campos en el pasado.
fuente
La pregunta es un poco amplia, por lo que proporcionaré una respuesta vaga correspondiente que sugiere posibles técnicas en tales casos.
1) Procesamiento sobre la marcha, en el que ya está trabajando. Una forma de hacer el procesamiento sobre la marcha y, al mismo tiempo, desacoplarlo del paso de generación de datos es generar un archivo de salida cíclico que siempre contenga los últimos N pasos y hacer que el análisis se ejecute en un proceso separado. Obviamente debes sincronizar los dos para evitar una condición de carrera.
2) Elegir los datos almacenados con más cuidado. Esto es muy específico de la situación, desafortunadamente.
3) Comprima sus datos antes de almacenarlos, o use una biblioteca de almacenamiento con opciones de compresión integradas, como HDF5.
4) Almacenar puntos de control regulares en lugar de salida completa. Si almacena un punto de control completo cada N pasos, es decir, datos suficientes para reiniciar la simulación desde allí, puede reconstruir los datos faltantes de una manera muy paralela si es necesario. Tenga en cuenta que en el caso de los métodos de Monte-Carlo, el punto de control debe incluir el estado de los generadores de números aleatorios. En realidad, puede considerar esto como una técnica de compresión altamente específica de la aplicación.
fuente