Hacker News new | ask | show | jobs
by bearzoo 2253 days ago
Oh? I don't suppose that julia wraps lapack functions for no good reason. What makes you say this
1 comments

A lot of the wrappers are largely legacy at this point. BLAS1 and BLAS2 operations are handled in pure Julia through the broadcast system, there's no performance degradation there and the fusion of operations actually makes for a lot of performance advantages over simple BLAS calls. For BLAS3, tools like LoopVectorization let you write a pure BLAS3 in Julia and get good performance, Gaius.jl is a good example of this by matching OpenBLAS with pure Julia code. Of course you still have to write out how to do blocking, but that's about it. At this point it's mostly needing more coverage before deprecating BLAS bindings in a Julia 2.0 down the line.

https://github.com/MasonProtter/Gaius.jl

Thanks, that is pretty impressive
I'm the dev of Gaius.jl. I'm not sure it will ever end up Julia's Base, but I think of it as a prototype implementation that might inspire (or possibly evolve into) a real implementation that could end up being bundled in the language eventually.

Julia really does have the tools to solve this problem natively, and they're maturing quite a bit more quickly than I ever would have guessed a year ago.

Last year if you had asked me I would have predicted the development of something like LoopVectorization.jl as appearing maybe by 2022 or something. Instead it's here now, albeit with a lot of work ahead to make it more robust.