Editing User:LYH

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 13: Line 13:


* '''Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?'''
* '''Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?'''
:I am a technical enthusiast and has been using several opern source project in my research. So I want to contribute to open source organization via participating GSoC. In addition to the opportunity that cooperate with open source group, I hope to gain experience with Octave IR, JITC internal and JIT optimizations (trace/method-based compilation … etc).
:I am a technical enthusiast and has used serveral opern source project in my research. So I want to contribute to open source organization via participating GSoC. In addition cooperating with open source group, I hope to gain experience with Octave IR, JITC internal and JIT optimizations (trace/method-based compilation … etc).


:* '''Please also describe your previous experience with the GSoC.'''
:* '''Please also describe your previous experience with the GSoC.'''
::I applied GSoC last year so I am familiar with how this program goes.
::I have applied GSoC last year so I am familiar with how this program goes.


* '''Why are you choosing Octave?'''
* '''Why are you choosing Octave?'''
:I noticed that Jordi Gutiérrez Hermoso post an idea related to JIT compiling on GSoC discuss group. Since I have some experience using LLVM JIT to improve runtime system performance. I want to improve Octave JITC and further make it my research thesis.
:I have noticed that Jordi Gutiérrez Hermoso post an idea related to JIT compiling on GSoC discuss group. Since I have some experience using LLVM JIT to improve runtime system performance. I want to improve Octave JITC and further make it my research thesis.


== C: Contact ==
== C: Contact ==
Line 39: Line 39:


* '''Please describe your experience with other programming languages.'''
* '''Please describe your experience with other programming languages.'''
:I used Verilog to implement a MIPS CPU with multiple-stage pipeline and cache before. Hardware description language is not difficult to me. Besides, I have some experience in Java and C#. Because my primary working environment is Linux, I also use shell script and Perl to simplify daily routine.
:I have a lot of experience in Java, a large part of my contribution to Scilab was made in the language, in addition, I also developed some applications for small and medium size. I also have extensive experience in web development, especially with PHP, HTML, CSS and SQL. I did a lot of modifications on the shareware platform Vbulletin (PHP + MySQL). //


* '''Please describe your experience with being in a development team. Do you have experience working with open source or free projects?'''
* '''Please describe your experience with being in a development team.'''
:I have experience working with QEMU and have submitted several patches.
:I developed some jobs to automation robots, applying some genetic algorithms. These works have been developed in a team of 6 developers in laboratory automation at my university, we met in the lab three times a week and we communicated by IRC, managing code with GIT. Most parts of the development in Scilab also required group work, for this I used mailing lists and IRC. //


* '''Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.'''
* '''Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.'''
:My biggest project is “VNC (VirtualNetwork Computing) on EFI (Extensible Firmware Interface)”. We can remote control the other computer without entering OS. As far as I know, there is no one do the project I did. So I met many problems and there was no relevant information on web. I needed to rely on my background knowledge about BIOS and System Software and solved these issues by myself. I learned not only EFI skill but also the ability to find the solution of problems during the project.
:My biggest project is “VNC (VirtualNetwork Computing) on EFI (Extensible Firmware Interface)”. We can remote control the other computer without entering OS. As far as I know, there is no one do the project I did. So I have met many problems and there is no relevant information on web. I use background knowledge about BIOS and System Software to solve these issues by myself. I learned not only EFI skill but also the ability to find the solution of problems during the project.  
 
* '''Please state the commits and patches you already contributed to Octave.'''
:Octave JIT doesn’t work with LLVM 3.2 because LLVM API incoherence. I have submited a patch to resolve this. https://savannah.gnu.org/bugs/index.php?38564


== F: Feeling fine ==
== F: Feeling fine ==
* '''Please describe (in short) your experience with the following tools:'''  
* '''Please describe (in short) your experience with the following tools:'''  
:* '''IRC and mailing lists'''
:* '''IRC and mailing lists'''
::I have used IRC and mailing lists for several years. In fact, I have talked with Octave mentor about my project on IRC already.
::I have used IRC and mailing lists for several years. In fact, I have talked with Octave mentor about my project on IRC.


:* '''Mercurial or other source code management systems'''
:* '''Mercurial or other source code management systems'''
::I usually use Git and Subversion. But I think it may not too dificult to migrate to Mercurial. And I have used hg to format my patch submitted to Octave.
::I usually use Git and Subversion. But I think it may not too dificult to migrate to Mercurial. And I have use hg to format my patch submitted to Octave.


