Arjun Prakash

Links

 

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