You are on page 1of 2

STATEMENT OF PURPOSE Supercomputer is the word that allures me towards High Performance Computing. This is the future of business.

I have a strong vision that every consumer computer will be a Supercomputer someday. In 1950s, computers were extremely expensive room-sized monsters. The 50's reduced the size of computers abruptly with the invention of the transistor, which replaced the old glass vacuum tubes. Similarly recent switch to parallel microprocessors has been significant stage in Supercomputers. Moreover by targeting multiple cores per chip we have expedited the number of instructions per second. I would be glad to be a part of these upcoming transitions. Thats my motivation for graduate study and research. Why satiate yourself to good when you can grab the best. I am curious and excited to be a part of this upcoming change and also would like to explore other unraveled spectrum for high performance computing by pursuing my Masters of Computer Science with this specialization. Coding is fun. When I strive hard for computation of any problem and reach my goal in the end, I feel myself blessed. Nothing other than this can make me happier. Initially my coding interests started with Logo which had a small turtle and it used to navigate on screen as per my commands and resulted in drawing geometrical figures. Later I was introduced to different languages like BASIC, C, C++ and Java. In India, board examinations occur at the end of 10th grade education, I was in the list of top five students for highest marks in Mathematics and Computers. An interest in programming since my school days led to a more serious endeavor, as I decided to do my undergraduate studies in Computer Science. I chose prestigious SRM University to study Computer science. Here I got enough exposure to several different languages Visual Basic, Visual C#, Advanced Java. I enjoyed studying Operating System. Here I faced challenges while writing code for Dining philosophers problem. In order to avoid deadlock I used pthreads, mutexes and synchronized all threads in such a way that all philosophers get to eat and waiting time for philosophers was minimized. Then I learnt Parallel Distributed Computing which had the most profound impact on me. I consider it to be my favorite course during my undergraduate. Till now my codes were executed serially but Parallel Computing helped me thinking in a broader way. It forced me to make the optimum use of all resources in the best possible way, so I decided to study this subject in more detail. In summer 2010, I worked as an Intern with Tata Computational Research Laboratory under the guidance of Mr. Millind Athavale and Mr. Biswajit Mishra. I worked on 2-D block cyclic matrix multiplication using Message Passing Interface (MPI). Initially I was unable to understand the order in which the values were taken by different processors and then gathered together but by exploring MPI and by comparing my dry run values with the values in rank processors I could understand the memory mapping of processors. Further I chose Canons Algorithm for implementing it because of the regularity of the algorithm; storage requirements remained constant and were independent of the number of processors. I wrote code for it using Message Passing Interface, C and tested it with matrices of different large sizes. Here I was able to see the concept of cache hit and miss at action which I had only studied in textbooks before. I divided matrix into blocks and tried to tune it to same size as of cache which reduced the cache misses. I further optimized it by using POSIX Threads for perfect synchronization between the threads using mutexes. I also did the benchmarking by comparing it with the serial execution of the Matrix multiplication for same data. I used four processors and saw significant improvements in time taken for execution. After this project I was very much clear in making optimum usage of resources henceforth my goal. In summer 2011, I started my final year project under the guidance of Mr. Nachiket Sahasrabudhe and Dr. Shrirang Karandikar at Tata Computational Research Laboratory. This was an Implementation of Basic Linear Algebra subroutines for Graphics Processing Units using OpenCL. Initially I had difficulties in using OpenCL and its terminology but my perseverance and simulation of intermediate output of status through my dry run made me learn OpenCL. I used OpenCL, C and CUBLAS. I also used linkers to create BLAS library that should run on every GPU Architectures. After implementation of BLAS level 1 subroutines I had tough challenge in optimizing it. I had to dig deep into the architecture of GPU to understand it. In order to optimize the code I tried several things like using shared memory for coalescing, Memory coalescing to global memory, compiler flags.Initially I couldnt match up with the speed of CUBLAS, so I checked the part of code that has maximum overheads.

Then I further optimized that part by reducing the iterations of for loop. Again we tried to reduce the time taken for addition at the cost of multiplication. I executed my code on NVIDIA Tesla because of their High Computational Power measured in FLOPS. I was able to reduce the time taken for execution which was very close to CUBLAS. Apart from getting exposure to GPU architecture and allied programming paradigms, this gave me exposure to scripting languages like Perl and Bash. I used Gnuplot for generating 2- Dimensional plots for showing the results in the best possible graphical way. I am glad to be a part of such innovative project. This project was adjudged as the Best Project in my university. It earned me lot of appraisals from the faculty. In summer 2012, I joined Accenture in Automation Testing Project under the guidance of Mr. Ameya Tuljapurkar. Here I used Tools like Quick Test Professional for creating the automated scripts for Regression Testing of the business scenarios, and Quality center for logging Defects. Here I got the exposure to see software engineering live right from Requirement phase, Design, Implementation, Verification, and Maintenance phases. I also got certified in Information Technology Infrastructure Library for better understanding of the business services. Here I was also able to improve my communication skills and learnt to grow and work in a team. Accenture also gave me a great opportunity to join NGO Activities. I gain much pleasure in bringing happiness to the needy. I visited several Orphanage and played games with them, entertained them. Currently I am working on another project under the guidance of Mr. Nachiket Sahasrabudhe. In this project we have decided that we will take those algorithms which require extra effort to gain the best output from GPU. I had started with benchmarking of GPU using Instruction Level Parallelism. Here I have reduced the architecture occupancy by reducing the number of threads but increased the work per thread by increasing the number of instructions for each thread. We were able to achieve better FLOPS at lesser occupancy. Now I am working on Boolean Matrix Multiplication using Four Russians Algorithm. Here we optimize the code by avoiding the computation part for all the cells which have value Zero in A matrix. We use a look-up table to populate the values in C Matrix. So far I have completed the serial code for Boolean Matrix Multiplication. It had few challenges like selection of non-zero cells for computation. I was able to achieve this using repeated dry-run. Going forward I will try to find the part of code that allows parallelism, then we will implement it on GPU by putting all necessary constraints. It is an ongoing project and I believe it will be useful in my further research in HPC. My interests have always been inclined towards Computer Architecture and Parallel Computing. I want to take my research work to the next level by doing graduate studies at University of Illinois at UrbanaChampaign. I have keen interest in the ongoing research SAFECode: Static Analysis For safe Execution of Code done by Professor Vikram S. Adve. Here we can develop code which will give much more freedom to programmers by ensuring memory safety. I would be very much privileged to work under him and to contribute to these researches. As Department of Computer Science at UIUC is highly renowned for its research in HPC, I strongly believe that doing my graduate studies at UIUC will help me gain comprehensive exposure and knowledge in my areas of interest, and also will boost my opportunity to attain my ultimate goal of becoming a HPC Industry researcher.