Blog


Google Summer of Code 2018

Proposal acceptance and community bonding

Sunday, 13th May 2018.

  Artificial Intelligence today has become a word of mouth. From robotics to pathology, from voice recognition to market analysis, the world has noticed a significant progress in this technology. The variety of domains it encompasses is stretching beyond limits.

  But, with such progress comes a high demand for resources. The last decade has seen a tremendous increase in the applications of machine learning, thanks to the breakthrough paper by Rajat Raina et. al., Large-scale Deep Unsupervised Learning using Graphics Processors" which appeared in the proceedings of ICML 2009. Nvidia invented the Graphics Processing Unit (also known as Graphics Card) in 1999. It was meant to be a graphics processor and was very popular with PC gamers. It was only in 2007 that Nvidia introduced the CUDA programming platform, which enabled exploitation of the parallel processing capabilities of the GPU. Today, deep learning is entirely dependant on the availability of this powerful device.

  I had a desire to explore various domains of Machine Learning. In the process of doing so, I came across the library Flux, an ML library written in the Julia language. Flux is an excellent library, and I started using it for many of my ML projects. Not just that, I also tried contributing to Flux in order to make it better, and indirectly, suit my needs. I was informed that Flux does not provide proper GPU support. GPU computing was something pretty new to me. I decided to give it a try, and by and by, it got me interested.

  I wished to get the opportunity of practical exposure to this field. So, after a couple of interactions with my prospective mentor, Mr Simon Danisch, I submitted a proposal at Google Summer of Code 2018, to work on GPU kernels this summer. I proposed to work on the implementation and optimisation of GPU kernels for convolution, pooling, batch normalisation and matrix multiplication. In order to get myself familiarised, I also submitted a patch for implementation of max pool.

  I was very much elated for my proposal got accepted. The coding period begins on the 14th of May. Until now, I have been interacting with the community via Discourse and Slack. I also started working on my proposal a bit and created a naive implementation of matrix multiplication.

  I look forward to an excellent learning experience. Also, I hope my contributions to the Julia community will help increase its popularity. I am sure Flux would become a more attractive choice for machine learning enthusiasts after the summer.