Editing User:Edu159
Jump to navigation
Jump to search
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 17: | Line 17: | ||
== C: Contact == | == C: Contact == | ||
'''* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave. ''We really want unique nicks. You might want to bold it.''''' | |||
nick: edu159 | nick: edu159 | ||
'''* Which time zone do you live in? Will that change over GSoC duration? ''Perhaps DST adjustment or a relocation. Note that both UTC and GMT are not aware of daylight saving time! Please state UTC+x or -x.''''' | |||
Time zone: UTC+0. It won't change during GSoC. | Time zone: UTC+0. It won't change during GSoC. | ||
'''* Please state the timeframe (in UTC+0) when you feel most comfortable working during GSoC. Where are your time buffers? ''Example: I usually code around 9.00 to 18.00 and could also try to start earlier (~7.00) for few days ;-)''''' | |||
I can code from 7:00-13:00 in May, June and first half of July from Monday to Thursday. On Fridays, Saturdays and Sundays I have almost the whole day free for coding. In the second half of July and August I have no timeframe restrictions. | I can code from 7:00-13:00 in May, June and first half of July from Monday to Thursday. On Fridays, Saturdays and Sundays I have almost the whole day free for coding. In the second half of July and August I have no timeframe restrictions. | ||
Line 37: | Line 37: | ||
I have only that kind of experience while doing some personal projects with a friend of mine, so I have not experience with such a large project and free software community. | I have only that kind of experience while doing some personal projects with a friend of mine, so I have not experience with such a large project and free software community. | ||
* '''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.''' | ||
I have dealt with projects with around 2.5-3k lines of code, not more. I don't have a extraordinary successful story about a project I have been in although I have been in lots of small ones. I worked the last year while in college with a friend on a website for informal job seeking done in PHP+MySQL (around 3K lines of PHP code). We even sent the idea to Ycombinator to get funding. Unfortunately we were not selected and the idea was not | I have dealt with projects with around 2.5-3k lines of code, not more. I don't have a extraordinary successful story about a project I have been in although I have been in lots of small ones. I worked the last year while in college with a friend on a website for informal job seeking done in PHP+MySQL (around 3K lines of PHP code). We even sent the idea to Ycombinator to get funding. Unfortunately we were not selected and the idea was not at good as we thought. I learned a lot with that project, particularly combining both college and a project at the same time, working regularly and establishing deadlines. | ||
* '''Please state the commits and patches you already contributed to Octave. ''This question (one of the most important parts by the way) is the only part of your application our wiki admins will edit for you even after the application deadline. Code sometimes speaks louder than many words do.''''' | * '''Please state the commits and patches you already contributed to Octave. ''This question (one of the most important parts by the way) is the only part of your application our wiki admins will edit for you even after the application deadline. Code sometimes speaks louder than many words do.''''' | ||
*Contributions to Octave: | *Contributions to Octave: | ||
** Patch submitted for bug [http://savannah.gnu.org/bugs/?41839 #41839] | ** Patch submitted for bug [http://savannah.gnu.org/bugs/?41839 #41839] (m-file) | ||
** Patch submitted for bug [http://savannah.gnu.org/bugs/?41796 #41796] | ** Patch submitted for bug [http://savannah.gnu.org/bugs/?41796 #41796] (c++) | ||
== F: Feeling fine == | == F: Feeling fine == | ||
Line 77: | Line 75: | ||
I like programming on Linux. | I like programming on Linux. | ||
* '''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.''' | ||
I | I have windows (native) and mac virtualized. | ||
* '''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''' | ||
** an internet connection --> ~18 hours a day | ** an internet connection --> ~18 hours a day | ||
Line 97: | Line 95: | ||
== Y: Your task == | == Y: Your task == | ||
My intention is upgrading some functions related with sparse matrices so they become compliant with Matlab and implement others that are not present in Octave right now. | |||
The functions are '''ichol''', '''ilu''', '''sprand''', '''sprandn''', '''sprandsym''', '''minres''' and '''lsqr'''. | |||
''' | *'''Approach:''' | ||
**'''ilu:''' That function has a big chunk of options and the last year was almost implemented by Kai Torben as his GSOC [http://siko1056-gsoc.blogspot.de/ project]. He interfaced Octave with ITSOL/ZITSOL libraries but in the end there were some issues with that approach: | |||
*'''ilu:''' | |||
:#ILUTP algorithm did not work for him | :#ILUTP algorithm did not work for him | ||
:#He had to patch the library to get things work | :#He had to patch the library to get things work, not nice for integration. | ||
:#modified versions of algorithms ("milu" option) were not implemented in the libraries | :#modified versions of algorithms ("milu" option) were not implemented in the libraries | ||
:#That "ugly" scenario lead to finally not being able to include ITSOL as a dependency with Octave. Bottom line, the integration of the function with the development\n repository could not be achieved. | :#That "ugly" scenario lead to finally not being able to include ITSOL as a dependency with Octave. Bottom line, the integration of the function with the development\n repository could not be achieved. | ||
::I have been in contact with Kai by mail and agrees that writing from scratch all the functions needed as oct-files (ILUTP, ILU0, ILUC and ILUT) would be a valid way to go. This way no dependencies are needed to be added and the overhead of translating the data from Octave to ITSOL and vice verse is eliminated. Algorithms will be taken from Yousef Saad's book "Iterative methods for sparse linear systems Ed. 2". Moreover, I can use some of the code that Kai wrote, mostly the tests, documentation and the m-file "ilu.m" that glue together all the functions. ITSOL source code is also a good place to look for some help. | |||
::I have implemented the ILU0 algorithm so far and benchmarked it against Matlab and Kai's last GsOC version(using ITSOL). The performance is great. You can check the code and see a table with the execution times in a blog I have created for the project([http://edu159-gsoc2014.blogspot.com.es/2014/03/ilu0-implementation.html link]) | |||
: | :*'''ichol:''' In this case things should be easier. Kai implemented the functions related with ichol from scratch and they works great. It would be only necessary to code the complex version and the modified version of the algorithms. There is one issue here with licenses I did not know at first and Kai pointed me out (see [http://edu159-gsoc2014.blogspot.com.es/2014/03/introducing-myself.html#bc_0_1B here]). It should be solved. | ||
*'''ichol:''' In this case things should be easier | |||
* | :*'''sprand/sprandn:'''I have already sent a [http://savannah.gnu.org/bugs/?41839 patch] for those functions that IMHO works, but it suffers from some performance issues for large matrices. Should be revisited by someone that really knows about that. I mailed Rik who appeared as author of the function and has told me that in a few weeks he maybe be able to revise the algorithm. So in the meanwhile I will focus on other functions. | ||
:*'''sprandsym:'''That function may be implemented following the strategy used in sprand, but I need to analyze closer. | |||
:*'''minres & lsqr:'''With the implementation of those ones I need a bit of guidance. I dont know if they must be implemented as m-scripts or in c++. I would say that they way to go is m-scripting them as ''gmres'' is implemented this way, and they are cousins. Anyway I found that this website are the place to look [http://www.stanford.edu/group/SOL/software/lsqr/ lsqr] [http://www.stanford.edu/group/SOL/software/minres/ minres]. The website is from the people that wrote the papers given as references in Matlab documentation. In the website there are several codes that can be used. I have mailed professor Michael Saunders about adapting them into Octave versions and he answered me that I am welcome to do while I respect the license (CPL or BSD licenses). He claimed that they are very unrestrictive but I've been told that they are not compatible with GPL3. I will need some insights about that. | |||
:'''->'''I think I have a clear road map of what I want to do but I don't know for sure if it will be enough for the GSoC period. There are other functions that I would like to implement if it would be necessary. Let me know what do you think about. | |||
*''' | *'''Estimated timeline:''' | ||
*''' | :*'''FIRST PERIOD:''' | ||
::''' | ::'''19 May:''' Start implementing ilu related functions. In the order ILUT, ILUC , ILUTP. | ||
::'''15 June:''' Write ILUT, ILUC, ILUTP automated tests, documentation and benchmarking. | |||
::''' | ::'''23 June:''' '''(Millstone 1)''' ilu funtion is fully funtional. Start coding ichol related functions (by this time license issues I mentioned should be resolved and a solid strategy should be set) | ||
::''' | ::'''27 June:''' '''Mid-ter evaluation''' | ||
::''' | |||
:*'''SECOND PERIOD:''' | |||
::'''15 July:''' '''(Millstone 2)''' ichol is functional. Write automated tests, documentation and benchmarking. | |||
::'''20 July:''' start implementing lsqr and minres | |||
::'''5 August:''' lsqr and minres implemented and tested. Start coding sprandsym and tweaking sprand/sprandn (maybe at this point they are already tweaked) | |||
::'''13 August:''' '''(Millstone 3)''' all the sp* functions are implemented | |||
::'''13-18 August:''' Buffer days for any unexpected situation or minor change that should be done. | |||
'''Note:''' I set schedule starting on May 19th but I would like to start coding since I know I am selected (22 April), so maybe goals would be reached before stated above. So that dates should be taken as | '''Note:''' I set schedule starting on May 19th but I would like to start coding since I know I am selected (22 April), so maybe goals are would be reached before stated above. So that dates should be taken as high limits. In June I have scheduled 3 exams that still not have fixed dates. I am not worried about them since I have a lot of time for studying. |