:* '''Mediawiki or other wiki software'''
:* '''Mediawiki or other wiki software'''
::None before. But I use it when I post this proposal :)
::None before. But I use it during post this proposal :)


:* '''make, gcc, gdb or other development tools'''
:* '''make, gcc, gdb or other development tools'''
::I use make to automate build process, gcc to compile and gdb to debug almost erery day. Besides these development tools. I also use Cmake for cross platform build system, clang/LLVM to compile. Learning new development tools is not hard to me.  
::I use make to automate build process, gcc to compile and gdb to debug almost erery day. Besides this development tool. I also used Cmake for cross platform build system, clang/LLVM to compile. Learning new development tools is not hard to me.  


* '''What will make you actively stay in our community after this GSoC is over?'''
* '''What will make you actively stay in our community after this GSoC is over?'''
:In fact, a summer is too short to implement all my idea. I would need to continue contributing to complete all my goal. On the other hand, The project I proposed has highly relationship with my field of study (LLVM, compiler, interpreter). So I am willing to join Octave JIT project constantly.
:In fact, a summer is too short to implement all my idea. I would need to continue contributing to complete all my goal. On the other hand, The project I proposed has highly relationship with my professional (LLVM, compiler). So I am willing to join Octave JIT project constantly.


== O: Only out of interest ==
== O: Only out of interest ==
* '''Did you ever hear about Octave before?'''
* '''Did you ever hear about Octave before?'''
:Yes I did.
** '''If so, when and where? How far have you been involved already?'''
** '''If so, when and where? How far have you been involved already?'''
::I noticed Octave when I used proprietary Matlab in my school last year.
::Yes, I do noticed Octave when I use property Matlab in my school last year.


** '''What was the first question concerning Octave you could not find an answer to rather quickly?'''
** '''What was the first question concerning Octave you could not find an answer to rather quickly?'''
::The build process. I did not know that I need run ./bootstrap first until I read etc/HACKING. Because I usually run autogen and configure directly.
::The build process. I do not know that I need run ./bootstrap first until I read etc/HACKING. Because I usually run autoregen and configure directly.


== P: Prerequisites ==
== P: Prerequisites ==
* '''Please state the operating system you work with.'''
* '''Please state the operating system you work with.'''
** '''If you have access to more than one, please state them and the conditions under which you are granted this access.'''
** '''If you have access to more than one, please state them and the conditions under which you are granted this access.'''
::Usually Linux. But sometimes I work with Mac OSX and Windows if I need to test a program on variant platforms.
::Usually Linux. But I could work with Mac OSX and Windows if I need to test on variant platform.


* '''Please estimate an average time per day you will be able to ''(if separated)'' access'''
* '''Please estimate an average time per day you will be able to ''(if separated)'' access'''
Line 90: Line 86:


* '''Please describe the degree up to which you can install new software on computers you have access to.'''
* '''Please describe the degree up to which you can install new software on computers you have access to.'''
:I have my own macbook. So I could install all softwares I need.
:I have my own macbook. So I could install all softwares if I need.


== S: Self-assessment ==
== S: Self-assessment ==
* '''Please describe how useful criticism looks from your point of view as committing student.'''
* '''Please describe how useful criticism looks from your point of view as committing student.'''
:Concrete and clear. Sometimes with example.  
:Criticisms are essential in group work, because people are able to share knowledge, and can bring improvements to the development process. //


* '''How autonomous are you when developing?'''
* '''How autonomous are you when developing?'''
:Give me a project direction. I could find what I need from Google, Stack Overflow, IRC and mailing list. If information is not available on web or book, I would rely on my background knowledge to analyze problem and further solve it. 
:* '''Do you like to discuss changes intensively and not start coding until you know what you want to do?'''
:* '''Do you like to discuss changes intensively and not start coding until you know what you want to do?'''
:* '''Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?'''
:* '''Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind?'''
::I like to dicuss direction first and reinterpret in my words. Then ask others whether my understanding is correct. And I would start writing small program to prove my concept. If the work doesn’t match the goal, I would thrown it away early rather then coding for thousands of code and hard to debug.
::I like to dicuss direction first and reinterpret in my words. Then ask others whether I understand well. And I would start to write small program to prove my concept. If the work doesn’t match the goal, I would thrown it away early rather then coding for thousands of code and hard to debug.


== Y: Your task ==
== Y: Your task ==
* '''Did you select a task from our list of proposals and ideas?'''
* '''Did you select a task from our list of proposals and ideas?'''
:Yes I did.


