tl; dr
La visualización in situ procesa y analiza los datos de simulación mientras que la simulación se ejecuta, directamente en la memoria, en lugar de escribir resultados sin procesar en el disco para un posterior procesamiento. Este enfoque es esencial para la computación Exascale donde el ancho de banda de E/S no puede mantenerse al día con la generación de datos. Al integrar la visualización durante el cálculo, puede:
- Evite los cuellos de botella de E/S que paralizan los flujos de trabajo tradicionales
- Supervise las simulaciones en tiempo real y en los parámetros de dirección sobre la marcha
- Reducir las necesidades de almacenamiento en órdenes de magnitud
- Captura fenómenos transitorios que se perderían con instantáneas poco frecuentes
La compensación se agrega complejidad y contención de recursos: debe decidir qué visualizar antes de la ejecución, y la visualización compite con la simulación para los ciclos de CPU/GPU.
Introducción: por qué es importante la visualización in situ
Las simulaciones científicas generan grandes cantidades de datos. Una sola ejecución de ExaScale puede producir petabytes de salida, pero escribir esos datos en el disco se convierte en un cuello de botella fundamental: los sistemas de almacenamiento no pueden seguir el ritmo del rendimiento computacional. El resultado es una brecha cada vez mayor entre la rapidez con la que las simulaciones pueden producir datos y la rapidez con que se pueden guardar y analizar los datos.
La visualización in situ (latín para ‘en el lugar’) aborda esto realizando tareas de visualización y análisis al mismo tiempo que la simulación accede a los datos directamente desde la memoria antes de escribirlos en el disco. Este paradigma cambia el flujo de trabajo de:
Simulation → Storage → Visualization
a:
Simulation + Visualization → Storage of images/reduced data
A medida que las escalas de computación de alto rendimiento (HPC) hacia ExaScale, las técnicas in situ ya no son opcionales, se están convirtiendo en una necesidad para el descubrimiento científico. Esta guía explica cómo funciona la visualización in situ, la compara con el postprocesamiento tradicional, las encuestas de herramientas disponibles y brinda consejos prácticos para adoptarlo en sus proyectos de investigación.
Cómo funciona la visualización in situ: el flujo de trabajo principal
La visualización in situ aprovecha los mismos recursos computacionales que ejecutan la simulación para realizar el análisis visual. Existen dos estrategias de acoplamiento primarios:
Visualización in situ estrechamente acoplada (en línea)
El código de visualización comparte el mismo espacio de memoria y ejecutable que la simulación. A intervalos específicos (por ejemplo, cada paso de tiempo o cuando se cumplen ciertos criterios), las pausas de simulación, los datos se pasan a los algoritmos de visualización y se producen imágenes o datos derivados.
Pros:
- Acceso de menor latencia a datos de simulación
- Sin gastos generales de comunicación en red
- Mapeo de datos más simple (la misma disposición de memoria)
Contras:
- La visualización compite directamente con los ciclos de CPU/GPU, lo que ralentiza la simulación
- Aumento de la huella de memoria por nodo
- Un bloqueo en el código de visualización puede bloquear toda la simulación
Herramientas de ejemplo: Catalizador de paraview integrado directamente en el binario de simulación.
Visualización in situ sueltamente acoplada (en tránsito)
La simulación se ejecuta en un conjunto de nodos de cómputo, mientras que la visualización se ejecuta en un conjunto de nodos separados coasignados. Los datos se transfieren a través de la red (a menudo a través de MPI) a los procesos de visualización.
Pros:
- La visualización no interfiere directamente con el cálculo de la simulación
- Puede escalar la visualización de forma independiente
- Mejor aislamiento de fallas
Contras:
- Sobrecarga de transferencia de red
- Requiere más recursos totales (nodos separados)
- Es posible que sea necesario volver a particionar los datos para la visualización
Marcos de ejemplo: Damaris, que utiliza núcleos dedicados para el análisis asíncrono.
Enfoques híbridos
Muchas implementaciones del mundo real utilizan una estrategia híbrida: acoplados estrechamente dentro de un nodo (usando la misma CPU/GPU) pero acoplados vagamente a través de nodos, o empleando canalizaciones asíncronas donde la visualización se ejecuta antes de la simulación en los mismos recursos.
In-situ vs posprocesamiento: un análisis comparativo
| Característica | Visualización in situ | Visualización posterior al procesamiento |
|---|---|---|
| Tiempo | En tiempo real, durante la simulación | Retrasado (después de la simulación) |
| Flujo de datos | Procesa datos en memoria | Escribe datos en el disco, luego los lee |
| Sobrecarga de E/S | Muy bajo (minimiza las escrituras en disco) | Muy alto (Cuello de disco) |
| Necesidades de almacenamiento | Bajo (solo imágenes/resúmenes guardados) | Extremadamente alto (datos sin procesar completos) |
| Resolución temporal | Alto (cada paso de tiempo posible) | Bajo (limitado por la capacidad de almacenamiento) |
| Flexibilidad | Bajo (decisiones fijas antes de ejecutar) | Alto (puede volver a analizar los datos guardados) |
| Impacto de cálculo | Comparte recursos con simulación | Sin impacto en el tiempo de ejecución de la simulación |
Cuándo usar la visualización in situ
- Simulaciones de ExaScale donde el ancho de banda de E/S es el factor limitante
- Fenómenos transitorios que requieren una alta fidelidad temporal (por ejemplo, frentes de movimiento rápido, turbulencia)
- Depuración: debe detectar errores antes de perder millones de horas centrales.
- Dirección de simulación—Desea ajustar parámetros sobre la marcha en función de los resultados intermedios
- Reducción de datos: necesita extraer funciones, estadísticas o imágenes y descartar datos sin procesar
Cuando el posprocesamiento todavía tiene sentido
- Conjuntos de datos pequeños a moderados que se pueden almacenar de forma asequible
- Análisis exploratorio donde debe probar muchas técnicas de visualización diferentes después del hecho
- Renderizado de alta fidelidad que requiere el conjunto de datos completo y no se puede realizar con representaciones reducidas
- Objetivos de archivo—preservar datos sin procesar para futuras reproducibilidad
En la práctica, muchos equipos adoptan una estrategia híbrida: usan in-situ para producir conjuntos de datos reducidos (por ejemplo, bases de datos de cine, estadísticas, isosuperficies) y conservar suficientes datos sin procesar para seleccionar pasos de tiempo, luego realizar un procesamiento posterior detallado en el conjunto reducido.
Herramientas y marcos populares para la visualización in situ
Varios frameworks de código abierto maduros admiten la integración in situ:
Catalizador de paravista
Paraview Catalyst es una biblioteca ligera que permite el análisis in situ utilizando la canalización VTK. Proporciona una pequeña API que las simulaciones en C++, C, Fortran o Python pueden llamar para pasar datos a los algoritmos de visualización de ParaView. Catalyst puede generar imágenes, extraer características o producir bases de datos de cine para su posterior exploración.
Fuerzas clave:
- Aprovecha todo el poder de VTK y Paraview
- Admite modos de acoplamiento firme y suelto
- Desarrollo activo y amplia documentación
Recursos:
- Documentación de Paraview Catalyst
- Introducción a la visualización in situ y catalizador de paraview
Visita Libsim
Visit ofrece libsim, un conjunto de bibliotecas que permiten que las simulaciones se conecten al motor de visualización de Visit. Al igual que Catalyst, admite modos en línea y en tránsito. La visita es particularmente fuerte para la visualización paralela a gran escala y se ha utilizado en muchos sistemas de clase de liderazgo.
Fuerzas clave:
- Altamente escalable a cientos de miles de núcleos
- Rico conjunto de operadores de visualización
- Fuerte soporte para los datos de refinamiento de malla adaptativa (AMR)
Recursos:
Ascenso
Ascent es una biblioteca in situ ligera y con capacidad de muchos núcleos diseñada para entornos con recursos limitados. Es especialmente efectivo para aplicaciones aceleradas por GPU y puede ejecutarse de manera eficiente en un pequeño subconjunto de nodos.
Fuerzas clave:
- Sobrecarga mínima
- Buen soporte de GPU
- Parte del proyecto de computación EXASCALE de EE. UU.
dama
Damaris se enfoca en el uso de núcleos dedicados para el análisis in situ asincrónico, aislando la visualización de la simulación principal para minimizar el impacto del rendimiento. Es compatible con los backends de visita y paraview.
Fuerzas clave:
- La ejecución asíncrona reduce la interferencia de simulación
- Maneja el movimiento de datos y la repartición
- Adecuado para simulaciones de estado estacionario de larga duración
sensei y conducto
Sensei proporciona una interfaz genérica que desacopla las simulaciones de herramientas in situ específicas. Conduit maneja la descripción y el intercambio de datos. Esta abstracción permite que el mismo código de simulación funcione con Catalyst, Ascent u otros backends sin cambios de código.
Cuándo elegir: Si desea evitar el bloqueo del proveedor y admitir múltiples marcos in situ.
Desafíos de implementación: ¿Qué puede salir mal?
La integración de la visualización in situ en una base de código de simulación existente no es trivial. Esté preparado para estos desafíos comunes:
Contención de recursos y sobrecarga de rendimiento
La visualización consume ciclos de CPU, tiempo de GPU y memoria que de otro modo estarían disponibles para la simulación. Los estudios han demostrado que las tuberías in situ mal optimizadas pueden retrasar las simulaciones en un 20-50% o más. La clave es measure y atada la sobrecarga.
Estrategias de mitigación:
- Use modos asincrónicos o en tránsito para separar recursos
- Limite la frecuencia de visualización (por ejemplo, cada 10º paso de tiempo)
- Emplear algoritmos de reducción de datos para reducir el volumen de procesamiento
- Dedicar un subconjunto de núcleos/GPU exclusivamente a la visualización
Huella de memoria
Carga de bibliotecas de visualización junto con la simulación Aumenta el uso de memoria por nodo. En los sistemas vinculados a la memoria, esto puede forzar una reducción en el tamaño del problema por nodo.
Mitigación:
- Elija marcos ligeros (Ascent está diseñado para esto)
- Suelte la memoria de visualización inmediatamente después de su uso
- Considere los modos en tránsito donde la visualización se ejecuta en nodos separados
Conversión de datos e interoperabilidad
Los códigos de simulación a menudo utilizan estructuras de datos personalizadas optimizadas para los solucionadores de PDE. Las herramientas in situ como VTK esperan datos en formatos específicos (por ejemplo, cuadrículas estructuradas, mallas no estructuradas). Los adaptadores de escritura para traducir entre estas representaciones pueden ser complejos y pueden implicar copias profundas costosas.
Solución:
- Use capas de abstracción como Sensei/Conduit para definir un modelo de datos común
- Explore las interfaces de copia cero si su simulación y visualización comparten el mismo diseño subyacente
- Código adaptador de factor en un módulo separado para aislar la complejidad
Escalabilidad paralela
Los algoritmos de visualización deben escalar al mismo tamaño que la simulación (potencialmente millones de rangos MPI). Las operaciones globales como la representación volumétrica o la extracción de Isosurface en todos los datos pueden convertirse en cuellos de botella de comunicación.
Solución:
- Utilice algoritmos de visualización distribuida que minimicen la comunicación entre nodos
- Emplear la reducción o el muestreo de datos para reducir el volumen de datos efectivo
- Considere los enfoques jerárquicos: primero el análisis local, luego los resultados agregados
El problema ‘a priori’
La visualización in situ requiere que decidas antes de ejecutar qué visualizar. Si luego se da cuenta de que necesita examinar una variable diferente o aplicar un filtro diferente, los datos sin procesar desaparecen. Esta es la inflexibilidad fundamental del in-situ.
Soluciones alternativas:
- Guarde un conjunto de datos reducido pero flexible (por ejemplo, una base de datos de cine) que admite la renderización posterior desde diferentes puntos de vista
- Guarde periódicamente pequeñas instantáneas de datos sin procesar en pasos de tiempo clave
- Use la dirección de simulación para ajustar dinámicamente los parámetros de visualización a medida que avanza la carrera
Complejidad del código y fragilidad
El acoplamiento ajustado significa que la biblioteca de visualización se convierte en parte del ejecutable de simulación. Un error en el código de visualización puede bloquear toda la simulación. La integración también aumenta la complejidad del código y la carga de mantenimiento.
Mejores prácticas:
- Encapsular todas las llamadas in situ detrás de una interfaz limpia
- Mantenga el código de visualización separado de los solucionadores principales
- Proporcione la configuración de tiempo de ejecución para habilitar/deshabilitar in situ fácilmente
- Prueba con visualización deshabilitada para garantizar la estabilidad de la simulación
Mejores prácticas para la adopción in situ exitosa
Basado en la experiencia de la comunidad de HPC, siga estas pautas para maximizar el éxito:
1. Comience con un prototipo
Antes de comprometerse a una integración completa, cree un pequeño prototipo que ejerza la canalización básica: Simulación → Herramienta in situ → Imagen de salida. Esto valida la cadena de herramientas y revela los obstáculos de integración con anticipación.
2. Adopte arquitecturas asíncronas o híbridas
Evite los modos estrechamente acoplados a menos que tenga una fuerte evidencia de que los gastos generales serán aceptables. Prefiere enfoques en tránsito o asíncronos donde la visualización se ejecuta en núcleos o nodos dedicados. Esto aísla la interferencia de rendimiento.
3. Definir objetivos claros de reducción de datos
El in-situ es más efectivo cuando reduce los datos antes para guardarlos. Decide por adelantado:
- ¿Qué imágenes o películas necesitas?
- ¿Qué cantidades derivadas (por ejemplo, flujos integrados, valores máximos) son esenciales?
- ¿Puedes usar bases de datos de cine para una exploración post-hoc flexible?
4. Mide todo
Instruye su código para medir:
- Tiempo de simulación con y sin habilitado in situ
- Uso de memoria por nodo
- Frecuencia y duración de las pausas de visualización
- Calidad y utilidad de los productos producidos
Sin métricas, no puede saber si in situ está ayudando o sufriendo.
5. Aprovechar la infraestructura existente
No reinvente la rueda. Use marcos establecidos (catalizador, ascent, damaris) en lugar de escribir código in situ personalizado desde cero. Manejan muchos detalles de bajo nivel (comunicación MPI, repartición de datos, celdas fantasma) que son propensas a errores de implementarse.
6. Plan de dirección de simulación
Si desea dirigir las simulaciones de forma interactiva, diseñe su canalización in situ para aceptar mensajes de control externos. Las herramientas como Icarus (para Paraview) brindan capacidades de dirección con cambios de código mínimos.
7. Usar celdas fantasma para límites paralelos
Cuando su dominio de simulación se descompone en los rangos de MPI, los algoritmos de visualización que necesitan datos vecinos (por ejemplo, gradientes, isosuperficies) deben comunicarse a través de los límites de subdominio. Pre-compute y almacene «células fantasma» para evitar la comunicación repetida durante la visualización.
8. Mantenga la visualización opcional
Envuelva todas las llamadas in situ detrás de un indicador de tiempo de ejecución. La simulación debe ejecutarse normalmente con in-situ deshabilitado. Esto es esencial para la depuración y para los escenarios en los que desea ejecutar sin la sobrecarga.
Aplicaciones del mundo real: donde brilla in situ
La visualización in situ se ha vuelto indispensable en varios dominios científicos:
Dinámica de fluidos computacional (CFD)
Las simulaciones de flujo turbulento generan campos masivos de velocidad y presión en 3D. La visualización in situ puede extraer cortes 2D, aerodinámicas o núcleos de vórtice en tiempo real, lo que permite a los ingenieros monitorear la separación del flujo, las ondas de choque o la inestabilidad de combustión a medida que se desarrollan.
Astrofísica y Cosmología
Las simulaciones cosmológicas con refinamiento de malla adaptativa (AMR) rastrean halos de materia oscura y densidades de gas durante miles de millones de años. El análisis in situ identifica halos, clasifica estructuras y rastrea las fusiones a alta resolución temporal, tareas que serían imposibles con instantáneas guardadas poco frecuentes.
Dinámica molecular y ciencia de materiales
Los conjuntos de ejecuciones de dinámica molecular se pueden monitorear in situ para detectar eventos raros como nucleación, transiciones de fase o nucleación de dislocación. Los investigadores pueden detener las simulaciones temprano cuando ocurre un evento, guardando recursos computacionales.
Clima y computación urgente
Las previsiones meteorológicas de conjuntos para huracanes o incendios forestales requieren ejecutar docenas de simulaciones en paralelo. El análisis topológico in situ identifica el resultado más probable del conjunto, proporcionando información crítica para las decisiones de emergencia antes de escribir el conjunto de datos completo.
Visualización del rendimiento
Irónicamente, también se utilizan técnicas in situ para visualizar el rendimiento del propio sistema HPC: monitorear el ancho de banda de la memoria, los patrones de comunicación y el equilibrio de carga durante la ejecución para guiar la optimización.
Primeros pasos: una lista de verificación práctica
Si está considerando agregar visualización in situ a su código de simulación, siga este plan paso a paso:
Fase 1: Evaluación (1-2 semanas)
- [ ] cuantificar su problema de E/S: ¿cuántos datos genera? ¿Cuánto tiempo lleva escribir? ¿Reducir la producción ahorraría mucho tiempo?
- [ ] Identificar objetivos de visualización: ¿Qué imágenes o análisis específicos necesita durante la ejecución? (p. ej., «2d rebanada de temperatura cada 100 pasos», «Presión máxima en el tiempo»)
- [ ] Herramientas de encuesta: Revise Paraview Catalyst, Visite libsim, Ascent y Damaris. ¿Cuál se ajusta a su lenguaje de programación y entorno HPC?
- [ ] Comprobación de soporte del sistema: ¿Su supercomputación admite flujos de trabajo in situ? ¿Están instaladas las bibliotecas requeridas?
Fase 2: prototipo (2-4 semanas)
- [ ] Configure un ejemplo mínimo: tome un pequeño caso de prueba (por ejemplo, un simple solucionador de ecuaciones de calor) e integre el marco in situ elegido para producir una sola imagen.
- [ ] Medir los gastos generales de la línea de base: compare el tiempo de ejecución de la simulación con y sin habilitado in situ. ¿Es aceptable la sobrecarga (< 10-15%)?
- [ ] Reducción de datos de prueba: Experimente con diferentes estrategias de reducción (submuestreo, isosuperficies, agregados estadísticos). ¿El producto satisface sus necesidades científicas?
- [ ] Verificar escalabilidad: Ejecute el prototipo en 1, 10, 100 rangos. ¿La escala aérea escala linealmente o explota a escalas más grandes?
Fase 3: Integración (4-8 semanas)
- [ ] [ ] Diseñe una capa de abstracción: cree un módulo que encapsule todas las llamadas in situ detrás de una API simple (por ejemplo,
beginTimestep(),addData(field),execute(),endTimestep()). Esto hace que sea fácil intercambiar marcos más adelante. - [ ] Agregar configuración: use banderas de tiempo de ejecución o variables de entorno para controlar la frecuencia in situ, los formatos de salida y qué variables capturar.
- [ ] Implementar una degradación elegante: asegúrese de que la simulación continúe incluso si falla in situ (por ejemplo, escriba una advertencia pero no se canse).
- [ ] Integrar con las E/S existentes: decida cómo coexisten las salidas in situ (imágenes, bases de datos) con cualquier volcado de datos de procesamiento posterior existente.
- [ ] Agregar dirección si es necesario: si la dirección interactiva es un objetivo, implemente devoluciones de llamada o pase de mensajes para permitir cambios de parámetros externos.
Fase 4: Validación y Producción (2-4 semanas)
- [ ] Ejecutar pruebas de extremo a extremo: Ejecute una simulación científica completa con in situ habilitado. Verifique que las salidas sean correctas y que la simulación se complete en un tiempo aceptable.
- [ ] Prueba de estrés: Empuje los límites: ejecute el número completo de núcleos previstos, con el tamaño máximo del problema. Monitorear la memoria, la comunicación y la estabilidad.
- [ ] Documente el flujo de trabajo: escriba instrucciones claras para los usuarios: cómo habilitar in situ, qué opciones están disponibles, dónde se escriben los resultados, cómo interpretarlas.
- [ ] Train de usuarios: asegúrese de que los miembros del equipo entiendan el flujo de trabajo in situ y puedan solucionar problemas comunes.
Trampas comunes y cómo evitarlas
| Trampa | Síntoma | Prevención / Arreglo |
|---|---|---|
| Overhead ilimitado | La simulación se ralentiza por > 30% | limitar la frecuencia in situ; usar en tránsito; Perfil para encontrar cuellos de botella |
| Agotamiento de la memoria | Empleos asesinados por el asesino de OOM | reducir el volumen de datos pasado; Use menos núcleos dedicados; Cambiar al modo de acoplamiento suelto |
| Variables faltantes | Más tarde se da cuenta de que necesita ahorrar cantidad x | Guarde pequeñas instantáneas sin procesar periódicamente; Usar formato de cine para flexibilidad |
| Escala deficiente | El tiempo in situ aumenta con el recuento de núcleos | utilizar algoritmos de visualización distribuida; datos de repartición; Agréguese localmente primero |
| Simulación de bloqueos de visualización | Una mala llamada de visualización aborta toda la ejecución | Envolver llamadas in situ en try-catch; deshabilitar in situ en caso de falla; Mantenga el código de simulación separado |
| Los archivos de salida se sobrescriben | Múltiples ejecuciones escribir en las mismas imágenes | Incluya marcas de tiempo o identificaciones de trabajo en los nombres de archivo de salida; Usar directorios de salida separados |
Conclusión: ¿Es la visualización in situ adecuada para usted?
La visualización in situ es un poderoso paradigma para abordar el diluvio de datos de la computación científica moderna. Al procesar datos en la memoria durante las ejecuciones de simulación, puede superar los cuellos de botella de E/S, reducir los costos de almacenamiento y obtener información en tiempo real de sus modelos. Sin embargo, no es una bala de plata: introduce complejidad, requiere decisiones de diseño por adelantado y puede afectar el rendimiento de la simulación si se implementa de manera deficiente.
Para los grupos de investigación que ejecutan simulaciones de PDE a gran escala en sistemas HPC, especialmente aquellos que se acercan a ExaScale, es cada vez más esencial aprender y adoptar técnicas in situ. Comience poco a poco con un prototipo, mida rigurosamente y amplíe deliberadamente. La inversión vale la pena en ciclos de iteración más rápidos, información científica más rica y la capacidad de ejecutar simulaciones que de otro modo serían imposibles debido al volumen de datos.
Guías relacionadas
- Visualizar los resultados de la simulación de manera efectiva: principios generales para convertir los datos de simulación en imágenes procesables.
- librería de visualización distribuida de iluminador: descripción general de una herramienta especializada para renderizado y almacenamiento en paralelo.
- gestión de problemas de PDE a gran escala: estrategias para resolver sistemas masivos de manera eficiente.
- Comprender modelos de campo de fase: un área de aplicación común para las simulaciones PDE.
- usando fipy para el modelado de campo de fase: implementación práctica en Python.
Próximos pasos
¿Listo para probar la visualización in situ? Comience por:
- Evaluar sus cuellos de botella de E/S actuales: ejecute una herramienta de creación de perfiles (por ejemplo, Darshan) en una simulación existente para cuantificar el tiempo dedicado a escribir datos.
- Instalar Paraview Catalyst o Ascent en su sistema de desarrollo y ejecutar los tutoriales.
- Construyendo un prototipo mínimo con un simple caso de prueba para medir la sobrecarga y validar la cadena de herramientas.
- Llegar a < al equipo de soporte de HPC de su institución; a menudo tienen códigos de experiencia y ejemplos para comenzar.
Si necesita ayuda para integrar la visualización in situ en su software de investigación, contáctenos para consultas y capacitación adaptadas a los equipos de computación científica.