Skip to content

Instantly share code, notes, and snippets.

@genkuroki
Last active October 2, 2020 16:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save genkuroki/36cda7ba6b2f5ac938b5811e016c2eff to your computer and use it in GitHub Desktop.
Save genkuroki/36cda7ba6b2f5ac938b5811e016c2eff to your computer and use it in GitHub Desktop.
JuliaでMKLを使う方法
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@genkuroki
Copy link
Author

genkuroki commented Oct 1, 2020

JuliaでMKLを使う方法

1. MKL.jl パッケージの内容の確認

https://github.com/JuliaComputing/MKL.jl の内容を確認する. ソースコードにも目を通しておく.

警告: 内容を見て不安を感じたら, 以下の作業に進むことは止めた方がよい. OpenBLAS版のデフォルトのJuliaは十分に速く実用的である.

2. MKL.jlをインストール

pkg> add https://github.com/JuliaComputing/MKL.jl

警告!初心者は絶対に禁止! Juliaのsysimageをいきなり置き換えてしまう!

回復法: sysimage を置き換えられてしまったJuliaは再インストールすればもとに戻るはず. もしくは慌てずに次の節を参照せよ.

MKL 01

3. 置き換えられてしまったsysimageを元に戻す

sysimageのバックアップがJuliaをインストールしたディレクトリ以下の lib/julia に残っている.

私の場合にはJuliaは C:\Julia-1.6.0-DEV 以下にインストールされているので, 以下を実行した.

shell> cd C:\\Julia-1.6.0-DEV\\lib\\julia
C:\Julia-1.6.0-DEV\lib\julia

shell> ls -l
-rwxr-xr-x 1 genkuroki genkuroki 148089800 Oct  1 12:12 sys.dll
-rwxr-xr-x 1 genkuroki genkuroki 178897472 Oct  1 11:51 sys.dll.backup

shell> mv sys.dll sys-mkl.dll

shell> cp sys.dll.backup sys.dll

shell> ls -l
-rwxr-xr-x 1 genkuroki genkuroki 148089800 Oct  1 12:12 sys-mkl.dll
-rwxr-xr-x 1 genkuroki genkuroki 178897472 Oct  1 11:51 sys.dll
-rwxr-xr-x 1 genkuroki genkuroki 178897472 Oct  1 11:51 sys.dll.backup

参考: 以下のスクショのようにOpenBLASとMKLの切り替えを MKL.enable_openblas_startup() や `MKL.enable_mkl_startup()`` を使って行うこともできるが, sysimageを作り直すことになるので時間が取られてしまう.

MKL 02-2
MKL 03-2

4. JuliaでMKLを使用する.

以上によって, JuliaでMKLを使用する準備が整った. MKLを使用するためには --sysimage オプションで sys-mkl.dll をフルパスで指定するようにすればよい. 例えば,

 julia --depwarn=yes --sysimage C:\Julia-1.6.0-DEV\lib\julia\sys-mkl.dll

MKL final 02

注意: MKLでJuliaを使用したら PyPlot.jl が使えなくなるという不具合が生じた.

5. Jupyter (IJulia)でもMKLを使えるようにする.

julia> using IJulia

julia> installkernel("Julia MKL depwarn", "--sysimage", "C:\\Julia-1.6.0-DEV\\lib\\julia\\sys-mkl.dll", "--depwarn=yes", "--project=@.")

MKL final 03

補足: 間違って無駄なカーネルをインストールしてしまった場合には, 表示されているディレクトリを削除すればよい.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment