2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JuliaAdvent Calendar 2021

Day 4

sysimage_creator の紹介

Last updated at Posted at 2021-12-03

本日は

Julia アドベントカレンダーネタとして自作ツール sysimage_creator の紹介をします.

using Plots.jl など初回ロードが遅いパッケージは PackageCompiler.jl を使うことで Julia の sysimage にコンパイル情報を追加することで解決することができます. Jupyter の Julia カーネルも初回のロードやカーネルの再起動は Python のそれに比べると遅いので少しイライラする方もいると思います. sysimage_creator はそれらの問題に対処するツールです.

導入

この記事を読むにあたっては Julia/Python/Jupyter の環境はあらかじめ整っていると仮定します. 他にも pip install ... とか jupytext とか PacakgeCompiler.jl の使い方を他の記事で読んだ経験があれば理解しやすいと思います.

ひとまず下記の手順を踏むと道具が揃います.

$ git clone https://github.com/terasakisatoshi/sysimage_creator.git
$ pip install jupyter jupytext nbconvert ipykernel
$ cd sysimage_creator && make && jupyter notebook

ノートブックを起動する際に julia-1.6.3-sys という名前のカーネルを指定すると
初回のノートブックの起動時のもっさり感や using Plots のロードの遅さが改善されていると思います.

make コマンドの中では

  • IJulia によって jupyter カーネルが起動する際に行われるJITコンパイル情報を取得
  • StatsPlots.jl を jupyter 上で実行する際に行われるJITコンパイル情報
  • 得られたコンパイル情報をもとにPackageCompilerによって sysimage を作ってもらう
  • その sysimage を呼び出すためにカーネルを作成する (これが julia-1.6.3-sys です)
$ make test

とすると簡単なノートブックの起動・実行に対して素の sysimage と sysimage_creator で作った sysimage で試した場合でおおよそ3倍改善される様子を見ることができます.

julia --project=@. benchmark.jl
[jupytext] Reading testout_naive.jl in format jl
[jupytext] Executing notebook with kernel julia-1.6
Starting kernel event loops.
[jupytext] Writing testout_naive.ipynb (destination file replaced [use --update to preserve cell outputs and ids])
[jupytext] Updating the timestamp of testout_naive.jl
[jupytext] Reading testout_sys.jl in format jl
[jupytext] Executing notebook with kernel julia-sys-1.6
Starting kernel event loops.
[jupytext] Writing testout_sys.ipynb (destination file replaced [use --update to preserve cell outputs and ids])
[jupytext] Updating the timestamp of testout_sys.jl
t_naive = 26.774783521 # こっちがデフォルトの状態
t_sys = 7.839323549.   # 我々のツールを使った場合
Test Summary: | Pass  Total
benchmark     |    1      1

お試しあれ

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?