The Multicore Computing Lab (MCL), located at the department of Computer Science and Automation, Indian Institute of Science, conducts research in new programming and compiler technologies for multicore processors. This includes development of new languages, compilers, and runtimes to make it easier to deal with parallelism while delivering high performance.



  • Design of compiler techniques and runtimes for multicores
  • Automatic parallelization
  • Compilation for heterogeneous architectures
  • Compilation for clusters of multicores
  • Polyhedral framework for compiler optimization
  • Design of Domain-Specific Languages and Optimizers


  • Pluto/Pluto+

    Pluto/Pluto+ is a source-to-source parallelization and optimization tool based on the polyhedral compiler framework. It can automatically optimize affine loop nests (sequences of imperfectly nested loops with regular data access patterns) for parallelism and locality using affine transformations. It can target both shared-memory multicore architectures (by generating code with OpenMP parallel pragmas) and distributed-memory architectures (by generating message passing MPI code). Pluto/Pluto+ is extensively used for advanced experimentation with loop optimization and parallelization, optimization of scientific stencil computations, and in university courses teaching loop transformations. More
  • PolyMage

    PolyMage is a domain-specific language and compiler for automatic parallelization and optimization of image processing pipelines. PolyMage takes an image processing pipeline expressed by the user in a high-level language (embedded in Python) and generates a C++ implementation of the pipeline optimized using the polyhedral framework as the intermediate representation. It uses OpenCV for image I/O handling, islpy/ISL for integer set operations, 'cgen' for AST code generation and 'OpenMP' to mark parallel loops. PolyMage uses an asymmetric overlapped tiling technique (overlapped tiling extended for heterogeneous accesses and non-constant dependence vectors) to exploit locality and parallelism simultaneously. It uses a model-driven approach to automatically fuse image processing pipeline stages for tiling, and employs an in-built autotuner to find the best performing code within a small well-defined search space. More

Grants, Awards & Collaboration