64
Robert Maynard Marcus D. Hanwell GTC, San Jose, CA March, 2015 1 In-Situ Data Analysis and Visualization: ParaView, Calalyst and VTK-m

In-Situ Data Analysis and Visualization: ParaView

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: In-Situ Data Analysis and Visualization: ParaView

Robert Maynard Marcus D. Hanwell

GTC, San Jose, CA March, 2015

1

In-Situ Data Analysis and Visualization: ParaView, Calalyst and VTK-m

Page 2: In-Situ Data Analysis and Visualization: ParaView

Agenda

• Introduction to ParaView Catalyst

• Run example Catalyst Script

• Creating your own Catalyst Script

• Rendering grid and field information from

live simulation

2

Page 3: In-Situ Data Analysis and Visualization: ParaView

Going From Data to Visualization

3

Page 4: In-Situ Data Analysis and Visualization: ParaView

The Visualization Pipeline

• A sequence of algorithms that operate on

data objects to generate geometry

4

Source

Data

Data

Filter

Filter

Data

Data

Mapper

Mapper Actor

Actor

Render on screen

Page 5: In-Situ Data Analysis and Visualization: ParaView

Data Types

Uniform Rectilinear (vtkImageData)

Non-Uniform Rectilinear (vtkRectilinearData)

Curvilinear (vtkStructuredData)

Polygonal (vtkPolyData)

Unstructured Grid (vtkUnstructuredGrid)

Multi-block Hierarchical Adaptive

Mesh Refinement (AMR)

Hierarchical Uniform AMR

Octree

Page 6: In-Situ Data Analysis and Visualization: ParaView

Why In Situ?

6

Need a supercomputer to analyze results from a hero run 2 orders of magnitude difference between each level

Page 7: In-Situ Data Analysis and Visualization: ParaView

Access to More Data

7

Post-processing In situ processing

CTH (Sandia) simulation with roughly equal data stored at simulation time

Reflections and shadows added in post-processing for both examples

Dump Times

Page 8: In-Situ Data Analysis and Visualization: ParaView

Quick and Easy Run-Time Checks

MPAS-O (LANL) simulation MPAS-O (LANL) simulation

MPAS-O (LANL) simulation

Page 9: In-Situ Data Analysis and Visualization: ParaView

Faster Time to Solution

CTH (Sandia) simulations comparing different workflows 9

Page 10: In-Situ Data Analysis and Visualization: ParaView

0

5

10

15

20

25

16 32 64 128 256 512 1024 2048

Se

co

nd

s p

er

Tim

e S

tep

Cores

data generation annotations

write render

cell to point contour

Small Run-Time Overhead

XRAGE (LANL) simulation 10

Page 11: In-Situ Data Analysis and Visualization: ParaView

Reduced File IO Costs

Time of Processing

Type of File Size per File Size per 1000 time steps

Time per File to Write at Simulation

Post Restart 1,300 MB 1,300,000 MB 1-20 seconds

Post Ensight Dump

200 MB 200,000 MB > 10 seconds

In Situ PNG .25 MB 250 MB < 1 second

XRAGE (LANL) simulation 11

Page 12: In-Situ Data Analysis and Visualization: ParaView

What is ParaView Catalyst?

12

Page 13: In-Situ Data Analysis and Visualization: ParaView

ParaView Catalyst Architecture

ParaView Catalyst

Python Wrappings

ParaView Server Parallel Abstractions and Controls

VTK Core Visualization Algorithms

13

Page 14: In-Situ Data Analysis and Visualization: ParaView

ParaView User Interface Menu Bar

Toolbars

Pipeline Browser

Properties Panel

3D View

Advanced Toggle

Page 15: In-Situ Data Analysis and Visualization: ParaView

Geometry Representations

Points Wireframe Surface Surface with Edges

Volume

Toggle Color Legend

MappedVariable Representation

VectorComponent

EditColors

Reset ScalarRange

Custom ScalarRange

Page 16: In-Situ Data Analysis and Visualization: ParaView

Simulation

Disk Storage

Visualization

Simulation Disk

Storage

Visualization

Separate MPI

Running Simulation with Catalyst

In Situ In Transit 16

Page 17: In-Situ Data Analysis and Visualization: ParaView

Running Simulation with Catalyst

Today we are going to be running In Situ

and interactively with Catalyst

17

Simulation

Visualization

Page 18: In-Situ Data Analysis and Visualization: ParaView

Simulation

Polygonal Output with Field Data

Script Export

Augmented script in input deck.

Rendered Images

18

# Create the reader and set the filename.

reader = sm.sources.Reader(FileNames=path)

view = sm.CreateRenderView()

repr = sm.CreateRepresentation(reader, view)

reader.UpdatePipeline()

dataInfo = reader.GetDataInformation()

pinfo = dataInfo.GetPointDataInformation()

arrayInfo = pInfo.GetArrayInformation(

"displacement9")

Output Processed Data

User Perspective

Series Data

Page 19: In-Situ Data Analysis and Visualization: ParaView

GETTING READY TO RUN

INTERACTIVELY

19

Page 20: In-Situ Data Analysis and Visualization: ParaView

