Title: Distributed Computing with DAFFIE
1Distributed Computing with DAFFIE
- Glenn Bresnahan
- Boston University
- Scientific Computing and Visualization
- (http//scv.bu.edu/DAFFIE/Earlab-Oct02)
2Agenda
- DAFFIE overview
- DAFFIE live example
- DAFFIE distributed computing components
- Earlab leaky example
- Advanced display demonstrations (CGL)
3What is DAFFIE?
- Distributed Applications Framework For Immersive
Environments - System for easily creating distributed and shared
virtual environments - Authored by Glenn Bresnahan, Erik Brisson, Robert
Putnam
4Background Motivation
- Distributed/remote visualization (1992)
- CM to networked SGI workstations
- IWay (1995)
- NSF (vBNS) Connections Program (1996)
- Alliance computing and visualization grid (NSF
PACI) (1997) - ImmersaDesk
- Alliance 98
5Distributed Application Issues
- Analysis of application communication
requirements - Sensitivity to bandwidth
- Sensitivity to latency
- Testing and debugging
- Performance measurement and analysis
- Robustness
- Interoperability of software tools
- Management and scheduling of resources in
multiple administrative domains - Hardware bottlenecks
- Scalability of applications
- Security and privacy
6The VR Experience - Immersion
- Real-time, realistic 3D graphics
- Stereopsis
- Wide (complete) field of view
- Viewer based point-of-view
- Navigability
- Natural interaction modes
- Realistic audio
7Distributed VR
- Multi-person, multi-site shared virtual space
- Navigation
- Avatar representation
- Telephony
8DAFFIE Distributed VR Model
- Objective
- State consistency
- Minimize and/or hide latency
- Persistence
- Equipotent clients
- Network visible state
- Message (event) based
- Message classes
- Delivery service classes
- Globally sequenced, reliable delivery
- Message class subscription
9DAFFIE Components
- Messaging system (events)
- VR (upper layer) protocol
- Client applications (agents)
FOR MORE INFO...
http//scv.bu.edu/DAFFIE
10DAFFIE Application Clients
- Viewer
- Sound server
- Telephony generator
- Sound player
- Behavior agents
- Audio/video generators/processors
- Object generators/manipulators
11DAFFIE Environment
telephony
behavior agent
viewer
behavior agent
sound player
event server
behavior agent
telephony
sound player
viewer
12DAFFIE Viewer
- SGI Performer based
- Mono or stereo display
- Workstation, CAVE/Immersadesk, HMD
- Interactive and server (video) modes
- Six-degree of freedom head-tracking
- Six-degree of freedom navigation
- Texture-mapped streaming video
13DAFFIE Viewer
- Simple "script-based" world description
- Geometric models
- Animation
- Sounds
- Many 3D model formats
- Interaction by picking and/or proximity
- Local control of time-sensitive animation and
sound - Global update of avatar motion and object state
14DAFFIE Sound Server
- Telephony generator
- Digitize microphone input
- Broadcasts "packetized" audio stream
- Echo suppression
15DAFFIE Sound Server
- Sound player input
- Multiple sound sources
- Real-time audio streams (e.g. telephony)
- Prerecorded object sound files
- Audio attachment objects (3D location)
- Avatar position in virtual space
- Listener position in physical space
- Sound player output
- Multi-channel localized audio signals
16DAFFIE Agents
- Control object behavior
- Computational modules
- Proximity triggers
- Portals
- Device interfaces
- Kinematic sculptures, robotics
- Audio and video sourcing (e.g. camera)
- Audio and video processing
17DAFFIE Live Example
Telephony gen.
Telephony generator
Sound player
Sound player
Navigation client
event server
Renderer (viewer)
Render server
Video broadcaster
Proximity detector
Starfish
Video director
Chair
Video player
Skater
Butterfly
18DAFFIE Messaging System
- Application protocol
- Client services
- Client application library (API)
- Message router (event server)
19Message Routing
- Message router (event server)
- Multiple delivery service classes
- Globally sequenced, reliable delivery
- Client management
- Message subscription
- Multiprocessor, high bandwidth
- Hierarchical servers
- Proxy routers
- Fan-in/fan-out
- Tunneling
- Direct routing for P2P
20DAFFIE Message routing
client
client
client
client
proxy
client
event server
client
proxy
client
client
client
21Message Transports
- TCP/IP
- Single channel or striped
- Shared memory
- Myrinet
- IP Multicast
22Application Architecture
App thread
App thread
App thread
App thread
Services (timing, streaming, file sharing)
Event Messaging
Message Transport
23DAFFIE VR Protocol
- Compound objects
- Geometry
- Transformation
- Audio hook
- Video texture map
- Component ownership/object locking
- Request ownership
- Broadcast changes
- Release ownership
- Ownership transfer
- Real and effective ownership
24Defining Upper Layer Protocol
- Components
- Event type ID (define in a .h)
- Data layout (compile-time) (C struct in a .h)
- Data layout (run-time) (event_define)
- Needed for canonical byte ordering
- Types statically (compile time) defined
- Protocol compiler
25Messaging API
- Multithreaded, non-blocking
- Dynamic join and leave
- Point-to-point and broadcast messages
- Polled or callback (active messages)
- Subscription based receive
- Low level services
- Registration, timing, synchronization, query
26Service Discovery
- Client registration/identification
- Class (Viewer, Audio, Video, Agent)
- Species (video source, broadcaster, sink,
processor) - Instance (video stream-name)
- ID
- Hostname
- Client location services
- Service request/acknowledgement
27Client Services
- Streaming
- Data chunking
- Bandwidth management
- Dynamic tuning
- File sharing
- File servers
- Conditional upload/download
28Job Initiation Monitoring
- Rely on external authentication and job
initiation (e.g. ssh, Globus) - Launch scripts (ad hoc)
- cgl-video visible.bu.eduvgrab -compress
-process -vswirl -steps 9999999 -np 4
-vbroadcast .vdirect -object poolanim_grp - Agent initiation daemon
- Logging daemon
29Client Monitoring
- Dynamic clients
- JOIN, EXIT, IDENTIFICATION events
- Event server monitoring
- Heart beat
- Latency monitor
- Congestion control
- Statistic generation
- Client monitoring
- Process level monitoring
- Congestion management
- Remote process termination
30Leaky Example Headers
- typedef struct
- EVENT_HEAD head
- char filename200
- EVENT_GETPARAM
- typedef struct
- EVENT_HEAD head
- int logger, frame_size, sample_rate)
- EVENT_START
- typedef struct
- EVENT_HEAD head
- char msg1000
- EVENT_LOGINFO
31Leaky Example Headers
- typedef struct
- EVENT_HEAD head
- int client
- int size
- float pressure1
- EVENT_ADVANCE
32Leaky Example Headers
- define ET_START 1001
- define ET_GETPARAM 1002
- define ET_LOGINFO 1003
- define ET_ADVANCE 1004
- define ET_STOP 1005
- event_define(ET_START, start, 1, 3,
EVENT_DATA_INT) - event_define(ET_GETPARAM, getparam, 1, 200,
EVENT_DATA_CHAR) - event_define(ET_ADVANCE, advance, 3,
- 1, EVENT_DATA_INT,
- 1, EVENT_DATA_INT,
- 0, EVENT_DATA_FLOAT)
-
33Leaky Example Initialization
- id event_join(earlab.bu.edu, nc)
- printf(Joined as client id d of d\n, id, nc)
- event_register(integrator, leaky, 1.0)
- event_receive_type(ET_GETPARAM, ET_START,
ET_ADVANCE, ET_STOP) - event_callback(ET_START, do_start)
- event_callback(ET_GETPARAM, do_getparam)
-
34Leaky Example File Service
- GotParamFile 0
- efs_init()
- efs_chdir_receive(/tmp/earlab)
35Leaky Example GetParameters
- do_getparams(EVENT_GETPARM egp)
- efs_download_cond(egp-gtfilename,
- egp-gtfilename, xfer_done, 0)
- return(1)
-
- xfer_done(int reqid, int fsid, inr rc, char
file, int tag) - char path1000
- strcpy(path, /tmp/earlab/) strcat(path,
file) - GotParamFile 1
- Leaky_GetParameters(path)
- )
36Leaky Example Start
- do_start(EVENT_START est)
- Logger est-gtlogger
- while (!GotParamFile) event_sleep(100)
- Leaky_Start(egp-gtframe_size, egp-gtsample_rate)
-
- return(1)
-
37Leaky Example LogInfo
- void LogInfo(char msg)
- EVENT_LOGINFO einfo
- strcpy(einfo-gtmsg, msg)
- event_send(Logger, ET_LOGINFO, einfo,
sizeof(einfo)) -
38Leaky Example Advance
- do_advance(EVENT_ADVANCE ein)
- int bytes
- EVENT_ADVANCE eout
- bytes sizeof(EVENT_ADVANCE)
(ein-gtsize-1)sizeof(float) - eout (EVENT_ADVANCE ) malloc(bytes)
- Leaky_Advance(ein-gtpressure, eout-gtpressure)
- eout-gtclient event_clientid()
- eout-gtsize ein-gtsize
- event_send(ein-gtclient, ET_ADVANCE, eout,
bytes) - free(ein)
- return(1)
39Demonstrations
- Computer Graphics Lab (Room 203)
- ImmersaDesk
- Display Wall
40VR/AG Bridging
- Interconnect VR and AG spaces
- VR image display over AG
- Bridge audio in both directions
- Provide interactivity for AG participants
- AG navigation
- AG interaction tools
- Couple external a/v to both AG and VR
41VR/AG Bridging
- Boston
- Cyberarts
- Festival
- SC Global
FOR MORE INFO...
http//scv.bu.edu/hipart/GoGrid/
42VR/AG Bridging
AG node
view renderer
video bridge
navigation
Multicast
DAFFIE
audio renderer
AG audio
AG node
viewer
43Tiled Display Wall
- Benefits
- Low cost
- Scalable
- Multi-use
- Passive stereo
- Construction
- Linux cluster display driver
- Inexpensive LCD projectors
- Cheap polarizing filters
44Tiled Display Wall
- One Linux node for every 1 or 2 projectors
- One additional control or head node
- Two projectors per tile
- Linear polarizing filters
- Polarization-preserving projection screen
- Custom fabricated projector mounts
- 6 DoF adjusters
45Tiled Display Wall
- Prototype configuration
- 2x2 stereo array (8 projectors)
- 4 Linux display nodes one control node
- Fast Ethernet interconnect
- Final configuration
- 4x3 stereo array (2 x 9.4 Mpixel)
- 24 Linux display nodes one control node
- 52 Linux compute nodes
- Myrinet interconnect
46Tiled Display Wall
- Software
- WireGL/Chromium
- VTK
- Performer local synchronization
- Movie player (several)
47Tiled Display Wall
- Issues
- Software
- Alignment
- Custom projector mounts
- Computerized motor control
- Imaging transformation warps
- Autocalibration
- Edge blending
- Opto-mechanical
- Software
48Access Grid Overview
- Suite of commodity hardware and software
- Open source, Open protocol
- Multicast
- Tiled projection wall
- Approximately 90 installations world-wide (7
countries)
FOR MORE INFO...
http//www-fp.mcs.anl.gov/fl/accessgrid/ http//sc
v.bu.edu/accessgrid