research
My research agenda involves bringing together a wide variety of
my interests. In particular, I attempt to use programming languages,
parallel computing and systems software to bring about new approaches
for scientific computing and visualization. Particular interests
include:
- Scientific Visualization
Modern computers can produce a large amount of data in a very
short amount of time. However, it is often very difficult to
understand this data. This research involves coming up with new
mechanisms to visualize scientific data. In particlar, I focus on
interactivity for large-scale scientific datasets that overwhelm many
traditional visualization methods.
- Computational Steering
Instead of the typical simulation mode - manually setting input
parameters, computing results, storing data off to disk, visualizing
the results via a separate visualization package, then starting again
at the beginning - computational steering would allow the scientist or
engineer to "close the loop" and allow interactive
manipulation of input parameters. SCIRun is a system that
embodies these concepts.
- Computer Graphics
Traditional computer graphics algorithms have been designed to be
either interactive or realistic. I am interested in increasing the
amount of realism that can be used in an interactive setting. In
particular, the real-time ray tracer uses a parallel machine to
achieve interactivity from a ray tracing algorithm. For large models
(especially scientific data), the speed of the ray tracer can rival or
exceed the performance of even the fastest graphics hardware
available.
- Component Architectures
As software systems become more
complex, component architectures can be used to help manage many
aspects of this complexity. Similarly, as high-performance parallel
programs grow in both size and scope, it makes sense to use a
component-based architecture in assembling high-performance
applications. However, such mechanisms are not prevalent in parallel
scientific computing applications. For these applications, there are
many barriers to using the existing component systems, including
inefficiency at handling large amounts of data, and the inability to
express parallelism within and between components. I am working on
component architectures designed to alleviate these limitations.
These concepts are being implemented within the SCIRun Problem Solving
Environment, are being applied to the simulations being written for C-SAFE.
- Problem Solving Environments
In addition to a component architecture, SCIRun provides other
support for solving scientific problems. Currently, it provides
support for simple debugging and resource management. However, many
other capabilites would be useful, such as recommendation of
particular numerical or visualization methods, validation, logging of
parameters used, and the addition of domain specific knowledge.
- Parallel Programming
Many scientific computations are not possible without the use of
large-scale parallel machines. For C-SAFE, I am helping to design
software that will run on thousands of processors in a machine that
supports a hybrid of message-passing and shared-memory communication
paradigms.
- High Performance Computing
In addition to running in parallel, computer programs should run
fast. Through increased understanding of the computer architecture,
one can optimize programs to get the most out of the machine. My
interests here include determining how to create new algorithms and
data structures that use memory hierarchies effectively, and on
progamming techniques that allow highly optimized code to still be
human-readable.
- Distributed Computing
In particular, I am interested in combining distributed computing,
parallel programming, scientific visualization and scientific
computing techniques to produce an environment that supports remote
steering. In this scenario, a large-scale scientific computation runs
on a remote computer, and the user can interact with the computation
from a desktop workstation that is possibly quite distant from the
simulation. The user may wish to monitor the simulation, and could
make changes in the running simulation. In some cases, tools like
this may be critical since the data sizes prohibit transfer of the
data over even the fastest networks. Here a combination of networking
technologies, programming techniques, and novel visualization methods
are required to provide an interactive system.
- Visual Programming
While I am not actively working on novel concepts for visual
programming, it remains a research interest that could provide
valuable tools for the component architecture and problem solving
environment goals described above.
|