Parallel Visualization using the Domain-Specific Interpreter Pattern
Karen Osmond, Olav Beckmann, Anthony
J. Field and Paul H. J. Kelly
Department of Computing, Imperial College London, UK
This talk concerns the software engineeering problem of deploying
domain-specific optimisation. The work is motivated by experience
with parallelization and tiling in MayaVi, a 44,000-line visualisation
application written in Python and VTK.
To minimize disruption to MayaVi's open-source codebase, we do this by
interposing a proxy between the Python client code, and the VTK
library. The proxy delays execution of the library code, and captures
a recipe for the computation required. This creates the opportunity
for a "domain-specific interpreter" to select an optimised execution plan.
The "domain-specific interpreter" is a design pattern applicable in
many contexts, in particular where relatively heavyweight operations
are involved to outweigh interpretive overheads. The key issue is
whether the captured recipe fully accounts for dependences between
client and library code.
We present a generic mechanism for interposing a domain-specific
interpreter in a Python application, together with experimental
results demonstrating the technique's effectiveness. In an
application involving visualization of isosurfaces in an unstructured
mesh fluid flow simulation, we show good speedups from improved memory
hierarchy performance, and through both SMP and distributed-memory