parallel processing - ¿Qué tan bueno es VTK?
parallel-processing visualization (4)
Definir cómo VTK "poderoso" (o cualquier biblioteca) es imposible. Todo depende de tus necesidades. No es como si pudieras lanzar cualquier grilla en VTK, reforzar con un montón de cargas de hardware y esperar que funcione sin problemas. VTK no está orientado a modelos grandes, sin embargo, hay una biblioteca llamada ParaView que intenta admitir esto.
Nota al margen: visualizamos miles de millones de modelos de células de forma interactiva en computadoras portátiles normales (sin utilizar VTK / Paraview). ¿Cómo? Supongo que es un secreto ... :)
He escuchado algunas buenas críticas de Visualization ToolKit (VTK) de los desarrolladores. ¿Pero qué tan poderoso es? Por ejemplo, ¿puede manejar la visualización de un depósito de aceite completo (en un simulador) con miles de millones de puntos de rejilla? La mayoría de los simuladores de yacimientos industriales funcionan con procesadores paralelos. Sé que VTK admite el procesamiento en paralelo, pero, una vez más, ¿qué tan estable puede estar utilizando procesadores en paralelo cuando se ejecuta algo como simulaciones de yacimientos? ¿Alguien ha usado VTK en un proyecto a gran escala?
Mathematica admite algunas simulaciones de yacimientos simples, pero creo que utiliza las bibliotecas de Java Swing. Entonces, ¿alguien tiene alguna idea de que VTK se utilice para una visualización poderosa que no sea 3DSplice? Además, ¿alguien puede decir algo sobre el tiempo de desarrollo usando VTK?
VTK es un kit de herramientas bastante poderoso que ofrece implementaciones razonablemente eficientes de una amplia variedad de algoritmos de visualización. Para ver algo de lo que puede hacer VTK, recomiendo revisar ParaView . ParaView construye una aplicación utilizable alrededor de VTK para que pueda visualizar datos de forma inmediata al unir varios componentes de VTK.
Para responder más directamente a sus preguntas, el procesamiento paralelo en VTK se utiliza para acelerar la creación de la visualización. Esto debería ser estable, pero independiente de su cálculo de simulación. Aprender a usar VTK toma algo de tiempo, pero hay un libro que puede comprar que explica muchos aspectos de cómo usarlo. Experimentar con las envolturas de Python es una buena manera de ponerse al día sobre cómo usar VTK.
Para sus aplicaciones, no estoy seguro de si VTK es la solución más adecuada. Recomendaría algunos experimentos a pequeña escala utilizando ParaView o los enlaces de Python VTK para ver si puede crear una visualización razonable de sus simulaciones.
VTK está codificado en C ++ y se puede usar en C ++, Python, Tcl / Tk, Java. Laboratorios como Sandia (incluyendo, creo, su esfuerzo de Titan ), Los Alamos y Livermore, utilizan VTK para los esfuerzos de visualización en una escala lo suficientemente grande como para competir con sus ambiciones (por supuesto, esto se hace con enormes cantidades de hardware en soporte, y programadores extremadamente hábiles muy experimentados con VTK y todas las demás tecnologías que se están utilizando en el proyecto ("miles de millones de puntos de cuadrícula" no es un proyecto que abordar hasta que tenga un equipo con habilidades tan extremas, no con CUALQUIER kit de herramientas).
No estoy afirmando que esto (un proyecto de visualización de la escala ferozmente ambiciosa que tiene en mente) va a ser FÁCIL sin importar cómo lo aborde, pero no puedo pensar en ningún marco alternativo que lo haga más fácil que VTK lo haría! -)
Mi experiencia personal con VTK es positiva, pero solo con conjuntos de datos pequeños. Definitivamente puede ser muy lento si tiene grandes conjuntos de datos, como en su caso. En el lado positivo, tiene tantos modos de visualización que es impensable reescribirlos en OpenGL puro. No sé de dónde viene la lentitud de VTK, pero la arquitectura de la tubería probablemente no ayuda. Además, mucho de eso depende del filtro que uses. La trama volumétrica, por ejemplo, es increíblemente lenta por la construcción (muchos planos transparentes paralelos).
Una solución que encontramos útil fue recortar el conjunto de datos al mínimo antes de trazarlo. Muy a menudo, la pérdida de precisión visual es despreciable. También puedes probar con el filtro LevelOfDetail (LOD) pero no tengo experiencia con él.