GSOC 14 Application Matrix functions Project

220 views
Skip to first unread message

Johan Stenberg

unread,
Mar 3, 2014, 5:32:50 AM3/3/14
to juli...@googlegroups.com

Hi,

My name is Johan Stenberg and I'm pursuing a Masters in  Computer Science at the Royal Institute of Technology in Stockholm, Sweden. To this summer, I'm done with my third year. I've been following the mail list since I saw Julia were accepted to GSOC 14 (congratulations!), and I've been looking a bit on the Matrix functions project. I have no previous experience of Julia but I think I would be a perfect fit for the project, the language looks really good and especially the parallelism makes me think that this is a language that's going to stick around. My previous experience lies in Java but I have an interest for linear algebra, numerical analysis and discrete math. These are subjects which we have had courses about in school as well, so my knowledge pretty much reflects the basics of the subjects, no more, no less.

Now, I've been reading the emails about GSOC, that you should fix one or more "up for grabs" issues. I've been looking and poking around but no issue seems simple enough to fix in the given time frame, at least not anybody who have no prior experience with the core mechanisms of Julia. Is it possible to discuss the project with someone and apply even though I haven't fixed any issues? Do the community have a lot of applying students for GSOC?

Best Regards,

Johan

Braden Groom

unread,
Mar 3, 2014, 10:40:32 AM3/3/14
to juli...@googlegroups.com

I know that I plan on sending in a proposal to Julia.  I'd like to know if there is any specific information that mentors are looking for on proposals if anybody knows. Thanks!

Stefan Karpinski

unread,
Mar 3, 2014, 10:53:32 AM3/3/14
to Julia Dev
Hi, guys. Getting engaged with and contributing to the community is the most important thing, so definitely write some code. Making changes to the julia repo can definitely be a bit daunting. Fortunately, it's not a requirement for engagement – some of the most active people around here build great packages but don't actually make a ton of changes to base Julia itself (e.g. John Myles White and Daniel C. Jones). We need both – people working on the language and people building great things with the language. So if you're looking to get involved but none of the up-for-grabs issues strike your fancy, then try contributing a popular package or create a new package that does something useful and/or interesting. If you create a new package, send an email to the julia-users list (or the julia-dev) list with a link to the repo so people can check it out.

Stefan Karpinski

unread,
Mar 3, 2014, 10:57:06 AM3/3/14
to Julia Dev
On Mon, Mar 3, 2014 at 10:53 AM, Stefan Karpinski <ste...@karpinski.org> wrote:
try contributing a popular package

Erm, "try contributing to a popular package". Asking for students to create entire popular package is a bit more than I intended.

Stefan Karpinski

unread,
Mar 3, 2014, 11:13:44 AM3/3/14
to Julia Dev
On Mon, Mar 3, 2014 at 5:32 AM, Johan Stenberg <johanst...@gmail.com> wrote:
I've been following the mail list since I saw Julia were accepted to GSOC 14 (congratulations!), and I've been looking a bit on the Matrix functions project.

Specific to this point of interest, you should get into that thread and see if Jiahao can recommend one of those functions for you to take a crack at. You don't need to finish it, but seeing some code is important. Fundamentally, accepting students for GSoC is a lot like hiring someone and I wouldn't hire anyone without seeing them code first.

Jiahao Chen

unread,
Mar 3, 2014, 11:51:48 AM3/3/14
to juli...@googlegroups.com
Probably the easiest one to start with is the matrix logarithm (logm).
The algorithm is documented in this paper:

http://eprints.ma.man.ac.uk/2015/01/covered/MIMS_ep2012_72.pdf

which you will want to (make a reasonable attempt to) understand,
especially the basic algorithm outlined in Algorithm 2.1. It's unclear
to me how much linear algebra you've had exposure to, but you'll want
to be familiar with things like Sylvester's equation and the Schur
factorization, and figure out how to get Julia to compute them. You'll
be in excellent shape for this project if you can show us a basic
implementation of 2.1 before the GSoC application season is over.

