[GSoC 2019] WEEK 1!

Hello everyone! Here comes the end of the first coding week. This blog is dedicated to present the progress that I have had during the past week.

  • PRs

This week the PR about ArrayComprehension is merged. #16845. This class is designed as an extension of list comprehension in Python, which enables the list comprehension with symbolic dimensions.

A new PR #16937 about the sparse array being cast to dense array in the case of derive_by_array is opened. But somes improvements are still needed. The challenge is to find an approriate method to override and perform a derivative correctly.

  • Issues

An issue #16911 is opened. It is in fact a discussion about implementing a NumPy-Like behavior in Array module. It is interesting because my mentor was, at first, not in favor of this implementation. But some differences of behavior between the Array module in SymPy and the one in NumPy did change his mind. So this implementation can be kept in my proposal and will be my tasks for the next phase.

Another issue #16941 whose aim is to list out all cases where a sparse array is cast to dense arrays is opened this week. Not only as a discussion, this issue would also be a overview of the problems so that the PRs like #16937 can refer to it. A checklist is being updated to show the avancement.

Please feel free to comment on the issues or the PRs that I opened. I would love to listen to your opinions.

  • Reviews

After the merge of ArrayComprehension, another student Gagandeep Singh opened a new PR to ameliorate the code quality of this class. I have also participated as a reviewer to offer some help. I have also leant a lot from the discussion.

  • Related works

Not much, due to the burden of projects in college.

[GSoC 2019]Brief report upon the progress over the community bonding period

Linear Algebra : Tensor Core

Overview

After the official announcement of selection result, I was happy to be one of the students to work with SymPy over this summer program. A first greeting between the the mentors and me was efficient. Since then, I have been preparing for the launch of the program: creating my personal blog, reading the codebase of SymPy, discussing with my mentors about some details of the proposal, contributing to a new class named ArrayComprehension. Thank to the help of my mentors and other contributors in the community, I understand better the workflow and some coding conventions. Besides, due to the constraint of spare time, I have had some difficulties at the beginning to arrange my timetable. Now I have a more reliable estimation about how many hours I can spend on the program while the college semester is not yet finished.

Progress regarding the project

  • My personal blog

Every student is supposed to maintain a blog on which one should update the progress of each week. I think it is also time for me to create a personal site as an access to introduce myself to the world. I used WordPress as the CMS(Content Management System). I wanted to have a first blog as a global presentation of GSoC, unfortunately I was too busy to do it.

  • Codebase of Sympy

I have read carefully the code of the Array module and have browsed the entire Tensor module. As for other modules, I only had a look at those that I would probably use in the during this project. By carefully, I would like to say that I tested each method by instantiating an example. Some debuggings were also helpful when I tried to understand the purpose of some codes.

However, I have to admit that I still have a lot of things to learn and to get familiar with. For example, I didn’t notice the coding convention of the constructor which passes the parameters to superclass in order to make sure the possibility of rebuilding the object. Because if the lack of experience, I may need help and guidance, in the most of time, from other contributors, especially from my mentors.

  • Discussion of proposal

I have created a documentation in which I specify some detailed questions about my proposal. For example, the NumPy-like syntax was something that I considered working on. But it turns out to be unnecessary to do so. Doc of questions This documentation will be continuously updated. It can serve as a tract of our discussion and some decisions that we make together.

Even though I didn’t have enough time to explore the task like Codegen and Integration over array, I hope that I can have a better view of these tasks before its beginning. After a discussion with me mentors, I can make sure that I have at least a clear understanding of the tasks over phase 1.

  • ArrayComprehension class

#16845 This class is not really planned in my proposal, yet it helps me a lot regarding the understanding of the codebase and some coding conventions. Its creation comes from the need of a symbolic list comprehension of two other students in the stats groupe. To be honest, these two students set me a good example during this period. Their dynamicity in contributing to SymPy becomes not only a stress but also an encouragement to me.

For now, the basic structure of ArrayComprehension is established, thanks to the review of Francesco and other contributors in the community. I will continue to working on it so that it would help the students of stats get over the problem.

Estimation of availability during phase 1

After the practice of the past three weeks, I think I found a feasible solution to schedule the work of GSoC and my regular timetable. I have to say that I recently changed the college, this brand-new life gave me as great a challenge as the one of GSoC. Moreover, I have 3 academic projects to do and 4 final exams to prepare. Thus, I would like to reduce my planning working time for the first phase, if I can have the agreement of my mentors. I will make sure the advancement of the project(as it is planned in the proposal), but I cannot be engaged with too much extra work during this period. Once the semester is over, I will make up for the shortage of working hours.

Monday Tuesday Wednesday Thursday FridaySaturdaySunday
2h
22:00 *-
24:00
4h
20:00 –
24:00

4h
20:00 –
24:00
4h
20:00-
24:00
4h
20:00 –
24:00
6h
3h + 3h
6h
3h + 3h

*Based on UTC+2
The average working hours would be 30h per week. Then I will work 50h per week next phase to ensure the 40 hours in average. That is totally possible since I will be on vacation.

Ameliorations and conclusion

Since the project will officially start in a very soon future, I would like to propose some possible ameliorations about myself, based on what I have done in the past three weeks.

  • Be more active in contributing

I have seen the two students in stats sent many PRs and contributed as well in reviewing other’s PRs. That would be a good example for me to follow. I can surely learn a lot from reviering other’s code.

  • Ask well-considered question but don’t be afraid to say it out

I always want to maintain a good impression of myself to others, which makes me hesitate a lot when I want to ask a question. I think it is better to face the weak points of myself rather than hide it. I am a newbie to the Open Source world, there are surely a lot of things to learn. Please forgive me, Francesco and Sartaj, if my questions seem silly to you.

  • Prepare for the next phase once it is possible

Due to my constraint of time, I could not prepare very well for the next phase, which makes me worried. It would be good if I can finalize the work of this phase 1 earlier so that I would have some extra time to think about the phase 2 and 3.