(2010)
Abstract
The goal of my research is to make it easier to write correct and efficient programs through advances in the design and implementation of declarative languages. Declarative languages provide programmers with such essential services as automatic thread scheduling and memory management. My research focuses on improving the effectiveness and flexibility of these services. Declarative languages, such as PML [FRRS08] and Data-Parallel Haskell [CLP + 07], provide implicit and explicit threading mechanisms. An implicit thread is a linguistic construct that acts as a hint to the scheduler for where parallel evaluation may be profitable. Explicit threads provide a mechanism for concurrent programming and coarse-grain parallel programming. My thesis research presents the design of an effective system for a language that supports implicit threading and runs on a shared-memory multiprocessor. An effective system is scalable and robust. A system is scalable if performance improves in proportion to the number of processing elements. A system is robust when performance is consistently good under changing conditions, such as a change of input data set, number of processors, or hardware platform. Robust systems are predictable across programs generally, not just those tuned for a particular set of conditions. Research on thread scheduling provides evidence that no single scheduling policy is suitable for every application







