Projects
-
Compiling for Multicore Systems.
As multi-core systems are gaining popularity, there is a definite need for
languages, tools and techniques that can simplify programming high
performance machines to exploit the hardware
features to a significant level and achieve higher throughput.
Programming languages such as OpenMP, MPI, X10, CAF, OpenCL, and Titatnium are
part of some of the efforts in this direction.
Two of the main issues that we encounter while compiling for
multi-core systems are the following:
(a) the difference between user perceived
(ideal) parallelism and useful parallelism based on the actual
hardware, and (b) reasoning about the locality of data and computation.
Our goal is to design new optimizations techniques to improve performance and develop new tools and language extensions to help the design of parallel programs.
-
Performance and Programmability in OO languages.
Performance and programmability are two of the most desired targets of OO languages like Java.
However, considering the typical multisite development, and two tier translation mechanism both programmability and performance take a hit.
Our goal is to design new optimizations that take advantage of the two tier translation scheme of Java (to improve performance).
Similarly, we aim to generate semi-automatic tools to improve the readability and programmability of large Java applications.
-
Optimizing ML workloads.
Machine learning workloads have quickly become one of the dominant consumers of compute, and their performance depends far less on the model description than on how that description is lowered onto the underlying hardware. The gap between a concise model specification and an efficient schedule on a GPU, TPU, or multi-core CPU is bridged largely by hand-tuned kernels and heuristics. Our goal is to design compiler analyses and optimizations for tensor programs that automate these decisions, to build cost models and tools that help developers reason about where time and memory are actually spent, and to explore language and IR extensions that let programmers express ML computations at a high level without sacrificing performance.
Requirements. Candidate should be comfortable in one or more of (a) Compiler Design, (b) Computer Architecture, (c) Operating System, and (d) ML frameworks.
Candidate should be very good in coding (in one or more of C, C++, Java, CUDA).
Under construction
Last updated:
Mon Aug 24 09:51:21 IST 2026
AMuUH6qnCmGt_nWXja0UDfwfoyzM5KjGqOemWmued7g=.html