(Eventually you will want to work your way up to the practical
algorithms of Algorithms 5.1 and 6.1. There is also a BSD-licensed
implementation at Matlab Central which you could translate into Julia
without too much difficulty (this particular file implements both logm
and its Fréchet derivative), and also rewrite it to make it more
Julian.

http://www.mathworks.com/matlabcentral/fileexchange/38894-matrix-logarithm-with-frechet-derivatives-and-condition-number/content/logm_frechet_real.m
)

Thanks,

Jiahao Chen, PhD
Staff Research Scientist
MIT Computer Science and Artificial Intelligence Laboratory

Prashanth Srinivasan

unread,
Mar 3, 2014, 12:32:07 PM3/3/14
to juli...@googlegroups.com
When I read the project description of matrix functions, a doubt struck me. 
There are quite a few ways to define exponentials on matrices - e^A, where A is a matrix. 
I am referring to this paper in particular : 

I think the description needs to be clearer with regards to this. 

PS : I'm a student who wants to work on this project. Can someone help clarifying 
issues with regards to this. This will go a long way in my proposal. 

Thanks,
Prashanth. 

Stefan Karpinski

unread,
Mar 3, 2014, 12:49:50 PM3/3/14
to Julia Dev
On Mon, Mar 3, 2014 at 12:32 PM, Prashanth Srinivasan <prash...@gmail.com> wrote:
When I read the project description of matrix functions, a doubt struck me. 
There are quite a few ways to define exponentials on matrices - e^A, where A is a matrix. 
I am referring to this paper in particular : 

I think the description needs to be clearer with regards to this. 

PS : I'm a student who wants to work on this project. Can someone help clarifying 
issues with regards to this. This will go a long way in my proposal.

That paper discusses 19 different ways to compute the matrix exponential, not different ways to define what the matrix exponential is. The definition of the matrix exponential is quite clear: https://en.wikipedia.org/wiki/Matrix_exponential. How to best compute that function is more difficult. These projects aren't class assignments – if a project description is ambiguous, then part of the project is figure out the best way to resolve that.

Jiahao Chen

unread,
Mar 3, 2014, 1:01:37 PM3/3/14
to juli...@googlegroups.com
What Stefan said.

There is only one correct definition of the matrix exponential in
terms of the usual power series and it is absolutely convergent, so
there is no question of its existence and uniqueness. However in
practical computations one would not want to COMPUTE the matrix
exponential in this way, as Moler and Van Loan have demonstrated with
some cleverly chosen bad examples. I should also point out that expm
is already implemented, using Al-Mohy and Higham's algorithm which is
significantly newer than the Moler and Van Loan paper. I'd be
interested to see if you can find an example for which our current
implementation performs poorly on.

> I think the description needs to be clearer with regards to this.

I've already cross-referenced the tracking issue literature for the
specific algorithms we are looking to have implemented, so I am at a
loss as to how the scope of the project could be made clearer. We want
those specific algorithms implemented and tested, and have some
reasonable discussion about its user interface, which can happen once
people get familiar with Julia and its idioms.

> PS : I'm a student who wants to work on this project. Can someone help
> clarifying
> issues with regards to this. This will go a long way in my proposal.

We will apply the same criteria for every interested applicant. Your
job is convince us that you will complete the project and wow us with
the results.

If you've followed this thread, you will see that I have already
suggested what I think is a reasonable thing to try to implement in
Julia in about a week, even for someone who is new to Julia. I've even
outlined what specific background would be desirable. If you're
interested but lack the background, now would be an excellent time to
start learning.

In your GSoC application, show us the code you have written. Ideally
it should be a correct implementation of something, but you should at
the very least convey to us that you have made a reasonable attempt to
try, and if the code does not work, have some clue of why it is broken
and how you can fix it.

For more numerically oriented projects like this one, convince us that
you have the necessary mathematical background, or at least the
willingness to pick it up as you go along. How you intend to
demonstrate this to us, we leave up to you.

Thanks,

Jiahao Chen, PhD
Staff Research Scientist
MIT Computer Science and Artificial Intelligence Laboratory

Thanks,

Jiahao Chen, PhD
Staff Research Scientist
MIT Computer Science and Artificial Intelligence Laboratory


Reply all
Reply to author
Forward
0 new messages