Linear Algebra : Tensor Core
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.
3h + 3h
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.