Simple generational garbage collection and fast allocation
Software—Practice & Experience
I-structures: data structures for parallel computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compiling collection-oriented languages onto massively parallel computers
Journal of Parallel and Distributed Computing - Massively parallel computation
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Space-efficient closure representations
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Implementation of a portable nested data-parallel language
Journal of Parallel and Distributed Computing - Special issue on data parallel algorithms and programming
Time and space profiling for non-strict, higher-order functional languages
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parallelism in sequential functional languages
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Lag, drag, void and use—heap profiling and space-efficient compilation revisited
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Space-Efficient Scheduling of Multithreaded Computations
SIAM Journal on Computing
The implementation of the Cilk-5 multithreaded language
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Provably efficient scheduling for languages with fine-grained parallelism
Journal of the ACM (JACM)
A provably time-efficient parallel implementation of full speculation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Concurrent programming in ML
Scheduling multithreaded computations by work stealing
Journal of the ACM (JACM)
More types for nested data parallel programming
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
A real-time garbage collector based on the lifetimes of objects
Communications of the ACM
A parallel, real-time garbage collector
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Definition of Standard ML
A Monadic Calculus for Parallel Costing of a Functional Language of Arrays
Euro-Par '97 Proceedings of the Third International Euro-Par Conference on Parallel Processing
Profiling Lazy Functional Programs
Proceedings of the 1992 Glasgow Workshop on Functional Programming
An Interactive Approach to Profiling Parallel Functional Programs
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
Jocaml: Mobile Agents for Objective-Caml
ASAMA '99 Proceedings of the First International Symposium on Agent Systems and Applications Third International Symposium on Mobile Agents
Executing functional programs on a virtual tree of processors
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
Generation Scavenging: A non-disruptive high performance storage reclamation algorithm
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Algorithm + strategy = parallelism
Journal of Functional Programming
Whole-program compilation in MLton
Proceedings of the 2006 workshop on ML
Status report: the manticore project
ML '07 Proceedings of the 2007 workshop on Workshop on ML
A scheduling framework for general-purpose parallel languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Proceedings of the 2012 Haskell Symposium
Hi-index | 0.00 |
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.