From Octave
Jump to navigation Jump to search

A: An introduction

  • I am Kai Torben Ohlhus, a computer science and engineering student in the final master semester from Hamburg, Germany. During my studies I specialized on software systems and communication networks and discovered a passion for computer arithmetic and algorithms, which will now be topic of my master thesis. I speak German (native), English (fluent) and Spanish (basic).
  • My intention to participate in the GSoC 2013 is to work on a software project that can be part of my master thesis, which will begin in April. Till now I have not participated in any GSoC and this year will be my last chance to do so.
  • The choice for Octave came during the planning of my thesis schedule. My master thesis will deal with accurate fast scalar products. The modification of an dot product algorithm [1, p. 8] [2], which makes use of FMA-instructions [3] (which will soon be available on ordinary PCs Intel and AMD) is the starting point to create a routine to efficiently compute residuals (thus matrix vector products) of the form r_i = (A_i, -1) * (x , b_i)^T. The next step is to optimize them to be used with big sparse A matrices. To make the use of the routines available to many possible applications e.g. MATLAB or GNU Octave routines by using the MEX-Interface or Oct-Interface. However, I prefer free software (Thank you Jordi for correcting my terminology) where I have access to the source code and freedom to modify it, rather than only to a sparse documentation. So don't be afraid to disapprove my application, I'll stick to Octave.

C: Contact

  • I know how to use IRC and I will be online as often as possible under the nick siko1056 on #octave.
  • GMT+02:00 (CEST)
  • I use to work from 10.00 to 18.00 +/- 2 hours.

E: Coding experience

  • Since the beginning of my studies (so more than four years) I work with C, C++, and m-scripts. I attended many courses and laboratories dealing with these three languages. From my 3rd semester on I have been tutoring these courses: Laboratory course (MATLAB), Computer Programming (C) and Introduction to Programming (C). I have some experience with Qt4. With OpenGL I have no experience so far, I worked with SDL.
  • Other languages of my studies were Java and web applications (JSP and Servlets). Because I use GNU/Linux as my day-to-day OS, I know BASH-scripting and for FPGA-Programming I worked with VHDL a lot. Additionally I created many documents using LaTeX.
  • Nearly all programming laboratories at university were solved in a team, making use of version control systems and organization techniques like scrum.
  • My biggest project so far was searchbooster a desktop document search tool based upon Apache Lucene and Apache Tika. It was developed in a team of four students, including me, using scrum, Subversion (at Google Code now GIT) in a time of three months. I learned, that an interface is something that should never be broken (if possible) and a proper code and comment style saves a lot of time!
  • I have not contributed to Octave so far.

F: Feeling fine

  • IRC I don't use that often and I read some mailing lists.
  • Concurrent versions systems like GIT, Subversion and Mercurial are well-known.
  • I successfully installed a Mediawiki on my homepage once and I'm familiar with Wikipedia.
  • make, gcc, gdb, javac and IDEs (e.g. Eclipse) I worked a lot with
  • It would make me happy and stay I see that my work is used in the stable regular releases of Octave!

O: Only out of interest

  • Since I got to know MATLAB in my first semester, I also got to know about Octave and other numerical software environments. At my university we have free MATLAB student licences and thus many courses are dealing with MATLAB (but I figured out, that you can nearly run all m-files in Octave too). No other questions arose so far.

P: Prerequisites

  • My operating systems: Ubuntu 12.04.2 (64 bit) and Windows 7 (64 bit).
  • Root access, no time restrictions.
  • All day internet connection.

S: Self-assessment

  • As far as I can assess my coding behavior, it is more defense:
    • I don't like to delete work (think before coding).
    • I code in small revertible portions and like testing these steps to avoid above.
    • I like to find out more efficient ways to do something (so critic is welcome, I want to learn).
    • Sometimes I strive for perfection (not always useful, you get stuck unnecessarily).

Y: Your task

  • The task I would like to combine with my master thesis is Incomplete sparse factorizations ichol, ilu. It may sound contradicting to implement approximation algorithms, when trying to implement accurate ones. My main reason to work on this project is to get more in touch with efficient ways of how to access big sparse matrices and how to work with the Octave-Interface. After the GSoC I want to apply this knowledge to deal with accurate matrix-vector products.
  • My suggested schedule looks as follows (critics are welcome):
    • 04 Mai - 16 June: Getting to know Octave and required algorithms in depth (much Mentor consultation to get the task right)
    • 17 June - 02 August [Coding begins to Midterm]: Mostly autonomous implementation phase. First working implementations.
    • 03 August - 16 September [Pencils down]: Everything fully implemented and tested according to Mentor consultation.

For more information of my progress have a look at my blog.