About CuPy
CuPy is an open-source matrix library accelerated with NVIDIA CUDA. It has NumPy compatible GPU library for fast computation in Python. CuPy has wide range of methods for scientific computations similar to that in SciPy. CuPy also support writing custom CUDA kernels which can be directly executed on GPUs.
Why I opted CuPy?
To be honest I come to know about CuPy from one of my senior. After that I searched about it and I found it very fasinating (one of the reason is that it involves GPUs). Before CuPy I was learning statistics and probability particularly about stochastic processes. So while searching for the issue I found one that CuPy is random distribution and also there were some open issues. As I am learning about random processes so I tried solving the issues. And while doing so I got to know much about CuPy.
Selecting topic to work on
I got to know about the project that CuPy is going to mentor on their wiki page. After reading that I asked more about project and topic listed on idea list on the CuPy’s community chat room on gitter. And that helped me a lot. After thinking a lot I decided to work on “Sparse linear algebra”, which is one the most important topic in the field of scientfic and mathematical community.
About my project
I am working on extending the coverage of the sparse linear algebra and will be adding the random distributions to Generator API of CuPy. I will be adding some of the basic iterative solvers for the sparse linear system.
Community Bonding Period
This is the best period to know about your mentor and to increase understanding about the organisation. I my first week, I got to know about my mentor Masayuki Takagi, I discussed about the expectation of mentor from me during GSoC. I implemented reshape
method for different sparse matrix format. And adding test for the same I faced lot of difficuly and I am not very much comfortable with the testing module of CuPy. But Masayuki helped me in writing test. He also cleared my doubt I have during this period.
Apart from this, during this period I come to know such a various applications of the matrix and about various methods to solve the problem involving them. I also tried learning CUDA programming during this period. But as community bonding period was about to end my morale was going down as I am unable to foucs properly. I asked for help from my mentor and he helped me in coming out of this phase.