Hostname: page-component-8448b6f56d-xtgtn Total loading time: 0 Render date: 2024-04-23T08:25:38.955Z Has data issue: false hasContentIssue false

Space profiling for parallel functional programs

Published online by Cambridge University Press:  03 September 2010

DANIEL SPOONHOWER
Affiliation:
School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA 15213, USA (e-mail: spoons@cs.cmu.edu, blelloch@cs.cmu.edu, rwh@cs.cmu.edu)
GUY E. BLELLOCH
Affiliation:
School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA 15213, USA (e-mail: spoons@cs.cmu.edu, blelloch@cs.cmu.edu, rwh@cs.cmu.edu)
ROBERT HARPER
Affiliation:
School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA 15213, USA (e-mail: spoons@cs.cmu.edu, blelloch@cs.cmu.edu, rwh@cs.cmu.edu)
PHILLIP B. GIBBONS
Affiliation:
Intel Labs Pittsburgh, 4720 Forbes Avenue, Suite 410, Pittsburgh, PA 15213, USA (e-mail: phillip.b.gibbons@intel.com)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

We present a semantic space profiler for parallel functional programs. Building on previous work in sequential profiling, our tools help programmers to relate runtime resource use back to program source code. Unlike many profiling tools, our profiler is based on a cost semantics. This provides a means to reason about performance without requiring a detailed understanding of the compiler or runtime system. It also provides a specification for language implementers. This is critical in that it enables us to separate cleanly the performance of the application from that of the language implementation. Some aspects of the implementation can have significant effects on performance. Our cost semantics enables programmers to understand the impact of different scheduling policies while hiding many of the details of their implementations. We show applications where the choice of scheduling policy has asymptotic effects on space use. We explain these use patterns through a demonstration of our tools. We also validate our methodology by observing similar performance in our implementation of a parallel extension of Standard ML.

Type
Articles
Copyright
Copyright © Cambridge University Press 2010

References

