Selected Projects
Implementation & Performance Comparison of Parallel Branch and Bound Algorithm on Distributed and SMP Architectures
Apr 2009, Part of course work - Parallel Computer Architecture (EEL 6763)
The performance of an algorithm depends heavily on the underlying architecture. In this project, we
implemented the Travelling Salesman Problem (a Branch and Bound Algorithm) using two different programming
methodologies (Message Passing and Shared Memory) and compared its performance on a SMP (Symmetric
Multiprocessing) system and a Distributed Memory Sytem(Cluster).
Programming language: MPI and UPC
Tools: Parallel Performance Wizard,
Quantitative analysis of EDF scheduler in XEN Virtual Machines using Simics x86 simulator
Dec 2008, Part of course work - Virtual Computers (EEL 6892)
The scheduler used by XEN Virtual Machine Monitor, plays a vital part in the resource isolation provided
between domains. The purpose of this project was to quantitatively analyse the working of EDF (Earliest
Deadline First) scheduler in XEN virtual machines and examine its ability to provide resource availability.
Performance metrics like TLB misses, cache hit rate etc were collected for different EDF scheduler
configuration. Finally, EDF scheduler's suitability for real-time applications was analysed.
Programming language: bash scripting, python scripting
Tools: Simics - x86 simulator
Implementation of Multithreaded Electronic Trading Platform
Apr 2009, Part of course work - Concurrent Porgramming (COP 5255)
This project was to design, document and implement a multithreaded electronic trading platform that carries
out simultaneous open outcry double auctions, along with the necessary infrastructure to play an auction game.
We used a client-server model for implementing the auction game. Players log into the game using the client
program (the user-interface was designed using Java Swings) and the bids/asks are processed in the server program.
The server and client program dealt with multiple concurrency issues to ensure the correct and efficient working
of the electronic trading platform.
Programming language: Java
Debian packaging of MPI (mpich2) for use on grid-appliance
Dec 2009, under Dr. Renato Figueiredo
The Grid Appliance is a self-configuring
Virtual Machine appliance that is used to create ad-hoc pools of computer resources both within a local-area
and across wide-area networks to execute high-throughput, long-running jobs. With this mpi package, one can
quickly setup a cluster of mpi appliances which are connected using
GroupVPN,
a secure, self-configuring virtual private network. The startup script discovers other mpi appliances on
the grid and configures them for running mpi jobs.
Programming language: bash scripting
Implementing Prewitt Edge Detection on FPGA and comparing its speedup with software implementation
Dec 2008, Part of course work - Reconfigurable Computers (EEL 5934)
Prewitt Edge Detection is a popular image processing algorithm which can be used to decipher and isolate
specific objects. In the FPGA implementation, we achieved parallelism by implementing a pipelined datapath and
by implementing "loop-unrolling" to maximize the use of the available memory bandwidth. We implemented
a smart buffer to avoid re-loading of the redundant pixels (border pixels) required in each cycle.
Programming language: VHDL, C
Tools: Xilinx, Dime Talk
Design and Implementation of Instruction Set Simulator of In-Order, Multiple Instruction Issue Superscalar Processor
Dec 2008, Part of course work - Computer Architecture (EEL 5764)
In this project, we designed and implemented an Instruction Set Simulator for a MIPS like instruction set.
The program had an assembler to decode mneumonics to machine language and it could simulate an in-order,
multiple instruction issue superscalar processor.
Programming language: C++
Implementation of SSL like protocol
Dec 2009, Part of course work - Computer and Network Security (CNT 5410)
This project involved writing an application that called routines for file transfer using a secure SSL-like
connection. The server application was multithreaded and could accept multiple client connections simultaneosuly
and could resume a session if the same client has a working connection.
Programming language: Java
MICROMOUSE: Autonomous maze solving international robotics competition
2005, TechFest - IIT Bombay
Click here for wikipedia description
Micromouse is an event where a small robot mouse needs to solve a 16x16 maze.The mouse
is a completely autonomous robot that must find its way from a predetermined starting position to the central area of the maze
unaided. The mouse need to keep track of where it is, discover walls as it explores, map out the
maze and detect when it has reached the goal. Having reached the goal, the mouse will typically perform
additional searches of the maze until it has found an optimal route from the start to the center. Once
the optimal route has been found, the mouse will run that route in the shortest possible time.
a small clip of our micromouse |
Programming language: C++
Using Simpoint to determine the best cache configuration using offline simulations
Mar 2009, Under Dr. Ann Gordon-Ross, ECE Dept, UF
It has been found that using reconfigurable cache in embedded systems, helps in decreasing the power usage of the system.
Offline simulations of cache design space to determine the best configuration of cache, takes huge amount of time. Using Simpoint,
one can selectively choose phases in the program for which the simulation needs to be carried out. This way, the best cache configuaration
can be found in a very quick way and at a neglible cost of accuracy.
Programming language: C++ , bash shell scripting
Tools: Simpoint, SimpleScalar
Design and implementation of computer network using a microcontroller based
switch
May 2006, Final Year project forUnder the guidance of Mr. Zuber. M. Patel
The computers were connected in a star network and their front end program (developed in C) had options
for displaying online computers, file transfer-receive and chatting. RS-232 handshaking signals from the
COM port were modified by programming the 8250 UART chip of the computers and used to generate
control signals for the microcontroller. The hub’s microcontroller kept the information of all the online
computers and the operations they were doing at any given time. Wise usage of RS-232 handshaking
signals and the appropriate circuit design of the hub enabled us to achieve maximum network efficiency,
independent of the speed of the hub