| | This Article | |
| |
| |
| | Share | |
| |
| |
| | Bibliographic References | |
| |
| |
| | Add to: | |
| |
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
| |
| | Search | |
| |
| |
| | |
Fine-grained Visualization Pipelines and Lazy Functional Languages
September-October 2006 (vol. 12 no. 5)
pp. 973-980
The pipeline model in visualization has evolved from a conceptual model of data processing into a widely used architecture for implementing visualization systems. In the process, a number of capabilities have been introduced, including streaming of data in chunks, distributed pipelines, and demand-driven processing. Visualization systems have invariably built on stateful programming technologies, and these capabilities have had to be implemented explicitly within the lower layers of a complex hierarchy of services. The good news for developers is that applications built on top of this hierarchy can access these capabilities without concern for how they are implemented. The bad news is that by freezing capabilities into low-level services expressive power and flexibility is lost. In this paper we express visualization systems in a programming language that more naturally supports this kind of processing model. Lazy functional languages support fine-grained demand-driven processing, a natural form of streaming, and pipeline-like function composition for assembling applications. The technology thus appears well suited to visualization applications. Using surface extraction algorithms as illustrative examples, and the lazy functional language Haskell, we argue the benefits of clear and concise expression combined with fine-grained, demand-driven computation. Just as visualization provides insight into data, functional abstraction provides new insight into visualization.
[1] 973 P. Bjesse, K. Claessen, M. Sheeran, and S. Singh, Lava: Hardware design in haskell. In International Conference on Functional Programming, pages 174–184, 1998.[2] M. Chakravarty and G. Keller, An approach to fast arrays in haskell. In Advanced Functional Programming 2002, number 2638 in Lecture notes in Computer Science, pages 27–58. Springer-Verlag, 2003.[3] S. Chandrasekaran and M. Franklin, PSoup: a system for streaming queries over streaming data. VLDB Journal, 12 (2): 140–156, 2003.[4] E. Chernyaev, Marching cubes 33: Construction of topologically correct isosurfaces. Technical Report Technical Report CERN CN 95-17, CERN, 1995.[5] M. Cox and D. Ellsworth, Application-controlled demand paging for out-of-core visualization. In Proceedings of Visualization '97, pages 235—ff. IEEE Computer Society Press, 1997.[6] R. Haber and D. McNabb, Visualization idioms: A conceptual model for scientific visualization systems. In Visualization in Scientific Computing, IEEE Computer Society Press, 1990.[7] P. Haeberli, ConMan: a visual programming language for interactive graphics. In Proceedings of SIGGRAPH'88, pages 103–111. ACM Press, 1988.[8] P. H. Hartel et. al. Benchmarking implementations of functional languages with pseudoknot, a float-intensive benchmark. Journal of Functional Programming, 6 (4): 621–656, 1996.[9] Haskell: A purely functional language. http:/www.haskell.org, Last visited 27-03-2006.[10] J. Hughes, Why functional programming matters. Computer Journal, 32 (2): 98–107, 1989. See also http://www.cs.chalmers.se/rjmh/Paperswhyfp.html .[11] J. Hughes, The design of a pretty-printing library. In J. Jeuring and E. Meijer., editors, Advanced Functional Programming, volume 925. Springer Verlag, 1995.[12] M. Isenburg and P. Lindstrom, Streaming meshes. In Proceedings of Visualization'05, page 30, 2005.[13] J. Jeuring and P. Jansson, Polytypic programming. In J. Launchbury, E. Meijer, and T. Sheard, editors, Tutorial Text 2nd Int. School on Advanced Functional Programming, Olympia, WA, USA, 26–30 Aug 1996, volume 1129, pages 68–114. Springer-Verlag, 1996.[14] S. P. Jones, editor. Haskell'98 Language and Libraries: The Revised Report. Cambridge University Press, 2003.[15] D. Lane, UFAT: a particle tracer for time-dependent flow fields. In Proceedings of Visualization '94, pages 257–264. IEEE Computer Society Press, 1994.[16] C. Law, W. Schroeder, K. Martin, and J. Temkin, A multi-threaded streaming pipeline architecture for large structured data sets. In Proceedings of Visualization '99, pages 225–232. IEEE Computer Society Press, 1999.[17] M. Levoy, Spreadsheets for images. Computer Graphics, 28(Proceedings of SIGGRAPH'94): 139–146, 1994.[18] T. Lewiner, H. Lopes, A. Vieira, and G. Tavares, Efficient implementation of marching cubes' cases with topological guarantees. Journal of Graphics Tools, 8 (2): 1–15, 2003.[19] W. Lorensen and H. Cline, Marching cubes: A high resolution 3d surface construction algorithm. In Proceedings of SIGGRAPH'87, pages 163–169. ACM Press, 1987.[20] A. Mascarenhas, M. Isenburg, V. Pascucci, and J. Snoeyink, Encoding volumetric grids for streaming isosurface extraction. In 3DPVT, pages 665–672, 2004.[21] P. Moran and C. Henze, Large field visualization with demand-driven calculation. In Proceedings of Visualization'99, pages 27–33. IEEE Computer Society Press, 1999.[22] D. Nadeau, Volume scene graphs. In Proceedings of the Symposium on Volume Visualization, pages 49–56. ACM Press, 2000.[23] C. North and B. Shneiderman, Snap-together visualization: a user interface for coordinating visualizations via relational schemata. In AVI'00: Proceedings of Advanced Visual Interfaces, pages 128–135. ACM Press, 2000.[24] A. Pang and K. Smith, Spray rendering: visualization using smart particles. In G. Nielson and R. Bergeron, editors, Proceedings of Visualization'93, pages 283–290. IEEE Computer Society Press, 1993.[25] S. Parker, D. Weinstein, and C. Johnson, The SCIRun computational steering software system. In Modern software tools for scientific computing, pages 5–44. Birkhauser Boston Inc., 1997.[26] W. Schroeder, K. Martin, and B. Lorensen, The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics. Prentice Hall, second edition, 1998.[27] J. Svenningsson, Shortcut fusion for accumulating parameters & zip-like functions. In ICFP '02: Proc. of International Conference on Functional Programming, pages 124–132. ACM Press, 2002.[28] C. Upson, T. Faulhaber Jr, D. Kamins, D. Laidlaw, D. Schlegel, J. Vroom, and A. van Dam, The application visualization system: A computational environment for scientific visualization. Computer Graphics and Applications, 9 (4): 30–42, 1989.[29] M. Wallace and C. Runciman, Haskell and XML: Generic combinators or type-based translation? In Proceedings of the Fourth ACM SIGPLAN International Conference on Functional Programming (ICFP'99), pages 148–159. ACM Press, 1999.
Index Terms:
Pipeline model, laziness, functional programming.
Citation:
David Duke, Malcolm Wallace, Rita Borgo, Colin Runciman, "Fine-grained Visualization Pipelines and Lazy Functional Languages," IEEE Transactions on Visualization and Computer Graphics, vol. 12, no. 5, pp. 973-980, Sept. 2006, doi:10.1109/TVCG.2006.145