Beyond the Visualization Pipeline Werner Benger 1, Marcel Ritter, Georg Ritter, Wolfram Schoor 1 Scientific Visualization Group Center for Computation.

Slides:



Advertisements
Similar presentations
Multiple Processor Systems
Advertisements

Better Interactive Programs
P3- Represent how data flows around a computer system
Architecture-dependent optimizations Functional units, delay slots and dependency analysis.
Chapter 7: User-Defined Functions II
Chapter 7 User-Defined Methods. Chapter Objectives  Understand how methods are used in Java programming  Learn about standard (predefined) methods and.
ECE 103 Engineering Programming Chapter 11 One Minute Synopsis Herbert G. Mayer, PSU CS Status 7/1/2014.
Spark: Cluster Computing with Working Sets
CS 326 Programming Languages, Concepts and Implementation Instructor: Mircea Nicolescu Lecture 18.
Multiple Processor Systems Chapter Multiprocessors 8.2 Multicomputers 8.3 Distributed systems.
Slide 1 Visualization of scientific data under Linux - Techniques and data wrangling Mike Walterman, Manager of Graphics Programming, Scientific Computing.
CSE351/ IT351 Modeling And Simulation Choosing a Mesh Model Dr. Jim Holten.
CS 104 Introduction to Computer Science and Graphics Problems
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 Better Interactive Programs Ed Angel Professor of Computer Science, Electrical and Computer.
Run time vs. Compile time
Chapter 1 and 2 Computer System and Operating System Overview
Chapter 1 and 2 Computer System and Operating System Overview
Basic Computer Organization CH-4 Richard Gomez 6/14/01 Computer Science Quote: John Von Neumann If people do not believe that mathematics is simple, it.
Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access memory.
I/O Tanenbaum, ch. 5 p. 329 – 427 Silberschatz, ch. 13 p
V-1 University of Washington Computer Programming I File Input/Output © 2000 UW CSE.
Chapter 3.1:Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access.
Input/OUTPUT [I/O Module structure].
Multiple Processor Systems. Multiprocessor Systems Continuous need for faster and powerful computers –shared memory model ( access nsec) –message passing.
Chapter 3.5 Memory and I/O Systems. 2 Memory Management Memory problems are one of the leading causes of bugs in programs (60-80%) MUCH worse in languages.
Texture Memory -in CUDA Perspective TEXTURE MEMORY IN - IN CUDA PERSPECTIVE VINAY MANCHIRAJU.
Computing & Information Sciences Kansas State University Lecture 20 of 42CIS 636/736: (Introduction to) Computer Graphics Lecture 21 of 42 William H. Hsu.
Computer Graphics The Rendering Pipeline - Review CO2409 Computer Graphics Week 15.
1 Better Interactive Programs. 2 Objectives Learn to build more sophisticated interactive programs using ­Picking Select objects from the display Three.
Multiple Processor Systems. Multiprocessor Systems Continuous need for faster computers –shared memory model ( access nsec) –message passing multiprocessor.
1 Real-time visualization of large detailed volumes on GPU Cyril Crassin, Fabrice Neyret, Sylvain Lefebvre INRIA Rhône-Alpes / Grenoble Universities Interactive.
Operating Systems David Goldschmidt, Ph.D. Computer Science The College of Saint Rose CIS 432.
MEMORY ORGANIZTION & ADDRESSING Presented by: Bshara Choufany.
Pipes & Filters Architecture Pattern Source: Pattern-Oriented Software Architecture, Vol. 1, Buschmann, et al.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
GEON2 and OpenEarth Framework (OEF) Bradley Wallet School of Geology and Geophysics, University of Oklahoma
Interrupt driven I/O. MIPS RISC Exception Mechanism The processor operates in The processor operates in user mode user mode kernel mode kernel mode Access.
Program 2 due 02/01  Be sure to document your program  program level doc  your name  what the program does  each function  describe the arguments.
08 - StructuralCSC4071 Structural Patterns concerned with how classes and objects are composed to form larger structures –Adapter interface converter Bridge.
Structural Patterns1 Nour El Kadri SEG 3202 Software Design and Architecture Notes based on U of T Design Patterns class.
CSE 381 – Advanced Game Programming GLSL. Rendering Revisited.
Werner Benger 1 and Georg Ritter 3 and Simon Su 4 and Dimitris E. Nikitopoulos 2 and Eamonn Walker 2 and Sumanta Acharya 2 and Somnath Roy 2 and Farid.
CE Operating Systems Lecture 2 Low level hardware support for operating systems.
Biomedical Informatics Research Network Pipelines & Processing: Tools & Toolkits David Rex, John Moreland October 9, nd Annual All Hands Meeting.
Visualization with ParaView. Before we begin… Make sure you have ParaView 3.14 installed so you can follow along in the lab section –
CE Operating Systems Lecture 2 Low level hardware support for operating systems.
Supported in part by the National Science Foundation under Grant No. HRD Any opinions, findings, and conclusions or recommendations expressed.
Interrupt driven I/O Computer Organization and Assembly Language: Module 12.
What is GIS? “A powerful set of tools for collecting, storing, retrieving, transforming and displaying spatial data”
CHAPTER 51 LINKED LISTS. Introduction link list is a linear array collection of data elements called nodes, where the linear order is given by means of.
DYNAMIC MEMORY ALLOCATION. Disadvantages of ARRAYS MEMORY ALLOCATION OF ARRAY IS STATIC: Less resource utilization. For example: If the maximum elements.
Chapter 7 User-Defined Methods.
Process Management Process Concept Why only the global variables?
Visualization Shading
Better Interactive Programs
So far we have covered … Basic visualization algorithms
The Graphics Rendering Pipeline
Higher-Level Testing and Integration Testing
Chapter VI OpenGL ES and Shader
Module 2: Computer-System Structures
The Von Neumann Model Basic components Instruction processing
Main Memory Background Swapping Contiguous Allocation Paging
Operating Systems Chapter 5: Input/Output Management
Multiple Processor Systems
Better Interactive Programs
Outline Module 1 and 2 dealt with processes, scheduling and synchronization Next two modules will deal with memory and storage Processes require data to.
Module 2: Computer-System Structures
CIS 441/541: Introduction to Computer Graphics Lecture 15: shaders
Module 2: Computer-System Structures
Presentation transcript:

