# Why is LoopVectorization deprecated?

**URL:** <https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547>\
**Category:** Performance\
**Tags:** loopvectorization\
**Created:** [February 1, 2024, 2:13am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547 "2024-02-01T02:13:46Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [February 2, 2024, 3:34am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/22 "2024-02-02T03:34:29Z")

</div>

Tullio.jl only weakly depends on LoopVectorization.jl. The `@avx` macro might not work as effectively with Julia 1.11 if it is not updated. Ping @mcabbott .

---

<div class="post-metadata">

**Author:** ![mcabbott](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mcabbott/32/6603_2.png) [@mcabbott](https://discourse.julialang.org/u/mcabbott)\
**Post date:** [February 2, 2024, 5:09am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/23 "2024-02-02T05:09:34Z")

</div>

Tullio should continue to work, but obviously without the benefit from LoopVectorization. It will still (in many cases) apply blocking & multi-threading.

---

<div class="post-metadata">

**Author:** ![PeterSimon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petersimon/32/25193_2.png) [@PeterSimon](https://discourse.julialang.org/u/PeterSimon)\
**Post date:** [February 2, 2024, 9:07pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/24 "2024-02-02T21:07:30Z")

</div>

Maintaining LoopVectorization is far beyond my capabilities, but I am willing to pay a bounty to help incentivize volunteers in maintaining it until LoopModels is ready. If someone can point me to a reliable open-source bounty site, I will put up US $100 right now to support the effort.

---

<div class="post-metadata">

**Author:** ![nsajko](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nsajko/32/221187_2.png) [@nsajko](https://discourse.julialang.org/u/nsajko)\
**Post date:** [February 2, 2024, 9:13pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/25 "2024-02-02T21:13:07Z")

</div>

> [@PeterSimon](#):
>
> a reliable open-source bounty site

I believe there’s no such thing on the market currently, Bountysource is defunct/scammy for some time now already: [Bountysource - Wikipedia](https://en.wikipedia.org/wiki/Bountysource)

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [February 2, 2024, 9:17pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/26 "2024-02-02T21:17:09Z")

</div>

If you wanted to contribute funds, you can use [Julia Language - Open Collective](https://opencollective.com/julialang)

We can then see to it that whoever completes the task can invoice the amount.

---

<div class="post-metadata">

**Author:** ![PeterSimon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petersimon/32/25193_2.png) [@PeterSimon](https://discourse.julialang.org/u/PeterSimon)\
**Post date:** [February 2, 2024, 9:28pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/27 "2024-02-02T21:28:19Z")

</div>

Would it be possible to create a “Project” there for LoopVectorization, so hopefully others will also contribute?

---

<div class="post-metadata">

**Author:** ![PeterSimon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petersimon/32/25193_2.png) [@PeterSimon](https://discourse.julialang.org/u/PeterSimon)\
**Post date:** [February 2, 2024, 9:42pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/28 "2024-02-02T21:42:32Z")

</div>

Done. I’ll rely on you to route the contribution to the correct person(s) after Julia 1.11 compatibility is achieved.

---

<div class="post-metadata">

**Author:** ![MilesCranmer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/milescranmer/32/21070_2.png) [@MilesCranmer](https://discourse.julialang.org/u/MilesCranmer)\
**Post date:** [February 3, 2024, 10:49am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/29 "2024-02-03T10:49:19Z")

</div>

Just matched and put in $100 as well, also for LoopVectorization.jl efforts. Too much of an important project to just let it get deprecated!

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [February 3, 2024, 3:54pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/30 "2024-02-03T15:54:50Z")

</div>

@avik , see above.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [February 4, 2024, 1:23am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/31 "2024-02-04T01:23:50Z")

</div>

> [@Mason](#):
>
> Beyond what @Oscar_Smith pointed out, Chris has discussed in detail in multiple places that yes, he does not think julia is as good for writing high performance libraries as C++.

Mason was so kind as to elaborate in DM:

"It’s not about performance, it’s more about maintanability and reliable abstractions.

A lot of the things one does in julia for performance are not really guarantees, but just doing things and hoping the compiler cooperates. That’s fine for applications, but can be quite rough for maintaining a library that many other people depend on."

---

<div class="post-metadata">

**Author:** ![e3c6](https://avatars.discourse-cdn.com/v4/letter/e/e79b87/32.png) [@e3c6](https://discourse.julialang.org/u/e3c6)\
**Post date:** [February 24, 2024, 11:24am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/32 "2024-02-24T11:24:36Z")

</div>

> [@mcabbott](#):
>
> Tullio should continue to work, but obviously without the benefit from LoopVectorization. It will still (in many cases) apply blocking & multi-threading.

Does dropping LoopVectorization have any impact on the performance of Tullio?

---

<div class="post-metadata">

**Author:** ![Alec\_Loudenback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alec_loudenback/32/278_2.png) [@Alec\_Loudenback](https://discourse.julialang.org/u/Alec_Loudenback)\
**Post date:** [February 25, 2024, 3:00pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/33 "2024-02-25T15:00:50Z")

</div>

@avik now $300 more contributed for this effort.

---

<div class="post-metadata">

**Author:** ![ForceBru](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/forcebru/32/21389_2.png) [@ForceBru](https://discourse.julialang.org/u/ForceBru)\
**Post date:** [March 1, 2024, 10:18pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/34 "2024-03-01T22:18:06Z")

</div>

Just now I [was saying](https://github.com/google/jax/discussions/19452#discussioncomment-8648000) how easy parallelism is with LoopVectorization and how confusing it seems with JAX. Next thing I know, LoopVectorization is deprecated… This is sad and looks like a considerable hit for Julia.

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [March 1, 2024, 10:49pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/35 "2024-03-01T22:49:16Z")

</div>

If LoopModels is successful in replacing LoopVectorization, then parallelism in Julia should get even better. The question is if LoopModels will be ready by the time that LoopVectorization needs an update.

---

<div class="post-metadata">

**Author:** ![simsurace](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simsurace/32/30216_2.png) [@simsurace](https://discourse.julialang.org/u/simsurace)\
**Post date:** [March 2, 2024, 8:43am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/36 "2024-03-02T08:43:08Z")

</div>

Apart from the bus factor problem, there seems to be an issue about getting stable APIs for something like LV in Julia. With Julia supposedly having such a focus on high performance computing, that‘s somewhat confusing to me. From [https://github.com/JuliaSIMD/LoopVectorization.jl/pull/519#issuecomment-1890703114](https://github.com/JuliaSIMD/LoopVectorization.jl/pull/519#issuecomment-1890703114)

> In terms of maintenance burden, my suggestions would be to avoid anything that isn’t standard, boring Julia code. Of course, that tends to be at odds with getting good performance. So your best bet would probably be to have a close, open dialogue with the core compiler team on getting standard and stable ways of doing everything you need that they approve of.

It would be great if someone more involved with this issue could shed some light on this.

---

<div class="post-metadata">

**Author:** ![marcobonici](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marcobonici/32/20549_2.png) [@marcobonici](https://discourse.julialang.org/u/marcobonici)\
**Post date:** [March 6, 2024, 10:15pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/37 "2024-03-06T22:15:14Z")

</div>

I would like to contribute and put some money. Helping with `LoopVectorization.jl` maintenance is well beyond my capabilities, but I am happy to help with fundings, however the projects on the linked page do not mention LV.jl. Is this correct or am I wrong? (Tagging @mkitti as he posted the original link)

Also, asking about a couple of other related projects.  
Regarding `Tullio.jl`, my understanding is that if I do not load LV.jl before it, I lose most of the performance. If LV.jl gets deprecated, then which are the alternatives that can still give this kind of speedup _now_?

Also: `SimpleChains.jl`. Is it going to be deprecated as well or not? I am heavily using `SimpleChains.jl` as well, and I am getting worried also about this, since LV.jl is one of SC.jl dependencies (tagging @ChrisRackauckas as well).

I am very sorry for LV.jl to get deprecated. I think @Elrod did a great job with this package and was very valuable for my work. I hope `LoopModels` will get out by 1.11 (or let’s say after not too much after the release).

---

<div class="post-metadata">

**Author:** ![AndrewRadcliffe](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/andrewradcliffe/32/36412_2.png) [@AndrewRadcliffe](https://discourse.julialang.org/u/AndrewRadcliffe)\
**Post date:** [March 7, 2024, 3:33am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/38 "2024-03-07T03:33:30Z")

</div>

> [@simsurace](#):
>
> In terms of maintenance burden, my suggestions would be to avoid anything that isn’t standard, boring Julia code.

This advice should not be overlooked. Once one starts to write code which depends on the compiler internals, one is subject to undesirable but justifiable churn. The maintenance burden may be bearable at first, but after a couple years, one really has to ask: why can’t I stop re-writing the same code? (answer: I depend on compiler internals).

Deprecation of LoopVectorization.jl is for the best when considered in the larger scope of the Julia language. For the past few years, it has been a very successful proof of concept, but one must acknowledge that it is a local optimum, and, in order to progress toward the global optimum, it is sometimes necessary to take steps which decrease one’s objective function. I believe that most readers are familiar with this from mathematical optimization; and, somewhat surprisingly, human progress is not so dissimilar.

Cheers @Elrod

---

<div class="post-metadata">

**Author:** ![foobar\_lv2](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@foobar\_lv2](https://discourse.julialang.org/u/foobar_lv2)\
**Post date:** [March 7, 2024, 9:47am UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/39 "2024-03-07T09:47:01Z")

</div>

> [@AndrewRadcliffe](#):
>
> Deprecation of [LoopVectorization.jl](https://juliahub.com/ui/Packages/General/LoopVectorization) is for the best when considered in the larger scope of the Julia language.

In view of the tremendous success and adoption of LoopVectorization, I feel that the considerable maintenance burden could well be worth it, from a high-level ecosystem point of view.

Alas, we cannot intrude on @Elrod 's personal time with high-level ecosystem arguments, and it seems unlikely that anybody else will step up or pay up (I’d naively guess maybe $30k for a 3-month contract to port to 1.11? Not pocket / crowd-funding money, either industry or grant).

Well-known curse of OSS funding (obligatory [xkcd](https://xkcd.com/2347/)).

So we had a good time while it lasted, and big thanks to @Elrod for that! ❤

---

<div class="post-metadata">

**Author:** ![simsurace](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simsurace/32/30216_2.png) [@simsurace](https://discourse.julialang.org/u/simsurace)\
**Post date:** [March 7, 2024, 5:14pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/40 "2024-03-07T17:14:21Z")

</div>

My question still remains unanswered though: why does Julia not provide public APIs for vectorization such that a project like LV does not have to be a ~~performance~~ maintenance nightmare? I mean it is vectorization, not some random thing. Could as well become part of the language at some point. I‘m asking out of ignorance about the hows and whys of LV breakage.

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [March 7, 2024, 5:37pm UTC](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547/41 "2024-03-07T17:37:31Z")

</div>

> [@simsurace](#):
>
> performance nightmare

I guess you mean “maintenance nightmare”…

[Previous page](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547.md?page=1)

[Next page](https://discourse.julialang.org/t/why-is-loopvectorization-deprecated/109547.md?page=3)
