23
1 ParaView ParaView Current Architecture Current Architecture and History and History Issues with the Issues with the Current Design Current Design

1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

Embed Size (px)

Citation preview

Page 1: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

11

ParaViewParaView

Current Architecture and Current Architecture and HistoryHistory

Issues with the Current Issues with the Current DesignDesign

Page 2: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

22

ParaView Project GoalsParaView Project Goals

Develop an open-source, multi-Develop an open-source, multi-platform visualization applicationplatform visualization application

Support distributed computation Support distributed computation models to process large datasetsmodels to process large datasets

Create an open, flexible and Create an open, flexible and intuitive user interfaceintuitive user interface

Develop an extensible architecture Develop an extensible architecture based on open standardsbased on open standards

Page 3: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

33

ParaView ArchitectureParaView Architecture

Parallel VTK as IO, processing and Parallel VTK as IO, processing and rendering enginerendering engine

MPI and TCP/IP as network MPI and TCP/IP as network communicationcommunication

Tcl as scripting languageTcl as scripting language KW widgets as GUIKW widgets as GUI

Page 4: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

44

ParaView ArchitectureParaView Architecture

XML configurable, extensible GUIXML configurable, extensible GUI User extensible, open source User extensible, open source

engine (VTK)engine (VTK) Tool for end-users as well as Tool for end-users as well as

developers who want to deploy developers who want to deploy algorithmsalgorithms

Page 5: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

55

Evolution of Evolution of ArchitectureArchitecture Old architectureOld architecture

MPI

On accept:vtkSphereSource sphere0sphere0 SetPhiResolution 256

On reset:this->Script(“sphere0 GetResolution”);int val = atoi(this->SetValue(this->GetLastResult));

vtkSphereSource sphere0sphere0 SetPhiResolution 256

vtkSphereSource sphere0sphere0 SetPhiResolution 256

Page 6: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

66

Evolution of Evolution of ArchitectureArchitecture Added client/server supportAdded client/server support

Server

Client

TCP/IP

MPI

Page 7: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

77

MotivationMotivation

Problems with old architectureProblems with old architecture– Tcl based communication:Tcl based communication:

String based. Imprecise and inefficient.String based. Imprecise and inefficient. Standard Tcl interpreter is not secure. Standard Tcl interpreter is not secure.

– Dummy pipeline on client:Dummy pipeline on client: VTK pipeline objects are not designed to only VTK pipeline objects are not designed to only

store state. Some objects misbehave when store state. Some objects misbehave when disconnected or empty.disconnected or empty.

Communication with server is still necessary to Communication with server is still necessary to obtain information about distributed data.obtain information about distributed data.

Client must be linked to all VTK + VTK Tcl libsClient must be linked to all VTK + VTK Tcl libs

Page 8: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

88

GoalsGoals

Binary communication with server Binary communication with server where possiblewhere possible

Replace empty pipeline on client with Replace empty pipeline on client with a proxy representationa proxy representation

Separation of pipeline management Separation of pipeline management from GUI to support multiple client from GUI to support multiple client typestypes

Provide default implementation of Provide default implementation of complicated, parallel pipeline and complicated, parallel pipeline and rendering architecture to make client rendering architecture to make client development easy and to reuse codedevelopment easy and to reuse code

Page 9: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

99

ParaView ArchitectureParaView Architecture

GUI

Client Manager

texttextData

Server

texttextRender Server

Server Manager

Server

Page 10: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

1010

ParaView ArchitectureParaView Architecture

Data/render server:Data/render server:– C++C++– Client/server wrappingClient/server wrapping– No direct accessNo direct access

Server manager:Server manager:– C++ APIC++ API– XML configurationXML configuration– Tcl, Python or Java scripting Tcl, Python or Java scripting

(optional)(optional)

Page 11: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

1111

ParaView ArchitectureParaView Architecture

Desktop Client:Desktop Client:– KWWidgets (Tcl/Tk and C++)KWWidgets (Tcl/Tk and C++)– Tcl scripting of GUITcl scripting of GUI– XML configuration of GUIXML configuration of GUI

Web Client:Web Client:– DHTML/JavaScriptDHTML/JavaScript– Server code uses PythonServer code uses Python

Page 12: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

1212

ServerManager DesignServerManager Design

