¿Cómo lidiar con demasiados datos?

14

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

  1. hacer películas de propiedades,
  2. realizar un análisis de Fourier,
  3. 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?

Yann
fuente
Esto puede parecer una pregunta amplia. Si te sientes así, haz sugerencias sobre cómo puedo ser más específico.
Yann
1
Observe también cómo algunos grupos experimentales abordan este problema. La física de alta energía (al CERN) y la astrofísica pueden tener escalas aún mayores de datos que deben almacenarse (o incluso filtrarse antes de almacenarlos porque los datos llegan más rápido de lo que se pueden escribir en cualquier almacenamiento), distribuidos y analizados.
Brian Diggs

Respuestas:

10

Creo que podría tener que dividir su salida para que coincida con sus objetivos:

  1. para las películas de propiedades, probablemente no necesite la resolución espacial completa y todas las variables. Elija cuidadosamente lo que desea mostrar y piense en la resolución final de la película que mostrará, probablemente no tendrá 8 mil millones de píxeles.
  2. Para los análisis de Fourier (o cosas como POD), si son temporales, es probable que solo pueda probar algunos cientos de puntos elegidos sabiamente en su dominio. Si son espaciales, probablemente solo necesite algunas instantáneas y no 1500. Y, de nuevo, no todas las propiedades.
  3. Para promediar el tiempo, puede seguir agregando al mismo campo y no tener que preocuparse por la dimensión del tiempo, ¿verdad? Sin embargo, el promedio espacial es doloroso, especialmente si desea ver su evolución a lo largo del tiempo. Pero más procesamiento en línea antes de descargar los datos podría reducir el tamaño de los mismos ...

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).

FrenchKheldar
fuente
¿Por qué es doloroso el promedio espacial? Simplemente hazlo sobre la marcha y escribe el resultado, que debería ser pequeño.
David Ketcheson, el
@DavidKetcheson El promedio espacial es doloroso porque requiere mucha comunicación y está potencialmente influenciado por la topología de su dominio, ¿no? Claro, si tiene una cuadrícula ortogonal pura alineada con su marco de referencia, no es tan malo, pero aún tiene que hacer una combinación inteligente de cálculo y MPI_REDUCE porque con una cuadrícula de ese tamaño, no puede simplemente hacer un ALL_REDUCE en 1 procesador creo que ...
FrenchKheldar
1
Bien, ahora entiendo tu comentario. Pero la comunicación generalmente no es tan mala, ya que puede promediar cada proceso localmente y luego simplemente reducir un flotante por proceso. En mi experiencia (en un BlueGene / P de 65K), el costo de esto es trivial, especialmente en comparación con los costos de E / S. De hecho, hacemos un ALL_REDUCE en todos los núcleos de 65K en cada paso y es muy rápido.
David Ketcheson
@DavidKetcheson En realidad, ahora creo que también he entendido mal su punto, y también estaba sobreestimando el costo de la reducción de datos. Lo que tenía en mente era algo así como un promedio de spanwise / azimutal donde tendría que almacenar / generar los datos 2D completos que pueden o no estar en la misma cuadrícula que la cuadrícula computacional. Pero tiene razón, el costo real de MPI_ALL_REDUCE no es un problema en sí mismo.
FrenchKheldar
8

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".

Matt Knepley
fuente
3

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.

dmckee --- gatito ex moderador
fuente
3

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.

Khinsen
fuente