Outline Data flow networks 101 (3 slides) VTK (20 slides)

Slides:



Advertisements
Similar presentations
National Alliance for Medical Image Computing Slicer3 Architecture.
Advertisements

OpenCV Introduction Hang Xiao Oct 26, History  1999 Jan : lanched by Intel, real time machine vision library for UI, optimized code for intel 
EUFORIA FP7-INFRASTRUCTURES , Grant JRA4 Overview and plans M. Haefele, E. Sonnendrücker Euforia kick-off meeting 22 January 2008 Gothenburg.
1 Slides presented by Hank Childs at the VACET/SDM workshop at the SDM Center All-Hands Meeting. November 26, 2007 Snoqualmie, Wa Work performed under.
Yingcai Xiao Chapter 6 Fundamental Algorithms. Types of Visualization Transformation Types 1.Data (Attribute Transformation) 2.Topology (Topological Transformation)
Direct Volume Rendering. What is volume rendering? Accumulate information along 1 dimension line through volume.
ParaView Tutorial Greg Johnson, Karla Vega. Before we begin… Make sure you have ParaView installed so you can follow along in the lab section –
Hank Childs, University of Oregon November 1 st, 2013 Overview of VTK.
Reference: Message Passing Fundamentals.
Slide 1 Visualization of scientific data under Linux - Techniques and data wrangling Mike Walterman, Manager of Graphics Programming, Scientific Computing.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
CompuNet Grid Computing Milena Natanov Keren Kotlovsky Project Supervisor: Zvika Berkovich Lab Chief Engineer: Dr. Ilana David Spring, /
Outline Data flow networks 101 (3 slides) VTK (20 slides) Contracts (10 slides) An architecture for big data (3 slides)
1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design.
Visualization Knowledge (VisKo): Leveraging the Semantic Web to Support VisualizationVisKo Nicholas Del Rio CyberShARE Center University of Texas at El.
Getting Started with ITK in Python Language
Leicester, February 24, 2005 VisIVO, a VO-Enabled tool for Scientific Visualization and Data Analysis. VO-TECH Project. Stage01 Ugo Becciani INAF – Astrophysical.
Welcome to the UPPMAX Visualization Workshop 21,22/ Day one  UPPMAX  Introduction to Visualization and Python  Read your own data using Python.
Zubanov Alexei, 2006 Aug 07 – Sep 28 QtROOT package extension with Coin3D lib.
Visualization Services Group Steve Cutchin – Manager Amit Chourasia – Visualization Scientist Alex DeCastro – Visualization.
VTK: The Visualization Toolkit Part I: Overview and object models March 28, 2001.
VisIt: a visualization tool for large turbulence simulations  Outline Success stories with turbulent simulations Overview of VisIt project 1 Hank Childs.
Edinburgh, January 25, 2005 VisIVO, a VO-Enabled tool for Scientific Visualization and Data Analysis: Overview and Demo 1. Ugo Becciani (OACt): Introduction.
Chapter 34 Java Technology for Active Web Documents methods used to provide continuous Web updates to browser – Server push – Active documents.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
CHAPTER TEN AUTHORING.
AVS/Express and VisIt Training NERSC Users meeting June PPPL Cristina Siegerist NERSC/LBNL Visualization group June 13, 2006.
VTK. VTK Online Resources On-line Resources VTK –Manual: –Examples:
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Memory: Relocation.
NA-MIC National Alliance for Medical Image Computing ParaView Server Manager Berk Geveci Andy Cedilnik.
NA-MIC, 2008 June Workshop, IHK Akademie Westerham VTK
VTK: The Visualization Toolkit Qaiser Chaudry Georgia Institute of Technology June 28, 2006.
Visualization Knowledge Query Language (VKQL) Workshop Nicholas Del Rio University of Texas at El Paso Computer Science.
Visualization with ParaView. Before we begin… Make sure you have ParaView 3.14 installed so you can follow along in the lab section –
1 27B element Rayleigh-Taylor Instability (MIRANDA, BG/L) VisIt: a visualization tool for large turbulence simulations Large data requires special techniques.
ECG Simulation NCRR Overview Technology for the ECG Simulation project CardioWave BioPSE project background Tools developed to date Tools for the next.
1 CW11 Visualizing ACE3P Results in ParaView Greg Schussman Menlo Park, CA October 10, 2011.
Understanding your FLOW-3D simulations better with EnSight June 2012.
Cooperative Caching in Wireless P2P Networks: Design, Implementation And Evaluation.
High school workshop: Scientific visualization ● Universitat de Barcelona ● January 2007.
Hank Childs, University of Oregon Oct. 28th, 2016 CIS 441/541: Introduction to Computer Graphics Lecture 16: textures.
Applications Active Web Documents Active Web Documents.
VisIt Project Overview
Kai Li, Allen D. Malony, Sameer Shende, Robert Bell
Visual Basic 2010 How to Program
Netscape Application Server
Computer Graphics.
Visualization Shading
SOFTWARE DESIGN AND ARCHITECTURE
VisIt Libsim Update DOE Computer Graphics Forum 2012 Brad Whitlock
Pipeline Execution Environment
Parallel Programming By J. H. Wang May 2, 2017.
In-situ Visualization using VisIt
Part 3 Design What does design mean in different fields?
Introduction to Operating System (OS)
3D Graphics Rendering PPT By Ricardo Veguilla.
University of Technology
Design III Chapter 13 9/20/2018 Crowley OS Chap. 13.
Princess Nourah bint Abdulrahman University
What's New in eCognition 9
Software Engineering with Reusable Components
Analysis models and design models
SAMANVITHA RAMAYANAM 18TH FEBRUARY 2010 CPE 691
Software Architecture
Model, View, Controller design pattern
Parallel Programming in C with MPI and OpenMP
What's New in eCognition 9
What's New in eCognition 9
SeeSoft A Visualization Tool..
L. Glimcher, R. Jin, G. Agrawal Presented by: Leo Glimcher
Presentation transcript:

