# \[ANN\] IntelVectorMath.jl (revived VML.jl)

**URL:** <https://discourse.julialang.org/t/ann-intelvectormath-jl-revived-vml-jl/33249>\
**Category:** Package Announcements\
**Created:** [January 11, 2020, 10:09pm UTC](https://discourse.julialang.org/t/ann-intelvectormath-jl-revived-vml-jl/33249 "2020-01-11T22:09:05Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Crown421](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/crown421/32/9984_2.png) [@Crown421](https://discourse.julialang.org/u/Crown421)\
**Post date:** [January 11, 2020, 10:09pm UTC](https://discourse.julialang.org/t/ann-intelvectormath-jl-revived-vml-jl/33249/1 "2020-01-11T22:09:05Z")

</div>

Dear all,

I am excited to be able to announce the revived VML.jl as  
[IntelVectorMath.jl](https://github.com/JuliaMath/IntelVectorMath.jl)

> **[GitHub - JuliaMath/IntelVectorMath.jl: Julia bindings for the Intel Vector...](https://github.com/JuliaMath/IntelVectorMath.jl)**
>
> Julia bindings for the Intel Vector Math Library. Contribute to JuliaMath/IntelVectorMath.jl development by creating an account on GitHub.

This package provides easy access to the vectorized versions of common math function from the Intel Vector Math Library, which is part of Intel MKL. As such, it currently requires that either the MKL.jl package has been installed, or standalone MKL from the Intel website.  
These functions are often much faster than broadcasting the Base functions, as benchmarked by @Amin_Yahyaabadi.

In the future I hope to use the new artifact system to make the system handle the binaries itself and in the process learn more exciting things.

We are happy to take any comments or suggestions.

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [January 11, 2020, 11:46pm UTC](https://discourse.julialang.org/t/ann-intelvectormath-jl-revived-vml-jl/33249/2 "2020-01-11T23:46:46Z")

</div>

I think it’s irresponsible to write the following in the README:

> To use IntelVectorMath.jl, you must have the shared libraries of the Intel Vector Math Library available on your system. The easiest option is to use [MKL.jl](https://github.com/JuliaComputing/MKL.jl) via

```julia
julia> ] add https://github.com/JuliaComputing/MKL.jl.git

```

Installing MKL.jl will cause the user’s **sysimage to be deleted and rebuilt with MKL instead of OpenBLAS** , so if a curious user just wants to give your package a spin and runs the above snippet without going to the MKL.jl github page and understanding what it does, they could break their julia installation and run into some rather mysterious bugs.

I opened a PR that would change this, but I figured I should post here as well for the benefit of users in the meantime.

---

<div class="post-metadata">

**Author:** ![Crown421](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/crown421/32/9984_2.png) [@Crown421](https://discourse.julialang.org/u/Crown421)\
**Post date:** [January 12, 2020, 11:41am UTC](https://discourse.julialang.org/t/ann-intelvectormath-jl-revived-vml-jl/33249/3 "2020-01-12T11:41:54Z")

</div>

Thank for noticing, I think we had a warning to this effect at some point, but it got removed in subsequent rewritings.  
I have clarified the install option in more detail.

Unfortunately, this package is currently not ready for a quick spin due to the external dependency. Once I understand the artifact/ build system I will make changes, so that this package can just be `add`ed ready for use, but I am still new to more exciting thing than Matlab.

---

<div class="post-metadata">

**Author:** ![Amin\_Yahyaabadi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amin_yahyaabadi/32/9826_2.png) [@Amin\_Yahyaabadi](https://discourse.julialang.org/u/Amin_Yahyaabadi)\
**Post date:** [January 12, 2020, 12:53pm UTC](https://discourse.julialang.org/t/ann-intelvectormath-jl-revived-vml-jl/33249/4 "2020-01-12T12:53:08Z")

</div>

I updated the master branch, and now it includes the benchmark result:

 ![](https://global.discourse-cdn.com/julialang/original/3X/c/d/cdb215e089180c59143c1297cdcd9cc3117bca2f.png)  
 ![](https://global.discourse-cdn.com/julialang/original/3X/f/9/f90768623924e2510ace8179cd1a566a834f425a.png)

---

<div class="post-metadata">

**Author:** ![Crown421](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/crown421/32/9984_2.png) [@Crown421](https://discourse.julialang.org/u/Crown421)\
**Post date:** [February 3, 2020, 11:02pm UTC](https://discourse.julialang.org/t/ann-intelvectormath-jl-revived-vml-jl/33249/5 "2020-02-03T23:02:13Z")

</div>

This package now uses BinaryProvider and as such no longer requires external dependency management. It can now be taken for a spin just `add`ing it.

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [February 3, 2020, 11:27pm UTC](https://discourse.julialang.org/t/ann-intelvectormath-jl-revived-vml-jl/33249/6 "2020-02-03T23:27:41Z")

</div>

Off-topic: when I first saw MKL, it has a limited license in which you cannot use for commercial use. I ended just neglecting it. Now, I see that I can indeed use it as I want. To spare me the trouble, please tell me: does it make a significant change for small matrices?

---

<div class="post-metadata">

**Author:** ![Amin\_Yahyaabadi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amin_yahyaabadi/32/9826_2.png) [@Amin\_Yahyaabadi](https://discourse.julialang.org/u/Amin_Yahyaabadi)\
**Post date:** [February 3, 2020, 11:50pm UTC](https://discourse.julialang.org/t/ann-intelvectormath-jl-revived-vml-jl/33249/7 "2020-02-03T23:50:32Z")

</div>

These charts are from the [performance section](https://github.com/JuliaMath/IntelVectorMath.jl#performance) of the repository for small vectors. Refer to the repository for more charts. Even for a vector of dimension 20, you can get 2X speed up. Offcures for larger sizes the benefit a lot more.

 ![](https://global.discourse-cdn.com/julialang/original/3X/7/4/74d9d736512a3374fdc774c88e6ef1c26e59af0e.png)  
 ![](https://global.discourse-cdn.com/julialang/original/3X/1/a/1aee0bd2f2b88d8459847da9d97bc528e2d9ffde.png)  
 ![](https://global.discourse-cdn.com/julialang/original/3X/e/0/e0608a543e9cd4ac0d1eb577f201072a9cc5a9a6.png)

---

<div class="post-metadata">

**Author:** ![Ronis\_BR](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ronis_br/32/50999_2.png) [@Ronis\_BR](https://discourse.julialang.org/u/Ronis_BR)\
**Post date:** [February 4, 2020, 1:30am UTC](https://discourse.julialang.org/t/ann-intelvectormath-jl-revived-vml-jl/33249/8 "2020-02-04T01:30:20Z")

</div>

Thanks! I’ll give a try 🙂