Proxies – VTK objectsProxies – VTK objects– Example: SphereExample: Sphere

Properties – Attributes of VTK Properties – Attributes of VTK objectsobjects– Example: RadiusExample: Radius

Domains – Restrictions on valuesDomains – Restrictions on values– Example: Numbers greater than 0Example: Numbers greater than 0

Page 13: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

1313

Server Manager Server Manager DesignDesign

GUIWidget

Proxy Property Domains Client

Server Stream

CS Interpreter

VTK Classes

Page 14: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

1414

SM: ProxiesSM: Proxies

Based on proxy design patternBased on proxy design pattern Proxies are responsible ofProxies are responsible of

– Creating server-side VTK objectsCreating server-side VTK objects– Maintaining references to server-Maintaining references to server-

side VTK objects using idsside VTK objects using ids– Maintaining a copy of the state of Maintaining a copy of the state of

the server-side objects using the server-side objects using propertiesproperties

Page 15: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

1515

SM: PropertiesSM: Properties

Maintain the state of the Maintain the state of the attributes of the server-side attributes of the server-side objectsobjects

Each property has a set of values Each property has a set of values and one or more commands to and one or more commands to set or get themset or get them

Regular and information Regular and information propertiesproperties

Page 16: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

1616

SM: PropertiesSM: Properties

GUI WidgetVTK Class

Proxy

Property

Info Property

Page 17: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

1717

GUI Design – Main GUI Design – Main ClassesClasses

vtkPVApplicationvtkPVApplication vtkPVWindow (main window)vtkPVWindow (main window) vtkPVRenderView (render vtkPVRenderView (render

window, interaction)window, interaction) vtkPVSource (source/filter proxy)vtkPVSource (source/filter proxy) vtkPVDisplayGUI (display proxy)vtkPVDisplayGUI (display proxy) vtkPVWidget (property)vtkPVWidget (property)

Page 18: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

1818

GUI ArchitectureGUI Architecture

vtkPVSource and sub-classes vtkPVSource and sub-classes implementimplement::– Accept() : push GUI values to server Accept() : push GUI values to server

manager then push server manager values manager then push server manager values to serverto server

– Reset() : update the GUI from the server Reset() : update the GUI from the server managermanager

vtkPVWidget and sub-classes vtkPVWidget and sub-classes follow the same pattern with SM follow the same pattern with SM properties. properties.

Page 19: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

1919

GUI ArchitectureGUI Architecture

PVSources and PVWidgets are PVSources and PVWidgets are created on the fly based on created on the fly based on GUI XML descriptionGUI XML description

GUI events are stored in trace GUI events are stored in trace files.files.

GUI state is stored in state GUI state is stored in state files.files.

Page 20: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

2020

GUI Design IssuesGUI Design Issues

Incomplete implementation of MVC Incomplete implementation of MVC pattern:pattern:– GUI (view) can be only partially updated GUI (view) can be only partially updated

from SM (model) from SM (model) – PVSource can be updated using Reset()PVSource can be updated using Reset()– Other pages cannot be updated from SMOther pages cannot be updated from SM– GUI pages corresponding to proxy GUI pages corresponding to proxy

should exist to be updatedshould exist to be updated

Page 21: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

2121

GUI Design IssuesGUI Design Issues

Inconsistent access of SM proxies:Inconsistent access of SM proxies:– PVSource and PVWidgets use PVSource and PVWidgets use

Accept()/Reset()Accept()/Reset()– PVDisplayGUI and other pages push PVDisplayGUI and other pages push

values immediatelyvalues immediately

Page 22: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

2222

GUI Design IssuesGUI Design Issues

Rigid GUI designRigid GUI design– Access to different types of proxies Access to different types of proxies

is different and hard-codedis different and hard-coded– Proxy/property interface is simpleProxy/property interface is simple– GUI elements to access any type of GUI elements to access any type of

proxy should be uniform, simple and proxy should be uniform, simple and XML configurableXML configurable

Page 23: 1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design

2323

GUI Design IssuesGUI Design Issues

Code duplicationCode duplication– Many sub-classes of vtkPVWidget Many sub-classes of vtkPVWidget

that duplicate functionality of that duplicate functionality of KWWidgetsKWWidgets

– Trace, state and batch follow Trace, state and batch follow separate paths although they separate paths although they perform very similar functionsperform very similar functions