Guy Blelloch is a Professor of Computer Science at Carnegie Mellon.
His research interests are in programming languages and algorithms and how they interact
with an emphasis on parallel computation. Blelloch designed and implemented the parallel
programming language NESL, a language designed for easily expressing and analyzing parallel
algorithms and has worked on issues in scheduling, algorithm design,
cache efficiency, garbage collection, and synchronization primitives.
Cache hierarchies in multicore computers are quite complex consisting of many levels
of both shared and private caches. Designing algorithms and applications for such caches
can be very complicated although often necessary to get good performance.
We discuss approaches of capturing the locality of a parallel algorithm at a high-level
requiring little work by the algorithm designer or programmer and then using this
along with an appropriate thread scheduler to get good cache performance on a variety
of parallel cache configurations. I will describe results for private caches,
shared caches and some new results on multiple level cache hierarchies.
In all cases the same algorithms can be used, but the scheduler needs to be changed.
The approach makes use of ideas on cache oblivious algorithms.