38 High Performance Visualization
This particular “co-rendering” idea—where the server performs partial
rendering and the viewer finishes the rendering—was not new to Visapult.
Visapult’s architecture was targeted at creating a high performance, remote
and distributed visualization implementation of an idea called image-based
rendering assisted volume rendering described by Mueller et al. 1999 [20].
3.8.2 Visapult Architecture: The Send-Data Partition
Like all visualization applications, Visapult needs a source of data from
which to create images. Whereas modern, production-quality visualization
applications provide robust support for loading a number of well-defined file
formats, Visapult’s data source for all SC Bandwidth Challenge runs were
remotely located network data caches as opposed to files.
In the SC 2000 implementation, source data consisted of output from a
combustion modeling simulation. The data was stored on a Distributed Paral-
lel Storage System (DPSS), which can be thought of as a high-speed, parallel
remote block-oriented data cache [30]. In this implementation, the Visapult
back end invoked DPSS routines, similar in concept to POSIX fread calls
that, in turn, loaded blocks of raw scientific data in parallel, from a remote
source and relied on the underlying infrastructure, the DPSS client library, to
efficiently move data over the network.
In an effort to make an even better use of the underlying network, Shalf
and Bethel, 2003 [27], extended Visapult to make use of a UDP-based “con-
nectionless” protocol. They connected to a freely-running simulation, which
provided a data source. This change resulted in the ability for the Visapult
back end to achieve unprecedented levels of network utilization, close to 100%
of the theoretical line rate, for sustained periods of time.
The TCP-based approach can be thought of as a process of “load a
timestep’s worth of data, then render it.” Additionally, because the under-
lying protocol is TCP-based, there was no data loss between remote source
and the Visapult back end.
Going to the UDP-based model required rethinking both the network pro-
tocol and the Visapult back end architecture. In the TCP approach, the Visa-
pult back end “requests” data, which is a “pull” model. In the UDP approach,
though, the data source streams out data packets as quickly as possible, and
the Visapult back end must receive and process these data packets as quickly
as possible. This approach is a “push” model. There is no notion of timestep
or frame boundary in this push model; the Visapult back end has no way of
knowing when all the data packets, for a particular timestep, are in memory.
After all, some of the packets may be lost as UDP does not guarantee packet
delivery. See Bethel and Shalf, 2005, [3] for more design change details and
see Shalf and Bethel, 2003, [27] for the UDP packet payload design.