Beyond the Visualization Pipeline Werner Benger 1, Marcel Ritter, Georg Ritter, Wolfram Schoor 1 Scientific Visualization Group Center for Computation & Technology at Louisiana State University

 The Concept and Limitations of the Viz Pipeline  Generalization of the Visualization Cascade  Implementation Concepts within VISH

 A concept of how visualization works Haber & McNabb, 1990 Data Flow: Data Source  Data Filter  Data Sink

 Example: ppmplus toolkit cat image.jpg | jpegtopnm | pnmscale -w 100 | cjpeg -quality 40 | display  Data flows from source to display  Each step is parametrized  More complex application leads to graphs  Many sources (input data)  Filters may be interconnected  Usually one sink (display)

 Represents data flow  Allows visual programming (AVS, Amira, OpenDX, Iris Explorer, Vish) Data Parameter Filter RendererFile Storage

 Data at the source is pushed downstream through filters to the data sink File reading, network transfer, computation, … Image Rendering

 AVS, Amira, … Data Parameter Filter RendererFile Storage

 Date sink requests run upstream through filters requesting data from the source source File reading, network transfer, computation, … Image Rendering

 OpenDX, VTK, Vish, … Data Parameter Filter RendererFile Storage

PUSH MODELPULL MODEL  Data are made available as soon as possible  Traverses viz pipeline after loading/creation  Filter modules have information about data available at early stage  Loads data even if not used  Data are made available as late as possible  Traverses viz pipeline at rendering time  Filter modules don’t know all about data until output is requested  Loads only data when used

 Pull model is convenient during interaction since all data information is available during setup of viz pipeline parameters  Easier in implementation since no upstream information flow (triggers)  Problematic for time-dependent large data which don’t fit into memory, because cannot load all data  Repeated operation and caching?

Traversing Time: Viz Pipeline needs to be traversed for each time step: Data T=0.0 Filter Renderer Data T=0.4 Filter Renderer Data T=0.8 Filter Renderer Data T=1.2 Filter Renderer

New time – new data – new traversal – entire pipeline re-computed Data T=0.0, 0.4, 0.8, 1.2 Filter Renderer Data Filter Renderer Data Filter Renderer Data Filter Renderer

New time – skip traversal if results already are available (result caching) Data T=0.0, 0.4, 0.8, 1.2 Filter Renderer Data Filter Renderer Data Filter Renderer Data Filter Renderer

Make the Viz Pipeline aware of Caching Data T=0.0, 0.4, 0.8, 1.2 Filter Renderer Data Filter Renderer Data Filter Renderer Data Filter Renderer

