Projects
Automated Parallelization of Source Code using Program Comprehension
[Project Details] [Video Demo] [Report] [Presentation] [Code]- A Research Project aimed at exploring methods to improve the performance of sequential source code by automatically converting it to its functionally accurate parallel equivalent, thereby ensuring efficient utilization of the underlying hardware
- Implemented Intra-Function and Inter-Function Parallelism
- Intra-Function parallelism was implemented using the concept of program comprehension that enabled the identification of the intent and the algorithm implemented in a particular code section and consequent replacement with the optimized parallel version based on the defined mapping in the backend database
- Inter-Function parallelism was implemented using a novel thread scheduling algorithm that enabled the parallel execution of the different functions in the original sequential program
- A substantial performance gain, of up to 500 times for large data was achieved, thereby resulting in effective utilization of the available resources
- Developed and implemented as part of the Capstone Project during my Undergraduate Study
Memory Allocator for OpenMP Programs
[Project Details] [Report] [Presentation] [Code]- A Research Project aimed at implementing a scalable and concurrent memory allocator for parallel applications (OpenMP)
- Implemented a memory allocator with per-thread heaps and memory ownership that can scale efficiently while almost eliminating false sharing and minimizing fragmentation
- Developed benchmarks for Speed, Scalability, False Sharing Avoidance and Fragmentation metrics
- Exhibited substantial performance improvements as compared to the Hoard and Malloc Allocators as follows:
- Exhibited super-linear speedup for the Scalability benchmark while Malloc & Hoard showed negligible speedup
- Demonstrated the best performance (Execution Time) for both the Active and Passive False Sharing benchmarks
- Demonstrated the best performance (Fragmentation Ratio) by a factor of 10000 for the Fragmentation benchmark
- Developed and implemented as part of the Multicore Processors: Architecture & Programming Course during my Graduate Study
Generic Programming in C
[Project Details] [Video Demo] [Report] [Readme] [Code]- A project aimed at implementing Generic Programming features as a design pattern in C, using pre-processor directives
- Implemented generic containers - list, stack, queue, vector, and hashmap supporting all the different data types
- Implemented Iterators for each of these containers to decouple the containers and algorithms
- Implemented Generic Algorithms like find, find_if, count, count_if, min, max, and accumulate that make use of the iterators
- Developed and implemented as part of the Design Patterns Course during my Undergraduate Study
Implementation of Treaps
[Project Details] [Video Demo] [Report] [Readme] [Code]- A project aimed at implementing Treap as a generic data structure along with the different functionalities of a treap
- Treap is a data structure that stores pairs (say [X,Y]) in a binary tree such that it is a binary search tree by X and a binary heap by Y
- The entire treap and its individual nodes were built as generic canonical classes, thereby supporting all the different data types
- Supported multiple operations such as insert node, delete node, split treap, merge two treaps, union, intersection, difference and traversal of treaps
- Implemented a bidirectional iterator as a nested class within the treap class
- Implemented multiple member algorithms such as find and replace
- Developed and implemented as part of the Generic Programming Course during my Undergraduate Study
Mini Compiler for Python
[Project Details] [Video Demo] [Report] [Code]- A project aimed at implementing a mini compiler for the Python programming language that supports the different phases of a typical compiler, namely lexical analysis, syntax analysis, semantic analysis, intermediate code generation and intermediate code optimization
- Supports the if, if-else, if-elif-else and for constructs, arithmetic, relational and logical operators, keywords, identifiers and various other features along with error detection and error handling mechanisms
- Developed and implemented as part of the Compiler Design Course during my Undergraduate Study
Design and Implementation of a Parallel Relational Database from scratch
[Project Details] [Report] [Presentation] [Code]- A project aimed at designing and implementing a Parallel Relational Database from scratch
- Supports the typical CRUD (Create, Read, Update, Delete) operations
- Implemented a B-Tree for indexing based on Primary Key, with upto 20x speedup for Select queries based on PK
- Implemented parallel merge sort, with upto 2.2x speedup for Order By queries
- Implemented various aggregate queries using parallel reduce, tabulate, filter, & sort, achieving upto 8.3x speedup
- Developed and implemented as part of the Programming Parallel Algorithms Course during my Graduate Study
Yet Another Centralized Scheduler (YACS)
[Project Details] [Report] [Code]- A project aimed at implementing a centralised scheduling framework that maintains and manages a master node and multiple worker nodes, all simulated as different processes on a single machine
- The Master node receives job requests, which are scheduled on multiple slots across available worker machines
- The Master process consists of separate threads to listen to requests, to schedule map and reduce tasks and to listen to job completion information from workers
- The Worker process listens to job allocation information and simulates execution
- Implemented 3 different scheduling algorithms, namely Least loaded, Round Robin and Randomised
- Developed and implemented as part of the Big Data Course during my Undergraduate Study
Spacetime Trajectory Estimation
[Project Details] [Video Demo]- A project aimed at simulating the events occurring after the end of a given video
- Implemented the following different stages in sequence:
- Detecting and perceiving the relative depth of objects from a single camera using relative monocular depth perception
- Identifying and recognizing the objects in the video using YOLO Object Detection model
- Tracking the selected objects using a Multi Object Tracker and OpenCV
- Using the assimilated information to accurately estimate the three-dimensional kinematic parameters of the objects
- Simulating the events occurring after the end of the video in Unreal Engine by spawning the selected objects with the calculated parameters
- Can be used to develop the decision-making abilities of self-driving vehicles and to generate diverse and quality data to train learning models
- Developed and implemented as part of the CDSAML Summer Internship
Blockchain based Healthcare Transaction System
[Project Details] [Presentation]- A project aimed at implementing a custom Blockchain from scratch for a fast and secure Healthcare Transaction System
- Patient records and organ/blood donation transaction details are stored on this decentralized ledger using the concepts of a typical Blockchain
- Enables the secure storage of patient records to provide a common interface for hospitals and patients with the right permissions to access and update the data seamlessly
- Enables a transparent process for organ/blood donations, thereby eliminating any malicious practices
- Implemented a front-end website to access and retrieve records and to participate in organ/blood transactions
- Developed and implemented as part of Hackathons
Voice based Grievance System
[Project Details] [Presentation]- A project aimed at simplifying the process of recording citizen grievances and their addressal by the concerned civic department
- Implemented the following different stages in sequence:
- Recording the complaints in voice and text format through the developed Android mobile application
- Conversion of the voice complaints to text
- Classification and redirection of the grievances to the concerned departments
- Ranking of the complaints within a department based on several parameters like severity, time-critical nature, etc
- Implemented a mobile app to record the complaints and a front-end website for the respective departments
- The mobile app on the user side and the website on the department side are integrated to form a seamless end-to-end pipeline
- Developed and implemented as part of Hackathons