Kaushik Datta

kdatta @ cs . berkeley . edu


Research

Hello world! I am a Ph.D. student in scientific computing under the guidance of professors Katherine Yelick and James Demmel. I am also a member of the BeBOP group in the ParLab as well as the Future Technologies Group at Lawrence Berkeley National Laboratory. My interests include high performance computing, auto-tuning, and parallel (multicore) programming.

I will be joining Reservoir Labs after graduation.

Optimization of Stencil Codes

My current thesis research is based on tuning stencil codes. Essentially, these codes perform nearest neighbor computations on structured grids. They are commonly used in solving partial differential equations (PDE's), which arise in fields as diverse as heat diffusion and electromagnetics. My work has focused on achieving good performance from stencil codes across a diverse range of multicore processors. This work was preceded by Sam Williams's work in tuning sparse matrix-vector multiply (SpMV) and a structured grid application (LBMHD).

In order to get good performance across several varied architectures, I created an auto-tuning framework. First, I identified a set of domain-specific optimizations, including: multi-level domain decomposition, software prefetching, padding, inner loop optimizations, and ISA-specific transformations. I then generated many different code variants by writing stencil code generators in Perl. This was more or less a proof-of-concept; it is being improved upon by Shoaib Kamil and Cy Chan, who are using functional programming to make the code generation more intelligent and robust.

The last step was to identify the best set of compile-time and run-time parameters for a given architecture. This is a difficult problem, since the parameter space is so large that an exhaustive search is infeasible. Moreover, the search space is usually not smooth. Archana Ganapathi and I are looking into more intelligent ways of traversing this space, including machine learning.

Some of this auto-tuning work was used as a building block for the Green Flash project, which is covered here.

Publications

Talks (not presented with publications)

Posters

Titanium Language

Much of my Masters research had been writing and optimizing parallel benchmarks for the Titanium group. Titanium is a great language based on Java, but with support for parallel execution and multi-dimensional array manipulation. If you're interested, please download the compiler and try it out!

My work involved understanding three of the benchmarks in the NAS Parallel Benchmarks suite- Multigrid (MG), Fourier Transform (FT), and Conjugate Gradient (CG). I then rewrote these benchmarks in Titanium. By exploiting both the algorithms and Titanium's language features, the resultant code was concise, scalable, and fast.

While developing the Titanium FT benchmark, I also wrote the Titanium Complex number library.

Publications

Posters

Released Code

Classes

Computer Science

Teaching Assistant

Architecture

Architecture + Systems

Theory

Mathematics

Linear Algebra

Differential Equations

Bioengineering

Preliminary Exam

Activities

I served for three years as Treasurer of the Computer Science Graduate Student Association (CSGSA). 

I also play basketball a few times a week and ultimate occasionally.  If you'd like to join me, please drop me a line.

Contact Information

593 Soda Hall
Computer Science Division
UC Berkeley
Berkeley, CA 94720-1776


"I am convinced that He (God) does not play dice." -- Albert Einstein

"Life is like a box o' chocolates.  You never know what you gonna get." -- Forrest Gump