Abstract
Scientific visualization is the transformation of data into images. The pipeline model is a widely-used implementation strategy. This term refers not only to linear chains of processing stages, but more generally to demand-driven networks of components. Apparent parallels with functional programming are more than superficial: e.g. some pipelines support streams of data, and a limited form of lazy evaluation. Yet almost all visualization systems are implemented in imperative languages. We challenge this position. Using Haskell, we have reconstructed several fundamental visualization techniques, with encouraging results both in terms of novel insight and performance. In this paper we set the context for our modest rebellion, report some of our results, and reflect on the lessons that we have learned.
Supplemental Material
Available for Download
Supplemental material for: Experience report: visualizing data through functional pipelines
- R. Borgo, D. Duke, M. Wallace, and C. Runciman. Multi-cultural visualization: How functional programming can enrich visualization (and vice versa). In Proc. Vision, Modeling, and Visualization, pages 245--252. IOS Press, 2006.Google Scholar
- D. Duke, M. Wallace, R. Borgo, and C. Runciman. Fine-grained visualization pipelines and lazy functional languages. Transactions on Visualization and Computer Graphics, 12(5):973--980, 2006. Google Scholar
Digital Library
- Andrew Gill. Cheap Deforestation for Non-strict Functional Languages. PhD thesis, Glasgow, 1996.Google Scholar
- R.B. Haber and D. McNabb. Visualization idioms: A conceptual model for scientific visualization systems. In Visualization in Scientific Computing. IEEE Computer Society Press, 1990.Google Scholar
- C.C. Law, W.J. Schroeder, K.M. 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. Google Scholar
Digital Library
- W.E. Lorensen and H.E. Cline. Marching cubes: A high resolution 3D surface construction algorithm. In Proceedings of SIGGRAPH'87, pages 163--169. ACM Press, 1987. Google Scholar
Digital Library
- Conor McBride. Faking it: Simulating dependent types in Haskell. Journal of Functional Programming, 12(4&5):375--392, 2002. Google Scholar
Digital Library
- B.H. McCormick, T.A. DeFanti, and M.D. Brown. Visualization in scientific computing. Computer Graphics, 21(6), 1987.Google Scholar
- P.J. Moran and C. Henze. Large field visualization with demand-driven calculation. In Proceedings of Visualization'99, pages 27--33. IEEE Computer Society Press, 1999. Google Scholar
Digital Library
- W. Schroeder, K. Martin, and B. Lorensen. The Visualization Toolkit: An Object-Oriented Approach to 3D Graphics. Prentice Hall, second edition, 1998. Google Scholar
Digital Library
- 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. Google Scholar
Digital Library
Index Terms
Experience report: visualizing data through functional pipelines
Recommendations
Experience report: visualizing data through functional pipelines
ICFP '08: Proceedings of the 13th ACM SIGPLAN international conference on Functional programmingScientific visualization is the transformation of data into images. The pipeline model is a widely-used implementation strategy. This term refers not only to linear chains of processing stages, but more generally to demand-driven networks of components. ...
Experience report: using hackage to inform language design
HASKELL '10Hackage, an online repository of Haskell applications and libraries, provides a hub for programmers to both release code to and use code from the larger Haskell community. We suggest that Hackage can also serve as a valuable resource for language ...
Experience report: using hackage to inform language design
Haskell '10: Proceedings of the third ACM Haskell symposium on HaskellHackage, an online repository of Haskell applications and libraries, provides a hub for programmers to both release code to and use code from the larger Haskell community. We suggest that Hackage can also serve as a valuable resource for language ...







Comments