Aditya, S., Arvind Jan-Willem, M. & Augustsson, L. (June 1995) Semantics of pH: A Parallel Dialect of Haskell. Tech. Rep. Computation Structures Group Memo 377-1. MIT.Google Scholar
Appel, A. W. (1989) Simple generational garbage collection and fast allocation, Softw. Prac. Exp., 19 (2): 171183.CrossRefGoogle Scholar
Appel, A. W., Duba, B. & MacQueen, D. B. (Nov. 1988) Profiling in the Presence of Optimization and Garbage Collection. Tech. Rep. CS-TR-197-88. Princeton University.Google Scholar
Arvind, N., Rishiyur, S. & Pingali, K. K. (1989) I-structures: Data structures for parallel computing, ACM Trans. Program. Lang. Syst., 11 (4): 598632.CrossRefGoogle Scholar
Barnes, J. & Hut, P. (1986) A hierarchical O(N log N) force-calculation algorithm, Nature, 324 (4): 446449.CrossRefGoogle Scholar
Blelloch, G. E., Hardwick, J. C., Sipelstein, J., Zagha, M. & Chatterjee, S. (1994) Implementation of a portable nested data-parallel language, J. Parallel Distrib. Comput., 21 (1): 414.CrossRefGoogle Scholar
Blelloch, G. E., Gibbons, P. B. & Matias, Y. (1999) Provably efficient scheduling for languages with fine-grained parallelism, J. ACM, 46 (2): 281321.CrossRefGoogle Scholar
Blelloch, G. & Greiner, J. (1995) Parallelism in sequential functional languages. In Proceedings of the International Conferance on Functional Programming Language and Computer Architecture. ACM, pp. 226237.Google Scholar
Blelloch, G. E. & Sabot, G. W. (1990) Compiling collection-oriented languages onto massively parallel computers, J. Parallel Distrib. Comput., 8 (2): 119134.CrossRefGoogle Scholar
Blumofe, R. D. & Leiserson, C. E. (1998) Space-efficient scheduling of multithreaded computations, SIAM J. Comput., 27 (1): 202229.CrossRefGoogle Scholar
Blumofe, R. D. & Leiserson, C. E. (1999) Scheduling multithreaded computations by work stealing. J. ACM, 46 (5): 720748.CrossRefGoogle Scholar
Burton, F. W. & Sleep, M. R. (1981) Executing functional programs on a virtual tree of processors. In Proceedings of the Conference on Functional Program Language and Computer Architecture. ACM, pp. 187194.Google Scholar
Chakravarty, M. M. T. & Keller, G. (2000) More types for nested data parallel programming. In Proceeding of the International Conferance on Functional Programming. ACM, pp. 94105.Google Scholar
Charles, N. & Runciman, C. (1998) An interactive approach to profiling parallel functional programs. In Selected Papers of the Workshop on the Implementation of Functional Language. Springer, pp. 2037.Google Scholar
Cheng, P. & Blelloch, G. E. (2001) A parallel, real-time garbage collector, Sigplan Not., 36 (5): 125136.CrossRefGoogle Scholar
Conchon, S. & Fessant, F. L. (1999) Jocaml: Mobile agents for Objective-Caml. In Proceedings of the International Symposium on Agent Systems and Applications. IEEE, pp. 2229.Google Scholar
Cousot, P. & Cousot, R. (1977) Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proceedings of the Symposium on Principles of Programming Language. ACM, pp. 238252.Google Scholar
Ennals, R. (2004) Adaptive Evaluation of Non-Strict Programs. PhD thesis, University of Cambridge.Google Scholar
Fluet, M., Ford, N., Rainey, M., Reppy, J., Shaw, A. & Xiao, Y. (2007) Status report: The Manticore project. In Proceedings of the Workshop on ML. ACM, pp. 1524.Google Scholar
Fluet, M., Rainey, M. & Reppy, J. (2008) A scheduling framework for general-purpose parallel languages. In Proceedings of the International Conference on Functional Programming. ACM, pp. 241252.Google Scholar
Frigo, M., Leiserson, C. E. & Randall, K. H. (1998) The implementation of the Cilk-5 multithreaded language. In Proceedings of the Conferance on Programming Language, Design and Implementation. ACM, pp. 212223.Google Scholar
Greiner, J. & Blelloch, G. E. (1999) A provably time-efficient parallel implementation of full speculation, ACM Trans. Program. Lang. Syst., 21 (2): 240285.CrossRefGoogle Scholar
Gustavsson, J. & Sands, D. (1999) A foundation for space-safe transformations of call-by-need programs. In Proceedings of Workshop on Higher Order Operational Techniques in Semantics. Elsevier, pp. 6986.Google Scholar
Hammond, K., Berthold, J. & Loogen, R. (2003) Automatic skeletons in template Haskell, Parallel Process. Lett., 13 (3): 413424.CrossRefGoogle Scholar
Hammond, K., Loidl, H.-W. & Partridge, A. S. (1995) Visualising granularity in parallel programs: A graphical winnowing system for Haskell. In Proceedings of Conferance on High Performance Functional Computing. Denver, CO, pp. 208221.Google Scholar
Hammond, K. & Peyton Jones, S. L. (Sept. 1992) Profiling scheduling strategies on the GRIP multiprocessor. In Proceedings of the International Workshop on the Parallel Implementation of Functional Language. RWTH Aachen, Germany, pp. 7398.Google Scholar
Jay, C. B., Cole, M., Sekanina, M. & Steckler, P. (1997) A monadic calculus for parallel costing of a functional language of arrays. In Proceedings of the International Euro-Par Conferance on Parallel Processing. Springer-Verlag, pp. 650661.CrossRefGoogle Scholar
Lieberman, H. & Hewitt, C. (1983) A real-time garbage collector based on the lifetimes of objects, Commun. ACM, 26 (6): 419429.CrossRefGoogle Scholar
Loidl, H.-W. & Hammond, K. (1996) A sized time system for a parallel functional language. In Proceedings of the Glasgow Workshop on Functional Programming. Department of Computing Science, University of Glasgow.Google Scholar
Milner, R., Tofte, M., Harper, R. & MacQueen, D. (1997) The Definition of Standard ML (Revised). MIT Press.CrossRefGoogle Scholar
Peyton, J., Simon, L., Roman, K., Gabriele, K. & Chakravarty, M. M. T. (2008) Harnessing the multicores: Nested data parallelism in Haskell. In Proceedings of the IARCS Annual Conferance on Foundations of Software Technology and Theoretical Computer Science. Leibniz International Proceedings in Informatics.Google Scholar
Preparata, F. P. & Shamos, M. I. (1988) Computational Geometry – An Introduction, 2nd ed.Springer-Verlag.Google Scholar
Reppy, J. H. (1999) Concurrent Programming in ML. Cambridge University Press.CrossRefGoogle Scholar
Roe, P. (1991) Parallel Programming using Functional Languages. PhD thesis, Department of Computing Science, University of Glasgow.Google Scholar
Röjemo, N. & Runciman, C. (1996) Lag, drag, void and use–heap profiling and space-efficient compilation revisited, Sigplan Not., 31 (6): 3441.CrossRefGoogle Scholar
Rosendahl, M. (1989) Automatic complexity analysis. In Proceedings of the International Conferance on Functional Programming Language and Computere Architecture. ACM, pp. 144156.Google Scholar
Runciman, C. & Röjemo, N. (1996) New dimensions in heap profiling, J. Funct. Program., 6 (4): 587620.CrossRefGoogle Scholar
Runciman, C. & Wakeling, D. (1993a) Heap profiling of lazy functional programs, J. Funct. Program., 3 (2): 217245.CrossRefGoogle Scholar
Runciman, C. & Wakeling, D. (1993b) Profiling parallel functional computations (without parallel machines). In Proceedings of the Glasgow Workshop on Functional Programming. Springer-Verlag, pp. 236251.Google Scholar
Sands, D. (Sept. 1990) Calculi for Time Analysis of Functional Programs. PhD thesis, Department of Computing, Imperial College, University of London.Google Scholar
Sansom, P. M. & Peyton Jones, S. L. (1992) Profiling lazy functional programs. In Proceedings of the Glasgow Workshop on Functional Programming. Springer-Verlag, pp. 227239.Google Scholar
Sansom, P. M. & Peyton Jones, S. L. (1995) Time and space profiling for non-strict, higher-order functional languages. In Proceedings of the Symposium on Principles of Program. Languange. ACM, pp. 355366.Google Scholar
Shao, Z. & Appel, A. W. (1994) Space-efficient closure representations. In Proceedings of the Conferance on LISP and Functional Programming. ACM, pp. 150161.Google Scholar
Trinder, P. W., Hammond, K., Loidl, H.-W. & Peyton Jones, S. L. (1998) Algorithm + Strategy = Parallelism, J. Funct. Program., 8 (1): 2360.CrossRefGoogle Scholar
Ungar, D. (1984) Generation scavenging: A non-disruptive high performance storage reclamation algorithm. In Proceedings of the Software Engineering Symposium on Practical Software Development Environments. ACM, pp. 157167.Google Scholar
Weeks, S. (2006) Whole-program compilation in MLton. In Proceedings of the Workshop on ML. ACM, p. 1.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.