Outline Data flow networks 101 (3 slides) VTK (20 slides) Contracts (10 slides) An architecture for big data (3 slides)

Outline Data flow networks 101 (3 slides) VTK (20 slides) Contracts (10 slides) An architecture for big data (3 slides)

Data flow networks 101 Work is performed by a pipeline File Reader (Source) Slice Filter Contour Filter Renderer (Sink) Work is performed by a pipeline A pipeline consists of data objects and components (sources, filters, and sinks) Update Execute Pipeline execution begins with a “pull”, which starts Update phase Data flows from component to component during the Execute phase

Data flow networks: plusses Interoperability / Flexibility Extensible

Data flow networks: minuses Memory efficiency Performance efficiency Easy to add new algorithms, but hard to extend the data model

Outline Data flow networks 101 (3 slides) VTK (20 slides) Contracts (10 slides) An architecture for big data (3 slides)

Visualization with VTK Content from: Erik Vidholm, Univ of Uppsula, Sweden David Gobbi, Robarts Research Institute, London, Ontario, Canada

Outline What is VTK? What can it be used for? How do I actually use it?

VTK – The Visualization ToolKit Open source, freely available software for 3D computer graphics, image processing, and visualization Managed by Kitware Inc. Use C++, Tcl/Tk, Python, Java

True visualization system Visualization techniques for visualizing Scalar fields Vector fields Tensor fields Polygon reduction Mesh smoothing Image processing Your own algorithms

Additional features Parallel support (message passing, multithreading) Stereo support Integrates easily with Motif, Qt, Tcl/Tk, Python/Tk, X11, Windows, ... Event handling 3D widgets

3D graphics Surface rendering Volume rendering Lights and cameras Ray casting Texture mapping (2D) Volume pro support Lights and cameras Textures Save render window to .png, .jpg, ... (useful for movie creation)

Objects Data objects Process objects Next slide Source objects (vtkReader, vtkSphereSource) Filter objects (vtkContourFilter) Mapper objects (vtkPolyDataMapper)

Data model Cell Data & Point Data

Visualization continued Scalar algorithms Iso-contouring Color mapping Vector algorithms Hedgehogs Streamlines / streamtubes Tensor algorithms Tensor ellipsoids

The visualization pipeline DATA Visualization algorithms FILTER MAPPING DISPLAY Interactive feedback

Imaging Supports streaming => huge datasets vtkImageToImageFilter Diffusion High-pass / Low-pass (Fourier) Convolution Gradient (magnitude) Distance map Morphology Skeletons

Summary + Free and open source Create graphics/visualization applications fairly fast Object oriented - easy to derive new classes Build applications using "interpretive" languages Tcl, Python, and Java Many (state of the art) algorithms Heavily tested in real-world applications Large user base provides decent support Commercial support and consulting available

Summary - Not a super-fast graphics engine due to portability and C++ dynamic binding – you need a decent workstation Very large class hierarchy => learning threshold might be steep Many subtleties in usage Pipeline execution model Memory management