Two Ways for Live In Situ Analysis and

Visualization • Without blocking

– Simulation proceeds while the user interacts with the data from a

specific time step

– “At scale” mode

• With blocking (new in ParaView 4.2)

– Simulation is blocked while the user interacts with the data

– “Debugging” mode

• Can switch between interactive and batch during run as well as

disconnecting from the run

20

Page 21: In-Situ Data Analysis and Visualization: ParaView

Getting Ready to Run Interactively

• From the command shell run – “~/insitu_demo/demo1.sh”

• This runs a fake simulation with a prebuilt

catalyst pipeline

21

Page 22: In-Situ Data Analysis and Visualization: ParaView

Run Interactively Load ParaView and connect to the simulation

22

Page 23: In-Situ Data Analysis and Visualization: ParaView

Run Interactively

23

Enable Extraction of Contour

Visualize the Contour

Page 24: In-Situ Data Analysis and Visualization: ParaView

Run Interactively

24

Page 25: In-Situ Data Analysis and Visualization: ParaView

CREATING CATALYST OUTPUT

25

Page 26: In-Situ Data Analysis and Visualization: ParaView

Creating Catalyst Output

• ParaView GUI plugin to create Python

scripts

• Developer generated “canned” scripts – See ParaView Catalyst User’s Guide

26

Page 27: In-Situ Data Analysis and Visualization: ParaView

Create Python Scripts from ParaView

Load the Catalyst script generator GUI plugin

27

Page 28: In-Situ Data Analysis and Visualization: ParaView

Create Python Scripts from ParaView

Load File ~/Demo2/filename_20_0.vti

Create Contour Filter

28

Page 29: In-Situ Data Analysis and Visualization: ParaView

29

Create Python Scripts from ParaView

Using the Writers menu add a writer

Page 30: In-Situ Data Analysis and Visualization: ParaView

30

Create Python Scripts from ParaView

1. Load the Catalyst script generator GUI plugin

2. Load File

3. Create Contour Filter

4. Using the Writers menu add a writer

Page 31: In-Situ Data Analysis and Visualization: ParaView

31

Export Catalyst Live Script

Using the CoProcessing menu start the export process

Page 32: In-Situ Data Analysis and Visualization: ParaView

32

Export Catalyst Live Script

1. Using the CoProcessing menu start the export

process

2. Select ‘filename_20_0.pvti’ as the simulation

inputs

3. Select Live Visualization

Page 33: In-Situ Data Analysis and Visualization: ParaView

Other Catalyst Export Options • Options:

– Live visualization

– Output to Cinema

– Output Views

33

Page 34: In-Situ Data Analysis and Visualization: ParaView

Other Catalyst Export Options • Output Views

– Image Type

– File Name

– Write Frequency

– Magnification

– Fit to Screen

– %t for timestep

34

Page 35: In-Situ Data Analysis and Visualization: ParaView

Other Catalyst Export Options • Output to Cinema

– Static vs Spherical

Camera

35

Θφ

Page 36: In-Situ Data Analysis and Visualization: ParaView

GETTING READY TO RUN OUR

SCRIPT

36

Page 37: In-Situ Data Analysis and Visualization: ParaView

Getting Ready to Run Interactively

• run ~/insitu_demo/demo2.sh

We are running our premade python script, if

you want to run the version you made

change driver_path variable in demo2.sh

37

Page 38: In-Situ Data Analysis and Visualization: ParaView

Run Interactively Load ParaView and connect to the simulation

38

Page 39: In-Situ Data Analysis and Visualization: ParaView

Run Interactively ( Update with new

Images)

39

Enable Extraction of Contour

Visualize the Contour

Page 40: In-Situ Data Analysis and Visualization: ParaView

Developers Section Overview

• Most work is done in creating the adaptor between the

simulation code and Catalyst

• Small footprint in main simulation code base

• Needs to be efficient both in memory and computationally

• Fortran, C++ and Python examples: – https://github.com/Kitware/ParaViewCatalystExampleCode

40

Page 41: In-Situ Data Analysis and Visualization: ParaView

Interaction Overview

• Simulation has separate data structures from

VTK data structures

• Use an adaptor to bridge the gap

– Try to reuse existing memory

– Also responsible for other interactions between

simulation code and Catalyst

Solver Adaptor

41

Page 42: In-Situ Data Analysis and Visualization: ParaView

Developer Perspective

Simulation

42

Adaptor

INITIALIZE(in pipelines)

COPROCESS(in time, in grid,

in fields)

FINALIZE()

INITIALIZE()

ADDPIPELINE(in pipeline)

REQUESTDATADESCRIPTION(in time,

out fields)

COPROCESS(in vtkDataSet)

FINALIZE()

Page 44: In-Situ Data Analysis and Visualization: ParaView

VTK-m Project Goals

• A single place for the visualization community to

collaborate, contribute, and leverage massively

threaded algorithms.

• Reduce the challenges of writing highly

concurrent algorithms by using data parallel

algorithms

Page 45: In-Situ Data Analysis and Visualization: ParaView

VTK-m Architecture

In-Situ

Execution Data Parallel Algorithms Arrays

Post Processing

Worklets

DataModel

Filters

• Combines strengths of multiple projects: – EAVL, Oak Ridge National Laboratory

– DAX, Sandia National Laboratory

– PISTON, Los Alamos National Laboratory

Page 46: In-Situ Data Analysis and Visualization: ParaView

Execution Environment

Cell Operations

Field Operations Basic Math Make Cells

Control Environment

Grid Topology Array Handle Invoke

Device Adapter

Allocate Transfer Schedule

Sort …

Wo

rklet VTK-m Framework

cont exec

Page 47: In-Situ Data Analysis and Visualization: ParaView

VTK-m Arbitrary Composition

• VTK-m allows clients to access different memory layouts through the Array Handle and Dynamic Array Handle.

–Allows for efficient in-situ integration

–Allows for reduced data transfer

Control Environment Execution Environment Transfer

Control Environment Execution Environment

Page 48: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

Page 49: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

Page 50: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

Page 51: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

Page 52: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

Page 53: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

Page 54: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

Page 55: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } }; Execution Environment

Control Environment vtkm::cont::ArrayHandle<vtkm::Float32> inputHandle = vtkm::cont::make_ArrayHandle(input); vtkm::cont::ArrayHandle<vtkm::Float32> sineResult; vtkm::worklet::DispatcherMapField<Sine> dispatcher; dispatcher.Invoke(inputHandle, sineResult);

Page 56: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

vtkm::cont::ArrayHandle<vtkm::Float32> inputHandle = vtkm::cont::make_ArrayHandle(input); vtkm::cont::ArrayHandle<vtkm::Float32> sineResult; vtkm::worklet::DispatcherMapField<Sine> dispatcher; dispatcher.Invoke(inputHandle, sineResult);

Execution Environment

Control Environment

Page 57: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

vtkm::cont::ArrayHandle<vtkm::Float32> inputHandle = vtkm::cont::make_ArrayHandle(input); vtkm::cont::ArrayHandle<vtkm::Float32> sineResult; vtkm::worklet::DispatcherMapField<Sine> dispatcher; dispatcher.Invoke(inputHandle, sineResult);

Execution Environment

Control Environment

Page 58: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

vtkm::cont::ArrayHandle<vtkm::Float32> inputHandle = vtkm::cont::make_ArrayHandle(input); vtkm::cont::ArrayHandle<vtkm::Float32> sineResult; vtkm::worklet::DispatcherMapField<Sine> dispatcher; dispatcher.Invoke(inputHandle, sineResult);

Execution Environment

Control Environment

Page 59: In-Situ Data Analysis and Visualization: ParaView

struct Sine: public vtkm::worklet::WorkletMapField { typedef void ControlSignature(FieldIn<>, FieldOut<>); typedef _2 ExecutionSignature(_1); template<typename T> VTKM_EXEC_EXPORT T operator()(T x) const { return vtkm::math::Sin(x); } };

Page 60: In-Situ Data Analysis and Visualization: ParaView

Dispatcher Invoke Operations • Convert polymorphic types to static types

• Check types

• Dispatcher-specific operations

– Find domain length

– Build index arrays

• Transport data from control to execution

• Run worklet invoke kernel

• Fetch thread-specific data

• Invoke worklet

• Push thread-specific data

DispatcherMapField<Sine> dispatcher; dispatcher.Invoke(inputHandle, sineResult);

Page 61: In-Situ Data Analysis and Visualization: ParaView

struct ImagToPolar: public vtkm::worklet::WorkletMapField { typedef void ControlSignature( FieldIn<vtkm::TypeListTagScalar>, FieldIn<vtkm::TypeListTagScalar>, FieldOut<vtkm::TypeListTagScalar>, FieldOut<vtkm::TypeListTagScalar>); typedef void ExecutionSignature(_1, _2, _3, _4); template<typename RealType, typename ImaginaryType, typename MagnitudeType, typename PhaseType> VTKM_EXEC_EXPORT void operator()(RealType real, ImaginaryType imag, MagnitudeType &magnitude, PhaseType &phase) const { magnitude = vtkm::math::Sqrt(real*real + imag*imag); phase = vtkm::math::ATan2(imaginary, real); } };

Page 62: In-Situ Data Analysis and Visualization: ParaView

What We Have So Far

• Features

– Statically and Dynamically Typed Arrays

– Device Interface (Serial, Cuda, TBB under

development)

– Basic Worklet and Dispatcher

Page 63: In-Situ Data Analysis and Visualization: ParaView

What We Have So Far

• Compiles with – gcc (4.8+), clang, msvc (2010+), icc, and pgi

• User Guide

• Ready for larger collaboration

Page 64: In-Situ Data Analysis and Visualization: ParaView

Thank You!

Marcus D. Hanwell

[email protected]

• @mhanwell

• +MarcusHanwell

Robert Maynard

[email protected]

• @robertjmaynard

64

Please complete the Presenter Evaluation sent to you by email or through the GTC Mobile App. Your feedback is important!

Checkout out Kitware @ www.kitware.com and ParaView @ www.paraview.org