Enable Partial traversal of viz pipeline Data Filter Renderer Data Filter Renderer Data Filter Renderer

Enable Partial traversal of viz pipeline Data Filter Renderer Data Filter Renderer Data Filter Renderer

Which parameters full re-traversal of the viz pipeline? Data Filter Renderer Data Filter Renderer Data Filter Renderer Parameter

 Example: Isosurface of dynamic data Data Filter Renderer Data Filter Renderer Data Filter Renderer

 Time parameter could also be trigger parameter for new data computation  When to cache data? Will old cache data ever be reused?  Concept: Cache at data source location, not at node location.

Result caching at pipeline node possible, but not problematic, because parameter space is unknown Data Filter Renderer Data T=0.0, 0.4, 0.8 Isosurface T=0.0 Isosurface T=0.4 Isosurface T=0.8

Isosurface T=0.4Isosurface T=0.0  Cache data at location of data source  If data source vanishes, so vanishes cached results  Filter objects do not store any data, but are purely procedural Data Filter Renderer Data T=0.0, 0.4, 0.8

 Is a generic approach to handle a wide range of data types used for scientific visualization  Basic concept: Base space maps to fibers Base Space Fiber Space at each point of Base Space

Covers scalar,vector,tensor fields on unispatial grids, mesh refinement, multiblocks, particle systems, surfaces, … “garbage collection” management with I/O layers for sciviz data

 All data are stored in the “Bundle”  Viz nodes  do not store any data  pass references to data  purely procedural Data Filter Renderer

Data filtering is actually mapping objects within the fiber bundle Filter

 Bundle is a hierarchical system of slices  Intrinsic support for time in the Bundle  Time as a visualization parameter  Data “flow” is reduced to bundle access parameters Data Filter Renderer

 If time slice of source data is gone, then also all cached data is gone  Cache as much results as there are source data Data Filter Renderer

 Consists of 6 hierarchy levels 1.Field 2.Representation 3.Topological Skeleton 4.Grid object 5.(Time) Slice 6.Bundle

Bundle B; double time; Slice S = B[ time ]; string Fieldname; Grid G = S[ Fieldname ]; // Computation of an Isosurface: // Provide 3D data volume (uniform coordinates) // Name of a field given on this volume // A floating point value specifying the isosurface level Grid Compute( Grid DataVolume, string Fieldname, double Isolevel);

Grid VizNode::compute(Bundle&B, double time, string Gridname, string Fieldname, double Isolevel) { // Construct a unique name for the computational result string IsosurfaceName = Gridname + Fieldname + Isolevel; // Check whether result already exists for the given time Grid IsoSurface = B[ time ][ IsosurfaceName ]; if (!IsoSurface) { // No, thus need to retrieve the data volume Grid DataVolume = B[ time ][ Gridname ]; // and perform the actual computation IsoSurface = Compute( DataVolume, Fieldname, Isolevel); // finally store the resulting data in the bundle object B[ time ][ IsosurfaceName ] = IsoSurface; } return IsoSurface; }

Cache Final Data at the GPU - OpenGL:vertex buffer objects, display lists, textures) Data T=0.0, 0.4, 0.8, 1.2 Filter Renderer Data Filter Renderer Data Filter Renderer Data Filter Renderer

RAM  GPU Memory Data T=0.0, 0.4, 0.8, 1.2 Filter Renderer Data Filter Renderer Data Filter Renderer Data Filter Renderer

GPU requires own Cache Data Filter Renderer

Data Filter Renderer

Data Filter Renderer

Data Filter Renderer T=0.0 T=0.4 T= 0.8

 “Lives” within an OpenGL Context  Provides 3-dimensional indexing scheme to yield OpenGL ID’s:  Reference to data source (e.g. Fiber Bundle object)  Viz Node type information  Set of viz node parameters  Some parameters might require re-generation of OpenGL objects, others may allow reusage  Creates one ID per input set GLuint DisplayList = GLCache[ void* ] [ typeinfo ] [ set ];

void VizNode::render(GLCache Context, Grid G) { ValueSet VS; // assign cacheable variables into the value set … GLuint DisplayList = GLCache[ &G ] [ typeid(this) ] [ VS ]; if (!DisplayList) { DisplayList = glGenLists(1); glNewList(DisplayList, COMPILE_AND_EXEC); // do actual rendering of grid data G … glEndList(); GLCache[ Intercube ] [ typeid(this) ] [ VS ] = DisplayList; } else glCallList(DisplayList); }

 Code development management:   Available via SVN in source code for registered users at