-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merging with IterativeSovlers.jl #1
Comments
Yes, merging the two packages would be very nice. This code is MIT license so can be freely used. Currently, the code for cg here is about a factor of 1.5 faster than the one in the IterativeSolvers package. There is a benchmark provided here if you want to give it a try. When merging the versions I would advise you to keep the level of abstraction rather low. My impression is that many in the numerical linear (that invent great iterative methods) are used to matlab. I think most of them will be unlikely to look at the code or provide their own methods if they have to spend too much time on understanding the type structure in IterativeSolvers. Here, we don't use types at all but focus on fast and reliable code. I have seen a very nice implementation by @dpo that is in between the abstraction here (none) and the one in IterativeSolvers. |
So you think that the cost is mostly in the human domain where we have to have code that people trained in matlab will be able to understand and contribute. Yes that is a real issue in the julia community right now. Striking a balance between being familiar to matlab/r/numpy users while doing things the "right" way. Which repo of @dpo are you referring to? It looks like his LinearOperator package would be generally useful for people writing all kinds of linear algebra algorithms. A good LinearOperator abstraction that worked well with deferred evaluation and had good performance could really give us unparalleled |
I don't think @dpo's package is publicly available at this time. He showed me his package during SIAM CSE and I saw that his CG using the LinearOperator package performs much(!) better in terms of memory consumption and runtime than the one in the InterativeSolver package and similar to mine. On top of that, his code looked very much like a text book description of a CG method. To me, the right way to code a cg (which is simple after all) is to have a reliable and fast implementation. |
I am happy to when the Julia code looks like the textbook code and yet gets On Thu, Mar 19, 2015, 7:03 AM Lars Ruthotto notifications@github.com
|
I'll try and make my package (
The factor of 2 with In all fairness, my package currently doesn't perform any preconditioning, so I'm also in favor of keeping the abstraction to a minimum and I believe |
Have a look at https://github.com/optimizers/Krylov.jl/tree/develop for a first draft. |
This is really great. I like the LinearOperators framework and how easy it is wrap a linear operator with storage for it to compute. Nice tradeoff between ease of use and memory efficiency. |
I agree, LinearOperators.jl is a great piece of work! Thanks, @dpo! I'm using it now in this package as well. |
Thanks guys! I just pushed a few updates to the |
👍 |
Where do these implementations win over the IterativeSolvers versions and can we merge them to a single common interface. Right now IterativeSolvers.jl also supports eigs and svds with the Lanczos method. If the only problem is allocation costs, then we should be able to take the best from each implementation. If there is a cost to abstraction or interface design, then we should figure out why that is.
The text was updated successfully, but these errors were encountered: