🙌
Makie.jl の sysimage を Jupyter で使う手順書
はじめに
Makie.jl は初回のプロット表示に1分以上かかる。流石に遅すぎると感じたので前から使ってみようとおもっていた PackageCompiler.jl を使うことにした。あと PackageCompiler.jl で作った sysimage を利用する Jupyter kernel を作る方法もまとめておく。
新しい kernel を使うことで
これが
こうなる。
手順
必要なパッケージ
- PackageCompiler
- Makie
- IJulia
のインストールは省略
1.sysimage づくり
GLMakie のプロットを表示するまでのプログラム
using GLMakie
f = scatter(rand(10,2))
display(f)
を sysGLMakie.jl ファイルとしてホームディレクトリにおいておく。
Julia の REPL を起動し
using PackageCompiler
inputfile = "sysGLMakie.jl"
sysimgname = "GLMakie.dylib"
create_sysimage(
[:GLMakie];sysimage_path=sysimgname,
precompile_execution_file=inputfile
)
を実行すれば sysimage (GLMakie.dylib)ができる。
メモ
そもそもsysimage とはなにかというとあるコードの初回実行した状態を保存したものである。(自分のふんわり理解なので正確には違うとおもう)
Makie.jl は初回のプロットが著しく遅いが2回め以降は普通に速いので、最初の実行した状態をsysimage に保存しておこうということである。(厳密には初回コンパイルがなくなるわけではないのでやはり二回目以降のほうが速い)
display
をコードに加えて置くことがポイント。最初の画像のコードには含まれていないが画面にグラフを表示する際に裏で呼ばれている(セルの実行時間とセル内の関数の @time
の結果を参照)
この sysimage をつかうには julia 実行時のオプションコマンドを使えば良い[1]
2.kernel づくり
Julia の REPL 上で
using IJulia
installkernel("Julia GLMakie", "--sysimage=/$HOME/GLMakie.dylib")
を実行すれば Jupyter のカーネル選択の中に Julia GLMakie というのができる。[2]
メモ(追記2022-01-11-21:52)
installkernel の2つ目の引数は絶対パスで与えること
Discussion