# MKL bundled Julia by Julia Computing

**URL:** <https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585>\
**Category:** General Usage\
**Tags:** question\
**Created:** [December 12, 2018, 4:27am UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585 "2018-12-12T04:27:28Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [December 12, 2018, 9:10pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/21 "2018-12-12T21:10:22Z")

</div>

I mean I did look at it and it seems illegal to me.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [December 12, 2018, 9:12pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/22 "2018-12-12T21:12:32Z")

</div>

They are certainly in a solid financial position to take on any potential legal consequences from shipping GPL code combined with non-open libraries such as MKL. I would not feel comfortable doing so, financially or ethically, and I know others at Julia Computing feel similarly.

---

<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:** [December 12, 2018, 9:26pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/23 "2018-12-12T21:26:49Z")

</div>

According to the docs, it looks like they ship multiple BLAS libraries, and the user selects during installation against which one to link. Is this what they are doing?

IANAL, but I think this could at least conform to the spirit of the GPL: Linking GPL against closed source is permitted for users, but distributing linked binaries is not; both works, application-agnostic MKL and BLAS-agnostic R, are useful on their own right, purists get full functionality at lower speed with completely free software, but both can be linked together by the user to create a new derived work that is never distributed.

Might be worthwhile to ask FSF on an FAQ item whether something like that is acceptable (ship both openblas and mkl binaries, user decides against which to link; if somebody mentions docker LALALA CANT HEAR YOU).

---

<div class="post-metadata">

**Author:** ![Yifan\_Liu](https://avatars.discourse-cdn.com/v4/letter/y/4da419/32.png) [@Yifan\_Liu](https://discourse.julialang.org/u/Yifan_Liu)\
**Post date:** [December 12, 2018, 9:38pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/24 "2018-12-12T21:38:29Z")

</div>

I really like the idea of using docker container 😀

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [December 13, 2018, 4:46pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/25 "2018-12-13T16:46:47Z")

</div>

That seems like a plausible explanation for how this is legally acceptable. That’s a possible approach for us as well, with the down side is that making it possible to choose which BLAS to link against at install time seems like a fair amount of engineering effort.

---

<div class="post-metadata">

**Author:** ![Daniel\_Berge](https://avatars.discourse-cdn.com/v4/letter/d/eb9ed0/32.png) [@Daniel\_Berge](https://discourse.julialang.org/u/Daniel_Berge)\
**Post date:** [December 13, 2018, 5:01pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/26 "2018-12-13T17:01:32Z")

</div>

[Scilab](http://www.scilab.org) is GPL and the installer gives the default option to use the Intel MKL, with the note that the user is subject to the Intel EULA. I’m not sure how that compares.

---

<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:** [December 13, 2018, 5:03pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/27 "2018-12-13T17:03:11Z")

</div>

> [@StefanKarpinski](#):
>
> with the down side is that making it possible to choose which BLAS to link against at install time seems like a fair amount of engineering effort.

Is it? Naively, I’d think that one can ship both shared object files; during installation, set a symlink, and then build the sysimg. Possibly also set various environment variables to enable/disable known openblas / mkl bugs. I mean, the annoyingly slow part when building julia from scratch is compilation of the libraries (blas and llvm), not the sysimg. Do we ship sysimage binaries at all? If yes, these would need to be openblas, but waiting \<5 minutes for sysimg recompilation is a much smaller price to pay than compiling the full llvm.

On the other hand, I’m sure you know better how much engineering effort that would be 🙂

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [December 13, 2018, 5:40pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/28 "2018-12-13T17:40:48Z")

</div>

> [@foobar\_lv2](#):
>
> and then build the sysimg.

A nice feature about the julia installation is that you unpack it and it works. Adding a whole sysimg compilation step there (which also requires a linker AFAIK) would make installing Julia much less nice.

---

<div class="post-metadata">

**Author:** ![tkf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkf/32/17635_2.png) [@tkf](https://discourse.julialang.org/u/tkf)\
**Post date:** [December 13, 2018, 11:55pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/29 "2018-12-13T23:55:58Z")

</div>

If re-building sysimg is an OK solution then [https://github.com/JuliaComputing/MKL.jl](https://github.com/JuliaComputing/MKL.jl) is the way to go?

---

<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:** [July 16, 2019, 12:26pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/30 "2019-07-16T12:26:43Z")

</div>

Well this licensing issue excuse is old now.

Python Annaconda ships with MKL-powered libraries:  
[https://docs.anaconda.com/mkl-optimizations/](https://docs.anaconda.com/mkl-optimizations/)  
[https://docs.anaconda.com/anaconda/eula/](https://docs.anaconda.com/anaconda/eula/)  
[https://docs.anaconda.com/mkl-optimizations/eula/](https://docs.anaconda.com/mkl-optimizations/eula/)

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [July 16, 2019, 12:31pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/31 "2019-07-16T12:31:43Z")

</div>

I don’t think anything that was discussed in [https://github.com/JuliaLang/julia/issues/18374](https://github.com/JuliaLang/julia/issues/18374) has really changed.

---

<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:** [July 16, 2019, 12:45pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/32 "2019-07-16T12:45:00Z")

</div>

![image](https://global.discourse-cdn.com/julialang/original/3X/e/e/eec85fd803f00616905daedccd486d07739db92f.png)

[https://software.intel.com/en-us/mkl/license-faq](https://software.intel.com/en-us/mkl/license-faq)  
[https://software.intel.com/en-us/license/intel-simplified-software-license](https://software.intel.com/en-us/license/intel-simplified-software-license)

---

<div class="post-metadata">

**Author:** ![non-Jedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/non-jedi/32/3645_2.png) [@non-Jedi](https://discourse.julialang.org/u/non-Jedi)\
**Post date:** [July 16, 2019, 12:47pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/33 "2019-07-16T12:47:20Z")

</div>

To be compatible with the GPL, a license must allow not just redistribution but modification. The ISSL clearly does not: [End User License Agreements](https://software.intel.com/en-us/license/intel-simplified-software-license)

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [July 16, 2019, 12:47pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/34 "2019-07-16T12:47:28Z")

</div>

I don’t think the problem is with the MKL license but with the GPL license.

---

<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:** [July 16, 2019, 12:52pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/35 "2019-07-16T12:52:16Z")

</div>

I don’t find anything licensed under GPL. Please show me what you are talking about. (I didn’t know I should check stdlib as well)  
[https://github.com/JuliaLang/julia/blob/master/LICENSE.md](https://github.com/JuliaLang/julia/blob/master/LICENSE.md)

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [July 16, 2019, 12:54pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/36 "2019-07-16T12:54:45Z")

</div>

Most browsers have a text search facility, often bound to ctrl-F. If you use that and search for the term “GPL” you will find multiple hits in that file. Each one indicates a piece of software that Julia uses that is GPL licensed.

---

<div class="post-metadata">

**Author:** ![non-Jedi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/non-jedi/32/3645_2.png) [@non-Jedi](https://discourse.julialang.org/u/non-Jedi)\
**Post date:** [July 16, 2019, 12:56pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/37 "2019-07-16T12:56:58Z")

</div>

I think whether the problem is with the ISSL or the GPL is more of a philosophical question (I would be inclined to say the problem is with the ISSL and its restrictions on user freedom).

In any case, to be as specific as possible, for anyone reading this thread in the future, the problem is caused by the fact that the ISSL doesn’t allow modification nor makes the source of MKL available while the GPL requires derived work/combined works to be freely redistributable and modifiable by the user. See point 5 here: [The GNU General Public License v3.0 - GNU Project - Free Software Foundation](https://www.gnu.org/licenses/gpl-3.0.html)

---

<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:** [July 16, 2019, 1:04pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/38 "2019-07-16T13:04:03Z")

</div>

> [@MKL bundled Julia by Julia Computing](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/37):
>
> I think whether the problem is with the ISSL or the GPL is more of a philosophical question (I would be inclined to say the problem is with the ISSL and its restrictions on user freedom). In any case, to be as specific as possible, for anyone reading this thread in the future, the problem is caused by the fact that the ISSL doesn’t allow modification nor makes the source of MKL available while the GPL requires derived work/combined works to be freely redistributable and modifiable by the user. …

Well, Conda has LGPL license. [Conda license — conda-docs documentation](https://docs.conda.io/en/latest/license.html#lgpl)  
Are the problems caused by Julia standard libs?

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [July 16, 2019, 1:16pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/39 "2019-07-16T13:16:43Z")

</div>

LGPL ≠ GPL. The former has a linking exception which makes all the difference here.

---

<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:** [July 16, 2019, 1:23pm UTC](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585/40 "2019-07-16T13:23:42Z")

</div>

OK, I get it. Essentially, Julia has a GPL license partially and so, which makes it non-combinable with other types of licenses.

[Previous page](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585.md?page=1)

[Next page](https://discourse.julialang.org/t/mkl-bundled-julia-by-julia-computing/18585.md?page=3)
