A memory abstraction is an abstraction layer between the program execution and the memory that provides a different "view " of a memory location depending on the execution context in which the memory access is made. Properly designed memory abstractions help ease the task of parallel programming by mitigating the complexity of synchronization or admitting more efficient use of resources. This dissertation describes five memory abstractions for parallel programming: (i) cactus stacks that interoperate with linear stacks, (ii) efficient reducers, (iii) reducer arrays, (iv) ownership-aware transactions, and (v) location-based memory fences. To demonstrate the utility of memory abstractions, my collaborators and I developed Cilk-M, a ...
Parallel graph reduction is a conceptually simple model for the concurrent evaluation of lazy functi...
We present an efficient memory management scheme for concurrent programming languages where communic...
This work explores the tradeoffs of the memory system of a new massively parallel multiprocessor in ...
Many multithreaded concurrency platforms that use a work-stealing runtime system incorporate a "cact...
Manual memory management is error prone. Some of the errors it causes, in particular memory leaks an...
Many multithreaded concurrency platforms that use a work-stealing runtime system incorporate a “cact...
grantor: University of TorontoThis dissertation proposes and evaluates compiler techniques...
Increased programmability for concurrent applications in distributed systems requires automatic supp...
Common many-core processors contain tens of cores and distributed memory. Compared to a multicore sy...
Exploiting thread-level parallelism has become a part of mainstream programming in recent years. Man...
As computing efficiency becomes constrained by hardware scaling limitations, code optimization grows...
The traditional "stack grows from the top, heap grows from the bottom " memory layout allo...
textThe programming language and underlying hardware determine application performance, and both ar...
A memory model for a concurrent imperative programming language specifies which writes to shared var...
As parallel systems become ubiquitous, exploiting parallelism becomes crucial for improving applicat...
Parallel graph reduction is a conceptually simple model for the concurrent evaluation of lazy functi...
We present an efficient memory management scheme for concurrent programming languages where communic...
This work explores the tradeoffs of the memory system of a new massively parallel multiprocessor in ...
Many multithreaded concurrency platforms that use a work-stealing runtime system incorporate a "cact...
Manual memory management is error prone. Some of the errors it causes, in particular memory leaks an...
Many multithreaded concurrency platforms that use a work-stealing runtime system incorporate a “cact...
grantor: University of TorontoThis dissertation proposes and evaluates compiler techniques...
Increased programmability for concurrent applications in distributed systems requires automatic supp...
Common many-core processors contain tens of cores and distributed memory. Compared to a multicore sy...
Exploiting thread-level parallelism has become a part of mainstream programming in recent years. Man...
As computing efficiency becomes constrained by hardware scaling limitations, code optimization grows...
The traditional "stack grows from the top, heap grows from the bottom " memory layout allo...
textThe programming language and underlying hardware determine application performance, and both ar...
A memory model for a concurrent imperative programming language specifies which writes to shared var...
As parallel systems become ubiquitous, exploiting parallelism becomes crucial for improving applicat...
Parallel graph reduction is a conceptually simple model for the concurrent evaluation of lazy functi...
We present an efficient memory management scheme for concurrent programming languages where communic...
This work explores the tradeoffs of the memory system of a new massively parallel multiprocessor in ...