The Open Source Experience
The world of games not only helps people escape reality, but also immerses them into another world where reality is what they shape it to be. A proud alumnus of PSG, Mr. Pradeep Kumar (MSc. Theoretical Computer Science, 2015-20), talked to one of our correspondents about how he fell into the world of High Performance Computing through his love for games and shared some of his experiences with us. This is an excerpt of the interview with him:
Q. What are your interests? How did it all start?
Games. As a child, I always wanted to play games and my pursuit to enjoy them led me to GPU Programming/Computing. I had always wondered why I couldn't play a certain game on my PC. Why did I have to purchase a costly GPU card? My friends would irritate me when they got their hands on the baddest new game in town and so in the interest of games, I started exploring the world of GPU Programming, which in turn tipped me towards compilers. And ever since, I have been digging deep into OSS and its communities to learn more and get better at it.
Q. What was your first internship like at MulticoreWare? How did you get it and how was your experience?
I got the job off-campus. We almost did it for fun. GPU Computing was what attracted me to the company. I just sent an email, not having much thought for if I would get it. I soon found that they had considered my application. The projects I did there were helpful in shaping the way I approached my stint at GSoC. MulticoreWare had given me a project where I had to port NVIDIA CUDA libraries to run on AMD GPUs. This heavily influenced the project I had presented to CERN at GSoC that got me into the program.
Q. What is GSoC? What were your experiences with CERN?
GSoC is Google Summer of Code. It is a place where multitudes of students put up proposals to open source communities. If accepted and agreed upon by members of the community, you will be assigned a mentor from the community who will track your progress and help you through the process. Depending on the organization, you might have to go through a few tests after which your proposals will go through some scrutiny and discussion, helping and improving them. Once accepted, you will begin working on your proposals while being compensated by Google. I was looking for an organization that might be interesting and soon enough, I stumbled upon CERN’s projects page. I didn’t realise that CERN would have projects that were related to compilers. It was a great opportunity to get to work with a well-known organization such as theirs. I knew it would be hard, but I decided to put up two proposals on CERN’s project page. I ended up having to choose one and decided to work on it for the rest of the three months. We had weekly meetings to monitor our goals, but we were not micromanaged.
Q. How do students get into GSoC?
Communicating with mentors and project stakeholders while being familiar with the project puts you in a better position towards getting your proposal accepted. All online communities will have a standard platform that they use to discuss. Joining them, using IRC channels, Gitter, mailing lists and the like will help you put your first step into their organization. Most open source organizations tag their issues for people who are new to the project and those are great for first-timers. Try working on them to increase your familiarity with the project. There are a lot of blog posts from students and mentors alike that can shed more light on GSoC. Researching and reading about your organization will always help. What I usually do is test the project’s build system locally and see if it runs on my machine. If it doesn’t work, I put up an issue and create a pull request/merge request to solve this.
Q. Where else have you worked and where are you now?
I joined a startup called OptimusPrime Securities and Research LLP, a High Frequency Trading Company based in Bangalore. I got the opportunity to build a performant C++ framework from scratch where the goal was to build a highly performant and low latency automated trading system with modern C++. I did my work on the strategy front where the framework must decide on what stocks to buy, what to sell and so on, based on mathematical models and logic. The work there was exciting and different to what I had previously done. And on a more recent note, I joined NVIDIA as a System Software Engineer after graduation.
Q. NVIDIA? Tell us everything!
I always found college placements to be very stressful and felt like my skills weren’t really appreciated. So, I decided to apply off-campus. Due to my experience and liking for compilers, I tried applying to NVIDIA. This is where LinkedIn comes in. It is a great place to connect and get a job that surrounds your interests. The Director of Compilers at NVIDIA was building a new team at Bangalore that required new talent and I seemed to fit the bill. After a few rounds of interviews, I got in. My experience at NVIDIA, though short, has been great.
Q. What is your advice to students in the pursuit of greater knowledge?
As social beings, we learn more when we do it together. So, joining a community of similar minds gives one a kind of belonging and motivation to do cool things (where cool things do not sound cool outside the community). There are a lot of online meetup groups for all sorts of things from programming languages to sports to cooking. One can find meetup groups in meetup.com, facebook.com, reddit, discord etc. Twitter is also a great place to learn if you follow the right person. I find it a great place to learn C++. People in the C++ community share code snippets about a problem. Also, according to social network analysis, talking to people outside of your strong network (like friends and family) gives the opportunity to expand your horizon that would otherwise not happen.
If you're interested in joining such communities, here are some of my recommendations:
Google Developer Group (Coimbatore)
Programming Languages (Toronto)
C++ User Group (Munich)
Google Developer Group (Bangalore)
LLVM Group (Austin)
LLVM Group (Bangalore)
LLVM Social (Zurich)
TensorFlow User Group
Google Summer of Code (GSoC)
Semester Long Project (SLoP)
Major League Hacking (MLH)
Julia Seasons of Contribution (JSoC)
My favorite discords:
LLVM - https://discord.com/invite/xS7Z362
CPPIndia - https://discord.com/invite/V8uxmPp
Team Bridge would like to thank Mr. Pradeep Kumar for taking time off of his schedule to talk to us.