Use of Vector Libraries

Dear all,

TLDR: Are bindings to external vector math libraries still a thing?

I am still very new to Julia, but rapidly progressing in search of speed.
In this quest I found and used AppleAccelerate to great success, but of course it only works on Mac.
Now I want to move some of my computations on a linux tower, and initially thought I could just swap out AppleAccelerate with Yeppp or VML.

However, Yeppp does not contain a sqrt function, and VML.jl appears to be abandoned. The same appears to be the case for Vectorize.jl. Both VML and Vectorize have some only very few recent issues and no responses .

Fixing Vectorize might be as easy as making a .toml from the REQUIRE file (I think?), but I was wondering whether these packages still make sense to use or are just a relic from before Julia 1.x.
I personally saw a significant improvement from using AppleAccelerate compared to broadcasting for large enough vectors, but maybe I am missing something?

Essentially I am wondering if those packages were abandoned because that is what happens, or because some development in Julia made them obsolete.

I think the former.

Right now, I don’t think there are any cases where special functions get vectorized so if that is important for you, updating those packages would probably be a good way forward.

1 Like

Thank you, that is what expected. I think I updated most of VML.jl yesterday, so that it runs on Mac and Linux. Vectorize also kinda works now.
Once I have done a bit more testing I will look into how to make them generally available.


Would be great if VML.jl could be updated.

One readme question is: does using MKL.jl now install what’s necessary for VML.jl?

The current version assumes MKL to be installed separately and added to the appropriate system paths.

I have not used Julia with MKL yet for time and risk reasons, but in about a month I think I will give it a look and try to improve VML.jl.

So far I am thinking proper Plattform detection and absolute linking of the dynamic libraries at build, so that MKL does not have to be on the path.
But making it work with MKL.jl would be great as well.

1 Like

I have now updated the package and it works on linux and macOS. It turns out that MKL.jl does indeed add the necessary functions already, so using VML.jl with MKL.jl should work anywhere.

I have also added detection for avx2 support.

As first time open-source contributor, I am unsure how to proceed, but will try to get it merged into the JuliaMath repository.