This paper 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 parallelization.
Information from pubs.doc.ic.ac.uk/parallel-visualisation.