Nilesh Mahajan

LH 130
150 S. Woodlawn Ave.
Bloomington, IN 47405


My current research interests are in compilers, parallelism and programming languages. I am advised by Dr. Arun Chauhan and Dr. Andrew Lumsdaine.



  1. Kanor
    Kanor is an embedded domain specific language (DSL) to write parallel programs. A Kanor program is written in Bulk Synchronous Parallel (BSP) style with communication specified by the programmer assuming partitioned address space like MPI. I helped design the syntax and semantics of Kanor. I implemented Kanor extensions using C++ metaprogramming techniques and C++11 features. I am writing a source-to-source translator to translate Kanor programs to C++ programs. The translator uses the Clang LibTooling framework to optimize generated source which can be further compiled by a different C++ compiler. My responsibilities include literature review, coding, testing, debugging, writing papers, presentation.
  2. MPI on Shared Memory
    The purpose of the project is to efficiently compile MPI programs to take advantage of shared-memory for communication purposes. We statically try to detect buffers that can be shared between sender and receiver processes and allocate them in shared memory to eliminate runtime copies. We take an optimistic approach in that we allocate buffers in shared memory even if we cannot prove that there will be redefinitions. But the redefinitions are detected at runtime (with compiler inserted checks) and the runtime falls back to copying in that case.


  1. Proving an Array Reversal Algorithm Using PVS. [doc]
  2. StreamIT MPI Backend - An Evaluation. [doc]
  3. Optimizing MPI Collectives using LLVM. [doc]
  4. Register Allocation using GPUs. [doc]
Home Research Publications Projects Reports