Clang Migration

Feb 2023

One of the key contributors in the effort towards migrating the OpenMP codegen in Clang to the MLIR based OpenMPIRBuilder. This work would enable the OpenMP MLIR dialect and Clang to share a lot of the codebase, thus improving code quality and reducing code duplication. LLVM Phabricator: reviews.llvm.org/p/TIFitis.

OpenMP

Sep 2022

Working on adding device offloading support features to the OpenMP dialect in MLIR. Our team was the first to achieve end-to-end kernel execution on device for the llvm-flang driver. Received AMD Spotlight award in recognition of this work. LLVM Phabricator: reviews.llvm.org/p/TIFitis.

LLVM-Flang

Sep 2022

Currently working on developing and adding language support, particulary for OpenMP to the llvm-flang driver for Fortran. llvm-flang is the new MLIR based frontend for Fortran in LLVM. LLVM Phabricator: reviews.llvm.org/p/TIFitis.

Proteus: Polymorphic Compilation

Jun 2021

Proteus is a compiler tool which uses polymorphic compilation and execution techniques to mitigate a class of side channel attacks with minimal performance overhead, compared to the other state-of-the-art solutions available. This work was done as part of my master's thesis project.

BPI Enhancements

GitHub Apr 2020

Proposed and implemented improvements to the Branch Probability Information pass in LLVM to allow better static profiling leading to speed-up of up to 1.07x, as part of the course project for Advanced Compiler Optimizations - CS6240.
Accepted as a poster in EuroLLVM-20 held at Paris, France.

Loop Acceleration

GitHub Oct 2019

Added a loop acceleration module to the Pinaka verifier for quick detection of counterexamples in loops simulating polynomial functions. Pinaka is developed by IITH Software Verifcation Group which won the third-fastest verifier position in SV-COMP’20 Floats sub-category, amongst other positions and was the only entry from Indian academia.
Appreciated by the Dept. of CSE for this work here.

LLVM2GOTO

GitHub Sep 2019

A tool to translate LLVM IR to CBMC-GOTO. LLVM supports multiple front-ends like C, C++, FORTRAN, Swift, etc., which get converted to LLVM-IR. CBMC is a tool to verify programs which has its own GOTO IR. Our tool translates LLVM-IR to GOTO IR, allowing us to potentially verify all the languages that have a front-end in LLVM, and also verify programs post LLVM optimizations.

COOL Compiler

Aug 2019

Designed and implemented a compiler for the COOL language to generate LLVM IR as part of the course project for Advanced Compiler Design - CS CS6240.

SAT Solvers

GitHub Mar 2019

Implemented DPLL SAT Solver with MOMS heuristics, CDCL SAT Solver with Lazy Datastructure and Watch Literals, MaxSAT with Totalizer encoding and an Incomplete SAT Solver based on Break-only-poly algorithm and WalkSAT. As part of the course project for Constraint Programming - CS6483.

Hybrid Mutual Exclusion in Distributed Systems

GitHub Nov 2018

An efficient implementation of a hybrid mutual exclusion algorithm for distributed systems by combining Raymond’s and Maekawa’s algorithms by multiplexing between them when communicating within clusters and across clusters, based on load, latency and throughput. As part of the course project for Distributed Computing - CS5320.

Thin Slicing in GOTO

Nov 2018

Implemented thin-slicing in CBMC-GOTO. Slicing is a beneficial tool in debugging large programs, by only presenting the relevant sections of code, allowing the programmer to focus and debug more efficiently. As part of the course project for Compiler Engineering - CS6383.

Bitcoin Wallet

GitHub Oct 2018

Created a BTC wallet application which can create and manage BTC addresses, and also handle transactions with support for both single and multisig authorization. This was done as part of the course project for Blockchain-Theory & Practice - CS5543.

Game - A Lost Tale

Feb 2017

Developed a 3D visual game in Unity-Game engine using Blender with 3d modelling, animation, world design, lighting and particle systems. A video demo of the game is available here. As part of a summer project during bachelor's.

CS6250 Advanced Compiler Optimizations A
CS5260 Compiler Optimizations A
CS6383 Introduction to Compiler Engineering A
CS6410 Software Verification A-
CS6483 Constraint Programming A
CS5320 Distributed Computing A-
CS5543 The Blockchain: Theory and Practice A-
CS5453 Internet of Things A-

Akash Banerjee

Compiler Engineer at AMD. CSE @ IIT Hyderabad Alumnus.

About Me

Compiler Engineer at AMD, UK. Part of the HPC compiler's team for the Frontier supercomputing project where I work on the new llvm-flang driver for Fortran as well as device code offloading support for the OpenMP dialect in MLIR.

My interests lie in Compilers, Program Analysis, Formal Verification and SAT Solvers. I've attained my master's in Computer Science & Engineering under the guidance of Prof. Saurabh Joshi in the field of Software Verification and applications of Formal Methods in Computer Security. During this time I have also worked under Prof. Ramakrishna Upadrasta in improving Compiler Optimizations through better profiling.

If I'm not coding, I'm usually losing games in DOTA2, staring at my fish tanks or giving pats to Simba (OTRB). Also learning to use a camera :)

Don't Panic!

What am I good at?

Programming

Skilled in C, C++ with ability to adapt quickly to new languages. Other languages I have used over the years include Java, Rust, Python, JS, C#.

Frameworks

Deep knowledge and understanding of the MLIR and LLVM compiler infrastructure, and CProver verification framework.

Tools

Git, GDB, LLDB, Eclipse, LaTeX.

Systems

Linux System Administration, CI/CD build bots deployment and maintence, regression testing.

Design Tools

I have also worked with creative tools such as Blender, ZBrush, Unity and Photoshop.

Get in touch