Example – Vector field visualization vtkStructuredGridReader reader reader SetFileName "office.binary.vtk“ # Create source for streamtubes vtkPointSource seeds seeds SetRadius 0.15 eval seeds SetCenter 0.1 2.1 0.5 seeds SetNumberOfPoints 6 vtkRungeKutta4 integ vtkStreamLine streamer streamer SetInput [reader GetOutput] streamer SetSource [seeds GetOutput] streamer SetMaximumPropagationTime 500 streamer SetStepLength 0.5 streamer SetIntegrationStepLength 0.05 streamer SetIntegrationDirectionToIntegrateBothDirections streamer SetIntegrator integ …

The visualization pipeline - example vtkStructuredPointsReader ”hydrogen.vtk” vtkPolyDataMapper vtkActor vtkMarchingCubes vtkRenderer vtkRenderWindow vtkRenderWindowInteractor

Python example: visualization hydrogen molecule # File: isosurface.py import vtk # image reader reader = vtk.vtkStructuredPointsReader() reader.SetFileName("hydrogen.vtk") reader.Update() # bounding box outline = vtk.vtkOutlineFilter() outline.SetInput( reader.GetOutput() ) outlineMapper = vtk.vtkPolyDataMapper() outlineMapper.SetInput( outline.GetOutput() ) outlineActor = vtk.vtkActor() outlineActor.SetMapper( outlineMapper ) outlineActor.GetProperty().SetColor(0.0,0.0,1.0) Must call update to read! Pipeline connections

Example continued # iso surface isosurface = vtk.vtkContourFilter() isosurface.SetInput( reader.GetOutput() ) isosurface.SetValue( 0, .2 ) isosurfaceMapper = vtk.vtkPolyDataMapper() isosurfaceMapper.SetInput( isosurface.GetOutput() ) isosurfaceMapper.SetColorModeToMapScalars() isosurfaceActor = vtk.vtkActor() isosurfaceActor.SetMapper( isosurfaceMapper ) # slice plane plane = vtk.vtkImageDataGeometryFilter() plane.SetInput( reader.GetOutput() ) planeMapper = vtk.vtkPolyDataMapper() planeMapper.SetInput( plane.GetOutput() ) planeActor = vtk.vtkActor() planeActor.SetMapper( planeMapper ) vtkContourFilter chooses the appropriate method for the data set

Example continued Creates a legend from the data and a lookup table # a colorbar scalarBar = vtk.vtkScalarBarActor() scalarBar.SetTitle("Iso value") # renderer and render window ren = vtk.vtkRenderer() ren.SetBackground(.8, .8, .8) renWin = vtk.vtkRenderWindow() renWin.SetSize( 400, 400 ) renWin.AddRenderer( ren )

Example continued The RenderWindowInteractor contains functions for mouse/keyboard interaction # render window interactor iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow( renWin ) # add the actors ren.AddActor( outlineActor ) ren.AddActor( isosurfaceActor ) ren.AddActor( planeActor ) ren.AddActor( scalarBar ) # this causes the pipeline to ”execute” renWin.Render() # initialize and start the interactor iren.Initialize() iren.Start() The renWin.Render() calls Update() on the renderer, which calls Update() for all its actors, which calls…

The VTK file format - Many modules to write VTK files # vtk DataFile Version 2.0 Hydrogen orbital ASCII DATASET STRUCTURED_POINTS DIMENSIONS 64 64 64 ORIGIN 32.5 32.5 32.5 SPACING 1.0 1.0 1.0 POINT_DATA 262144 SCALARS probability float LOOKUP_TABLE default 0.0 0.0 0.01 0.01 …..

VTK and C++ Build with CMake and your favorite compiler CMake generates makefiles or project files for your environment Use the resulting file(s) to build your executable With C++ you have full control and can derive own classes, but you need to write many lines of code…

VTK resources ww.vtk.org ww.kitware.com Download (source and binaries) Documentation Mailing lists Links FAQ, Search ww.kitware.com VTK Textbook VTK User’s guide Mastering CMake

Outline Data flow networks 101 (3 slides) VTK (20 slides) Contracts (10 slides) An architecture for big data (3 slides)

Contracts are an extension to the standard data flow network design. Data Flow Networks “101”: Work is performed by a pipeline A pipeline consists of data objects and components (sources, filters, and sinks) File Reader (Source) Slice Filter Contour Filter Renderer (Sink) Exec V2 V1 Pipeline execution begins with a “pull”, which starts Update phase Update Execute V0 Data flows from component to component during the Execute phase Contracts are coupled with the Update phase Extension:

Initial observations about contracts. A contract is simply a data structure The members of the data structure reflect the optimizations Optimizations are adaptively applied based on the final contract Each component describes its impact on the pipeline Allows for effective management of hundreds of components Allows for new, unforeseen components to be added Combining contracts with the Update phase seamlessly integrated into data flow networks every component has a chance to modify the contract

