Skip to main content
×
Home
    • Aa
    • Aa

Space profiling for parallel functional programs

  • DANIEL SPOONHOWER (a1), GUY E. BLELLOCH (a1), ROBERT HARPER (a1) and PHILLIP B. GIBBONS (a2)
Abstract
Abstract

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.

Copyright
References
Hide All
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.
Appel A. W. (1989) Simple generational garbage collection and fast allocation, Softw. Prac. Exp., 19 (2): 171183.
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.
Arvind N., Rishiyur S. & Pingali K. K. (1989) I-structures: Data structures for parallel computing, ACM Trans. Program. Lang. Syst., 11 (4): 598632.
Barnes J. & Hut P. (1986) A hierarchical O(N log N) force-calculation algorithm, Nature, 324 (4): 446449.
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.
Blelloch G. E., Gibbons P. B. & Matias Y. (1999) Provably efficient scheduling for languages with fine-grained parallelism, J. ACM, 46 (2): 281321.
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.
Blelloch G. E. & Sabot G. W. (1990) Compiling collection-oriented languages onto massively parallel computers, J. Parallel Distrib. Comput., 8 (2): 119134.
Blumofe R. D. & Leiserson C. E. (1998) Space-efficient scheduling of multithreaded computations, SIAM J. Comput., 27 (1): 202229.
Blumofe R. D. & Leiserson C. E. (1999) Scheduling multithreaded computations by work stealing. J. ACM, 46 (5): 720748.
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.
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.
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.
Cheng P. & Blelloch G. E. (2001) A parallel, real-time garbage collector, Sigplan Not., 36 (5): 125136.
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.
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.
Ennals R. (2004) Adaptive Evaluation of Non-Strict Programs. PhD thesis, University of Cambridge.
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.
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.
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.
Greiner J. & Blelloch G. E. (1999) A provably time-efficient parallel implementation of full speculation, ACM Trans. Program. Lang. Syst., 21 (2): 240285.
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.
Hammond K., Berthold J. & Loogen R. (2003) Automatic skeletons in template Haskell, Parallel Process. Lett., 13 (3): 413424.
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.
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.
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.
Lieberman H. & Hewitt C. (1983) A real-time garbage collector based on the lifetimes of objects, Commun. ACM, 26 (6): 419429.
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.
Milner R., Tofte M., Harper R. & MacQueen D. (1997) The Definition of Standard ML (Revised). MIT Press.
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.
Preparata F. P. & Shamos M. I. (1988) Computational Geometry – An Introduction, 2nd ed.Springer-Verlag.
Reppy J. H. (1999) Concurrent Programming in ML. Cambridge University Press.
Roe P. (1991) Parallel Programming using Functional Languages. PhD thesis, Department of Computing Science, University of Glasgow.
Röjemo N. & Runciman C. (1996) Lag, drag, void and use–heap profiling and space-efficient compilation revisited, Sigplan Not., 31 (6): 3441.
Rosendahl M. (1989) Automatic complexity analysis. In Proceedings of the International Conferance on Functional Programming Language and Computere Architecture. ACM, pp. 144156.
Runciman C. & Röjemo N. (1996) New dimensions in heap profiling, J. Funct. Program., 6 (4): 587620.
Runciman C. & Wakeling D. (1993a) Heap profiling of lazy functional programs, J. Funct. Program., 3 (2): 217245.
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.
Sands D. (Sept. 1990) Calculi for Time Analysis of Functional Programs. PhD thesis, Department of Computing, Imperial College, University of London.
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.
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.
Shao Z. & Appel A. W. (1994) Space-efficient closure representations. In Proceedings of the Conferance on LISP and Functional Programming. ACM, pp. 150161.
Trinder P. W., Hammond K., Loidl H.-W. & Peyton Jones S. L. (1998) Algorithm + Strategy = Parallelism, J. Funct. Program., 8 (1): 2360.
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.
Weeks S. (2006) Whole-program compilation in MLton. In Proceedings of the Workshop on ML. ACM, p. 1.
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *
×

Metrics

Full text views

Total number of HTML views: 0
Total number of PDF views: 4 *
Loading metrics...

Abstract views

Total abstract views: 43 *
Loading metrics...

* Views captured on Cambridge Core between September 2016 - 24th October 2017. This data will be updated every 24 hours.