:* '''If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information.'''
:* '''If yes, what task did you choose? Please describe what part of it you especially want to focus on if you can already provide this information.'''
    http://wiki.octave.org/Summer_of_Code_Project_Ideas#Improve_JIT_compiling
::I choose “Improveing JIT compiling” project, focusing on “Enhance JITC functionality” and “Migrate from LLVM JIT to LLVM MCJIT”. Current JITC lacks some feature. In addition disablility of built-in function linking, JITC cannot work with matrice data type but only scalar type. I want to concentrate on expanding JITC to handle this non-trivial but fundamental case. Second, I would begin to migrate from LLVM JIT to LLVM MCJIT. JITC use JIT now, however LLVM community has no longer maintain JIT and move on MCJIT. I think we could move on MCJIT (and still support JIT). This is really important if we want to get the benefit from LLVM subsequently.
::I selected “Improveing JIT compiling” project, focusing on “Enhance JITC functionality” and “Migrate from LLVM JIT to LLVM MCJIT”. Current JITC lacks some feature: Functions and exponents (e.g. 2^z) cannot compile with the JITC. I want to concentrate on expanding JITC to handle this non-trivial but fundamental case.  
::When all essential case has been added, I would try to implement some JIT related optimization into JITC (like trace/method-based JIT).
::Second, I would begin to migrate from JIT to MCJIT. JITC use JIT now, however LLVM community has no longer maintained JIT and move to MCJIT. I think we could move to MCJIT as well (but still support JIT). This is really important if we want to get the benefit from LLVM subsequently.
::When all essential case is added, I would try to implement some JIT related optimization into JITC (like trace/method-based JIT).


*'''Please provide a rough estimated timeline for your work on the task. This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). Optionally include two or three milestones you expect.'''
*'''Please provide a rough estimated timeline for your work on the task. This should include the GSoC midterms and personal commitments like exams or vacation ("non-coding time"). Optionally include two or three milestones you expect.'''


:During the GSoC period. I would focus on "Enhance JITC functionality". "Migrate from LLVM JIT to LLVM MCJIT" would be completed in free time.
:*[[May 27 - June 17:]]
 
::At this time I want to talk to my mentor about the project to try to argue about new proposals and ideas that try to absorb and improve other existing projects, thinking about my strategies to work faster. In addition to performing more tests on some functions.
:*[[Community Bonding Period]] '''(May 27 - Jun 16)'''
::I'm looking to contribute in some way in bug list and other requests from the Octave team and I can do it intensely during this period.
::Get to know mercury, octave JITC code base. Deploy development environment and create a wiki page/blog to record progress.
 
:*[[Week 1]] '''(Jun 17 - Jun 23)'''
::Write a piece of code to prove how JITC compile functions.


:*[[Week 2,3]] '''(Jun 24 - Jul 7)'''
:*[[June 18 - July 02:]]
::Implement the functionality that JITC compile functions.
::Seeing things that have already been made, make small changes and fixes. Working in visual selection of individual points and curves.


:*[[Week 4,5]] '''(Jul 8 - Jul 21)'''
:*[[July 03 - July 17: ]]
::Write test-case, test and debug.
::Working in the individual surfaces.


:*[[Week 6]] '''(Jul 22 - Jul 28)'''
:*[[July 18 - August 01:]]
::Write document, wiki and prepare for midterm evaluation.
::An insight into a graphics editor for manipulating plots.


:*[[Week 7]] '''(Jul 29 - Aug 4)'''
:*[[August 02:]]
::Write a piece of code to prove how JITC compile exponents.
::Mid-term evaluations deadline


:*[[Week 8,9,10,11]] '''(Aug 5 - Sep 1)'''
:*[[August 03 - August 31:]]
::Implement the functionality that JITC compile exponents.
::Development of tools for manipulating plots.


:*[[Week 12,13]] '''(Sep 2 - Sep 15)'''
:*[[September 01 - September 15:]]
::Write test-case, test and debug.
::Improving the tools that are in progress and integrates them with the tools that I developed.


:*[[Week 14]] '''(Sep 16 - Sep 22)'''
:*[[September 16 - September 23:]]
::Write document, wiki and prepare for final evaluation.
::“Pencils down” date. Leave everything well documented for final evaluation. (review the work, run tests and correct any bug)


:*[[Future]] '''(Sep 23 - )'''
:*[[September 24 - September 27:]]
::Implement JIT related optimizations into JITC
::Preparing sample codes to submit to Google, discussing them with my mentor and Scilab community.


[[Category:2013]]
[[Category:Summer of Code 2013 Applicants]]
[[Category:Applicants]]
Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)