Why are contracts important? They allow for optimizations to be utilized in a richly featured system Is this important? Yes. Let’s look at the impact of these optimizations. (If we believe they are important, then contracts are important.)

Operating on Optimal Subset of Data … Slice Filter V(I) V(I+1) Get meta-data Determine domains that intersect slice Restrict list of domains to process in V(I+1) Filter (base class) (inheritance) Slice Filter Hundreds of others Contract * SliceFilter::ModifyContract (Contract *V(I)) { ... return V(I+1); }

Operating on Optimal Subset of Data … Slice Filter V(I) V(I+1) Get meta-data Determine domains that intersect slice Restrict list of domains to process in V(I+1) D3 D2 D1 D0

The contract-based system provides high flexibility for this optimization. … Slice Filter V(J) V(J+1) Contour Filter V(I+1) V(I) Multiple filters can use the same optimizations … Spherical Slice Filter V(I) V(I+1) A new, plugin filter can use this optimization without any modification to VisIt proper

We studied performance using a simulation of a Rayleigh-Taylor Instability. RTI: heavy and light fluids mixing 1.5B elements 729 domains LLNL’s thunder Top 500’s #7 (We only got a little bit of it) 1.4GHz Intel Itanium2 The techniques shown are not new The performance increase motivates the importance of optimizations This, in turn, motivates the importance of contracts

Processing only the necessary domains is a lucrative optimization. Algorithm Processors Without Contracts With Contracts Speedup Contouring (early) 32 41.1s 5.8s 7.1X Contouring (late) 185.0s 97.2s 1.9X Slicing 25.3s 3.2s 7.9X

What is the right technique for distributing domains across processors? Two ways: Statically: make assignments before Execute phase Dynamically: adaptively during Execute phase Performance: Static: good chance of load imbalance As fast as slowest processor Dynamic: adaptively balancing load Obtains near optimal parallel efficiency Communication: Static: collective communication okay Dynamic: no collective communication

Contracts steer what load balancing technique we use. What load balancing technique should we use? If we need collective communication  static Otherwise, we want performance  dynamic Contracts enable this During Update phase: Every filter can modify the contract to state whether or not it needs collective communication Before Execute phase: Executive examines contract and decides which load balancing technique to use.

Employing dynamic load balancing is a lucrative optimization. Algorithm* Processors Static Load Balancing Dynamic Load Balancing Speedup Slicing 32 3.2s 4.0s 0.8X Contouring 97.2s 65.1s 1.5X Thresholding 64 181.3s 64.1s 2.8X Clipping 59.0s 30.7s 1.9X * = All of these operations have no collective communication

Artifacts occur along the boundaries of domains. Looking at external faces Faces external to a domain can be internal to the data set  many extra, unneeded faces  wrong picture with transparency Solution: mark unwanted faces as “ghost”

Artifacts occur along the boundaries of domains. Interpolation Inconsistent values at nodes along boundary  broken contour surfaces Solution: make redundant layer of “ghost” elements

Ghost data fixes artifacts along domain boundaries. VisIt can generate ghost data on the fly Through contracts, VisIt determines necessary type of ghost data There are different costs for ghost data: Ghost faces: memory Ghost elements: memory, collective communication We always get the right picture, and we do it with the minimum cost

Contracts are a simple idea that have a large impact. Name Type Default Value domains vector<bool> all true hasColl- Commun. bool false ghostType enum {None, Face, Element} None much more… … Contracts: Just a data structure Describe what impact a component has on the pipeline Contracts enable us to avoid the following “dumb” (conservative) strategies: Read all data Always assume collective communication Always create ghost elements

Outline Data flow networks 101 (3 slides) VTK (20 slides) Contracts (10 slides) An architecture for big data (3 slides)

VisIt employs a parallelized client-server architecture. remote machine localhost – Linux, Windows, Mac Graphics Hardware User data Parallel vis resources Client-server observations: Good for remote visualization Leverages available resources Scales well No need to move data Additional design considerations: Plugins Multiple UIs: GUI (Qt), CLI (Python), more… Third party libraries: VTK, Qt, Python, Mesa, +I/O libs

Parallelization covers data input, data processing, and rendering. Identical data flow networks on each processor. Networks differentiated by portion of data they operate on. “Scattered/gather” No distribution (i.e. scatter), because scatter is done with choice of what data to read. Gather: done when rendering Parallel Simulation Code P0 P1 P3 P2 P1 P2 P3 P0 I/O Data Input Parallelized Server Proc 0 Proc 1 Proc 2 Data Processing Rendering