High-Performance Computing
This is collaborative work with Prof. Sadayappan and his
group at the CSE department at OSU. We are interested in compile-time
and run-time analysis for the purposes of performance optimization. We
are also considering programming abstractions and software
productivity tools for programmers that are building high-performance
computing applications. Some of this work is funded by NSF grants CCF-0811781
and CNS-0509467. Current
areas of interest are:
- Automatic parallelization: We are investigating novel compilation
techniques for automatic parallelization, motivated by the emergence
of modern multi-core architectures
[PACT09,
PPoPP09,
ICS08,
CC08-2,
PPoPP08,
PLDI07].
The ubiquity of multi-core processors has brought parallel computing
squarely into the mainstream. Unlike the past, when the development of
parallel programs was primarily a task undertaken by small cadre of
expert programmers, it is now essential to develop parallel
implementations of a large number of existing sequential programs.
Current trends in microarchitecture are increasingly towards larger
number of processing elements on a single chip. The difficulty of
programming these architectures to effectively tap the potential of
multiple on-chip processing units is a significant challenge. Among
several approaches to addressing this issue, one that is very
promising but simultaneously very challenging is automatic
parallelization. Although there has been significant progress in
compiler techniques towards automatic parallelization, the current
state-of-practice leaves much to be desired. With the emergence of
multi-core processors as the computing platform for mainstream
computing i.e. in all servers, desktops, and laptops there
is now a dramatically heightened interest in automatic parallelization
compiler technology. A number of companies have recently announced
major initiatives to incorporate automatic parallelization in their
production compilers, in order to take full advantage of the
multi-core architectures entering the mainstream. The pressing need
for systematic, general, and effective foundations for
such efforts is a major motivation for our current work.
- Compile-time and run-time support for modern high-performance
applications: We are considering compile-time and run-time
approaches for implementing efficient hierarchical distributed data
structures and transparent handling of out-of-core computation [SC08,
SC06,
ICCS06,
NGS06].
Developing high-performance parallel applications which use linked
data structures on distributed-memory clusters is challenging. Many
scientific applications utilize algorithms based on linked data
structures such as trees and graphs. These structures are especially
useful in representing relationships between data which may not be
known until run time or may otherwise evolve during the course of a
computation. Other problem domains, such as data mining, use both
trees and graphs to summarize large input datasets into a set of
relationships which capture the information in a form that lends
itself to efficient mining. Our work investigates a novel runtime
system which provides a programming interface to a global address
space representation of generalized distributed linked data
structures, while providing scalable performance on distributed memory
computing systems. This work is done in collaboration with Prof. Parthasarathy and
his group.
- Compilation of MATLAB for parallel execution: We are
investigating compile-time and run-time optimizations for parallel
MATLAB [HIPS07],
aiming to bring high-performance computing capabilities to the large
community of scientists/engineers that use MATLAB.
main page