Julia v1.3 の紹介
===
<!-- .element: style="font-size: 300%" -->
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
2020/01/25 機械学習 名古屋 第23回勉強会
antimon2(後藤 俊介)
Note:
スポンサー枠(?)LTスライドですっ
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## お品書き
+ お前誰よ?
+ 来栖川電算の紹介
+ Juliaの紹介
+ Julia v1.3
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# お前誰よ?
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## 自己紹介
+ 名前:後藤 俊介
+ 所属:**[有限会社 来栖川電算](https://www.kurusugawa.jp)**
+ コミュニティ:**[機械学習名古屋](https://machine-learning.connpass.com/)**, **[JuliaTokai](https://juliatokai.connpass.com/)**, [Python東海](https://connpass.com/series/292/), Ruby東海, …
+ 言語:**[Julia](https://julialang.org)**, Python, Scala(勉強中), Ruby, …
+ ![Twitter](https://i.imgur.com/HqouMIg.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [@antimon2](https://twitter.com/antimon2) / ![Facebook](https://i.imgur.com/01nPd37.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [antimon2](https://www.facebook.com/antimon2)
+ ![Github](https://i.imgur.com/yBKtii5.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [antimon2](https://github.com/antimon2/) / ![Qiita](https://i.imgur.com/FxHMi64.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [@antimon2](http://qiita.com/antimon2) / [<i class="fa fa-file-text"><!-- .element style="font-size:120%" --></i> @antimon2](https://hackmd.io/@antimon2)
Note:
今日も Julia の話っ
---
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
# 来栖川電算
Note:
スポンサー枠っ
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
[![有限会社来栖川電算](https://i.imgur.com/8Kuhfel.png)
https://www.kurusugawa.jp](https://www.kurusugawa.jp)
Note:
見に来てねっ
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
[![来栖川電算 ホーム Facebook](https://i.imgur.com/ssrmyjD.png)https://www.facebook.com/kurusugawa.jp](https://www.facebook.com/kurusugawa.jp)
Note:
『いいね!』してねっ
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
<iframe src="//www.slideshare.net/slideshow/embed_code/key/HNE3ohKyGKUJNF" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/youheiyamaguchi/jaws-festa-20191102" title="JAWS FESTA 20191102" target="_blank">JAWS FESTA 20191102</a> </strong> from <strong><a href="https://www.slideshare.net/youheiyamaguchi" target="_blank">陽平 山口</a></strong> </div>
Note:
11/2に札幌で行われた JAWS FESTA 2019 での弊社山口の発表資料っ
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
## 概要
+ 設立 2003年(名古屋工業大学発ベンチャー)
+ 従業員 66人(メイドさんも含めて!)
+ ここ最近人が増えた
Note:
従業員にはバイトも含まれています。
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
## SF 世界の技術を実現し、<br>社会に役立てる
<!-- .element: style="font-size:2em" -->
+ AI 技術のライセンス販売・研究開発・SI
+ 文字認識,物体認識,動作認識,行動認識
+ アプリの企画・制作・運営
Note:
マルチっ
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
## 技術者集団
+ 最先端の AI 技術
+ 文字認識、物体認識、モーション認識
+ 限界性能を引き出す実装技術
+ 高精度化、高速化、省資源化、並列化、分散化
+ 高品質なソフトウェアを実現する技術
+ 言語・アーキテクチャ・プロセスに対する深い造詣
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
## ワンストップ開発
+ データ収集・アノテーション
+ AI(認識技術)の研究開発
+ アプリの企画・制作・運営
+ 自社製実験パイプライン
Note:
アノテーションツールも自社製っ
基本使用料無料で誰でも使えますっ!
----
<!-- .slide: data-background="https://i.imgur.com/XuAkn8y.png" data-background-color="rgba(44,214,221,0.3)" -->
Note:
![体制](https://i.imgur.com/XuAkn8y.png)
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
## 製品・サービス
+ 画像認識API(ライセンス販売)
+ 物体認識(研究開発→SI)
+ 走行画像リアルタイム認識、地図生成
+ モーション認識
+ **[毎朝体操](http://maiasa.jp/)**
+ 研究開発支援
+ ANNOFAB(アノテーションツール)
+ AHAB(実験スケジューラ)
Note:
毎朝体操が BS11 どっぷりアプリ (1/16) で紹介されました!
![毎朝体操 - どっぷりアプリ](https://i.imgur.com/Fb82rUH.jpg)
----
<!-- .slide: data-background="https://i.imgur.com/XaH6sgN.jpg" data-background-color="rgba(44,214,221,0.3)" -->
Note:
![事例・製品・サービス](https://i.imgur.com/XaH6sgN.jpg)
----
<!-- .slide: data-background="https://i.imgur.com/Fb82rUH.jpg" data-background-color="rgba(44,214,221,0.3)" -->
Note:
![毎朝体操 - どっぷりアプリ](https://i.imgur.com/Fb82rUH.jpg)
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
## コミュニティ活動支援
+ 勉強会主催
+ スポンサー
+ 会場提供
<!-- .element: style="font-size:180%" -->
Note:
名古屋を中心に勉強会コミュニティの各種支援を行っていますっ
----
<!-- .slide: data-background="https://i.imgur.com/uMdKOGh.png" data-background-color="rgba(44,214,221,0.3)" -->
Note:
![コミュニティ活動](https://i.imgur.com/uMdKOGh.png)
機械学習名古屋、JuliaTokai も支えてもらってますっ
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
## OSS への貢献
<!-- .element: style="font-size:240%" -->
+ スポンサー
+ パッチ提供
<!-- .element: style="font-size:180%" -->
Note:
名古屋を中心に勉強会コミュニティの各種支援を行っていますっ
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
[![OSS の vis.js に 400\$ を寄付しました](https://i.imgur.com/2Pff8A8.png)
https://www.kurusugawa.jp/donated-to-vis-js/](https://www.kurusugawa.jp/donated-to-vis-js/)
<!-- .element: style="font-size:80%" -->
Note:
困窮していたOSS開発コミュニティの復活に貢献した例っ
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
## 求人等
<!-- .element: style="font-size:240%" -->
+ 研究(認識技術)
+ 開発(サーバサイド/フロントエンド)
+ 企画(アプリ/サービス)
+ デザイナ
<!-- .element: style="font-size:120%" -->
Note:
学生の皆さん、転職者の皆さん、力を貸してくださいっ
----
<!-- .slide: data-background="https://i.imgur.com/5CbxlN7.jpg" data-background-color="rgba(44,214,221,0.3)" -->
Note:
![募集中!](https://i.imgur.com/5CbxlN7.jpg)
---
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
# Julia の紹介
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
[![Julia](https://upload.wikimedia.org/wikipedia/en/1/1f/Julia_Programming_Language_Logo.svg)<!-- .element: style="background:white;max-width:80%" -->](https://julialang.org)
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## Julia とは?(1)
+ [The Julia Language](https://julialang.org)
+ 最新 **v1.3.1**(2019/12/30)
+ LTS v1.0.5(2019/09/09)
+ pre v1.4.0-rc1(2020/01/23)
+ 科学技術計算に強い!
+ 動作が速い!(LLVM JIT コンパイル)
Note:
ググるときはなるべく [julialang](https://www.google.co.jp/search?q=julialang) で!
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## Julia とは?(2)
> + Rのように中身がぐちゃぐちゃでなく、
> + Rubyのように遅くなく、
> + Lispのように原始的またはエレファントでなく、
> + Prologのように変態的なところはなく、
> + Javaのように硬すぎることはなく、
> + Haskellのように抽象的すぎない
>
> ほどよい言語である
<!-- .element: style="font-size:66%" -->
引用元:http://www.slideshare.net/Nikoriks/julia-28059489/8
<!-- .element: style="font-size:71%" -->
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## Julia とは?(3)
> + C のように高速だけど、
Ruby のような動的型付言語である
> + Lisp のようにプログラムと同等に扱えるマクロがあって、しかも
Matlab のような直感的な数式表現もできる
> + Python のように総合的なプログラミングができて、
R のように統計処理も得意で、
Perl のように文字列処理もできて、
Matlab のように線形代数もできて、
shell のように複数のプログラムを組み合わせることもできる
> + 超初心者にも習得は簡単で、
超上級者の満足にも応えられる
> + インタラクティブにも動作して、コンパイルもできる
<!-- .element: style="font-size:50%" -->
([Why We Created Julia](http://julialang.org/blog/2012/02/why-we-created-julia) から抜粋・私訳)
<!-- .element: style="font-size:71%" -->
Note:
いろんな言語の「いいとこどり」言語!ってことでっ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## 要するに
<!-- .element: style="font-size:300%" -->
+ 動的言語なのに速い!
+ 文法も覚えやすい!
+ 数値計算に強い!
<!-- .element: style="font-size:180%" -->
Note:
機械学習とかにも持って来いっ!
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## 主な機能
<!-- .element: style="font-size:280%" -->
+ [多重ディスパッチ](https://docs.julialang.org/en/v1/manual/methods/)
+ [動的型システム](https://docs.julialang.org/en/v1/manual/types/)
+ **[並行・並列処理](https://docs.julialang.org/en/v1/manual/parallel-computing/)**、コルーチン
+ [組込パッケージマネージャ](https://docs.julialang.org/en/v1/stdlib/Pkg/)
<!-- .element: style="font-size:160%" -->
Note:
っ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## 文法・関数
Note:
以降、ほぼ過去スライドからのコピペ。すっ飛ばして先へ進んで戴いてもOKっ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
### 基本的な演算
```julia
julia> 1 + 2 - 3 * 4 # 四則演算(除算以外)
-9
julia> 7 / 5 # `整数 / 整数` の結果は浮動小数
1.4
julia> 7 ÷ 5 # `整数 ÷ 整数` の結果は整数
1
julia> 2 ^ 10 # 冪乗は `^`
1024
julia> 123 & 234 | 345 # 論理積 / 論理和
376
julia> 123 ⊻ 234 # 排他的論理和(==`xor(123, 234)`)
145
```
<!-- .element: style="font-size:46%" -->
Note:
整数同士の除算は実数になりますっ
整数除算演算子 `÷` が別に存在します(Python の `//` 相当)っ
また冪乗も(`**` ではなく)`^` ですっ
`⊻` は `\xor`+<kbd>Tab</kbd> または `\veebar`+<kbd>Tab</kbd> で変換できますっ
ちなみに先ほどの `÷` も `\div`+<kbd>Tab</kbd>で(基本的に ${\rm \TeX}$ の書式)っ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
### 配列
```julia
julia> a = [1, 2, 3, 4, 5]
5-element Array{Int64,1}:
1
2
3
4
5
julia> a[1] # Julia は 1-origin
1
julia> println(a[2:3]) # 範囲指定は両端含む
[2, 3]
```
<!-- .element: style="font-size:50%" -->
Note:
1-origin であることに注意すればあとは普通の配列っ
あと `a:b` は範囲(`Range`)の記法。両端を含む(Ruby の `a..b` と同じ)っ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
### 配列の内包表記 (1)
```julia
julia> a = [n^2 for n=1:5]
5-element Array{Int64,1}:
1
4
9
16
25
julia> A = [x+10y for y=1:3, x=1:3]
3×3 Array{Int64,2}:
11 12 13
21 22 23
31 32 33
```
<!-- .element: style="font-size:50%" -->
Note:
内包表記の記法は Python に類似っ
かつ、`for` にカンマ区切りで複数のイテレータを渡すことで2次元以上の配列も作成可能っ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
### 配列の内包表記 (2)
```julia
julia> [(a,b,c) for c=1:15,b=1:15,a=1:15 if a^2+a*b+b^2==c^2]
6-element Array{Tuple{Int64,Int64,Int64},1}:
(3, 5, 7)
(5, 3, 7)
(6, 10, 14)
(7, 8, 13)
(8, 7, 13)
(10, 6, 14)
```
Note:
Python と同様に `if` で条件を指定することも可能っ
あと Python と同様、`[○ for ○=○]` を `(○ for ○=○)` と書くと配列ではなくて `Generator` が返りますっ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
### ベクトル
```julia
julia> x = [1., 2., 3.]; y = [3., 1., 2.];
julia> x + y # `x .+ y` と書いても同じ(elementwise operation)
[4., 3., 5.]
julia> x .* y # これは `x * y` と書くとNG
[3., 2., 6.]
julia> using LinearAlgebra
julia> x ⋅ y # 内積(dot積、`dot(x, y)` と書いても同じ)
11.0
julia> x × y # 外積(cross積、`cross(x, y)` と書いても同じ)
[1., 7., -5.]
```
<!-- .element: style="font-size:50%" -->
Note:
Julia では実は1次元配列がベクトルの扱いっ
`⋅` は `\cdot`+<kbd>Tab</kbd>、`×` は `\times`+<kbd>Tab</kbd>(これらを利用するには `using LinearAlgebra` 必要)っ
あとこれらや先ほどの `÷` や `⊻` などのように、ASCIIの範囲を超えたUnicode文字の演算子(そのほとんどが $\TeX$ 由来)が Julia にはたくさんあります(他には例えば比較演算子の `≤` `≥` や、集合の要素 `∈` や包含関係 `⊆` などなど)
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
### 行列
```julia
julia> A = [1 2; 3 4] # この記法は MATLAB/Octave 由来
2×2 Array{Int64,2}:
1 2
3 4
julia> A' # `○'` は転置行列の記法(これも MATLAB/Octave 由来)
2×2 LinearAlgebra.Adjoint{Int64,Array{Int64,2}}:
1 3
2 4
julia> transpose(A) # 正確には転置行列はこっち
2×2 LinearAlgebra.Transpose{Int64,Array{Int64,2}}:
1 3
2 4
```
<!-- .element: style="font-size:50%" -->
Note:
Julia では2次元配列が行列の扱いっ
あと `○.'` という書式は廃止されました(`transpose(A)` 使ってね)っ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
### 行列の演算
```julia
julia> A = [1 2; 3 4]; B = [3 0; 0 6];
julia> A + B # A .+ B でも同様
2×2 Array{Int64,2}:
4 2
3 10
julia> A * B # matrix multiply
2×2 Array{Int64,2}:
3 12
9 24
julia> A .* B # elementwise multiply
2×2 Array{Int64,2}:
3 0
0 24
```
<!-- .element: style="font-size:48%" -->
Note:
行列は `*` で通常の行列積になりますっこれ便利っ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
### ブロードキャスト
```julia
julia> sin(0.1)
0.09983341664682815
julia> sin.([0.1, 0.2, 0.3, 0.4])
4-element Array{Float64,1}:
0.0998334
0.198669
0.29552
0.389418
julia> [0.1, 0.2, 0.3, 0.4] .^ 2
# => [0.01, 0.04, 0.09, 0.16]
```
<!-- .element: style="font-size:50%" -->
Note:
関数名と `(` の間に `.` を置くと、普通の関数を配列に拡張してくれる(ブロードキャスト)っ
`.^` のように演算子の前に `.` を書いても同様(先ほど出た `.+` `.*` もブロードキャスト)っ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
### 関数定義
```julia
julia> f(x) = x^2 + 2x - 1
f (generic function with 1 method)
julia> f(1)
2
julia> f.(1:5)
# => [2, 7, 14, 23, 34]
```
Note:
数学のように直感的な記述で関数を定義可能っ
`2x` は `2*x` の省略形、曖昧さがなければリテラルと他の識別子が続く場合などに勝手に乗算と解釈してくれるっ
またユーザ定義関数も `.` をつけて自動的にブロードキャスト対応っ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
### 有理数・複素数
```julia
julia> 1//2 == 0.5
true
julia> 1//2 - 1//3
1//6
julia> 1im ^ 2 == -1
true
julia> (1.0 + 0.5im) * (2.0 - 3.0im)
3.5 - 2.0im
```
Note:
有理数・複素数を標準サポート。
`//` は有理数除算(結果は有理数)
`im` は虚数単位。
どちらも四則演算も普通に書けますっ
---
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
# Julia v1.3
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
## 目玉機能(?)
+ **スレッド並列**
+ Unicode 12.1.0 サポート(令和対応)
+ …
Note:
令和対応(Unicode)は、私がプルリクに関与していますっ
それより **真の** スレッド並列! やっぱこれが目玉っ!
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
## スレッド並列
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
```julia=
function fib(n)
if n ≤ 1
return n
else
return fib(n-1) + fib(n-2)
end
end
```
Note:
時間のかかる処理の例として、フィボナッチ数の単純再帰バージョン。
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
```julia=11
const N = 40
const N_TASKS = 128
println("Sequential:")
@time [fib(N) for _ in 1:N_TASKS]
println("Parallel:")
@time fetch.([Threads.@spawn fib(N) for _ in 1:N_TASKS])
```
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
```bash
$ julia --version
julia version 1.3.1
$ env JULIA_NUM_THREADS=4 julia par.jl
Sequential:
53.831678 seconds (53.96 k allocations: 2.738 MiB)
Parallel:
14.608202 seconds (238.94 k allocations: 12.709 MiB)
```
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
## 応用と比較
Note:
データバッチ生成に適用してみた
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
### Concurrent with Channel
```julia=
# with Channel
function batchgen_with_channel(batchsize)
Channel{Vector{Int}}(10) do channel
while true
put!(channel, [fib(N) for _=1:batchsize])
end
end
end
```
Note:
指定したバッチサイズずつ生成した結果を送出
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
### Parallel with Thread
```julia=11
# with Channel + Thread
function batchgen_with_thread(batchsize)
Channel{Vector{Int}}(10, spawn=true) do channel
while true
put!(channel, fetch.([Threads.@spawn fib(N) for _=1:batchsize]))
end
end
end
```
Note:
Channel のみのときと記述にほとんどさがないことに注目!
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
### Parallel with Multi Process
```julia=21
# with RemoteChannel
using Distributed
@everywhere function _remote_produce(remote_channel, batchsize)
while true
put!(remote_channel, fetch.([Distributed.@spawn fib(N) for _=1:batchsize]))
end
end
function batchgen_via_remotechannel(batchsize)
channel = RemoteChannel(() -> Channel{Vector{Int}}(10))
workerid = first(workers())
@async remote_do(_remote_produce, workerid, channel, batchsize)
# return channel
return (take!(channel) for _=Iterators.repeated(true))
end
```
<!-- .element: style="font-size: 40%" -->
Note:
事前に `addprocs(N)` か実行時引数 `-p N` で(追加)プロセス数を指定する必要あり
あと上記はたぶんこのままでは動きません(参考に上げておく ipynb の結果を参照)
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
### Sample Evaluator
```julia=39
# process_batch
const BATCH_SIZE = 3
const N_ITERATIONS = 10
function processbatch(batchgen, BATCH_SIZE=BATCH_SIZE; numiter=N_ITERATIONS, verbose=false)
gen = batchgen(BATCH_SIZE)
for val in Iterators.take(gen, numiter)
verbose && @show val
sleep(0.5)
end
end
# processbatch(batchgen_with_thread, numiter=1, verbose=true)
# # => val = [102334155, 102334155, 102334155]
# @time processbatch(batchgen_with_thread)
# => 9.481949 seconds (951 allocations: 66.328 KiB)
```
<!-- .element: style="font-size: 35%" -->
Note:
事前に `addprocs(N)` か実行時引数 `-p N` で(追加)プロセス数を指定する必要あり
あと上記はたぶんこのままでは動きません(参考に上げておく ipynb の結果を参照)
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
### 比較結果
| | Channel | Thread | MP | _(Seq)_ |
| :------- | -------: | -------: | -------: | -------: |
| 時間(秒) | 27.53 | **9.48** | 13.14 | _18.32_ |
| メモリ(KiB) | 79.0 | **66.3** | 86.1 | **_6.3_** |
Note:
なんか Channel だけのときが異様に時間かかってる(実装の仕方がまずいかも)
でもとにかく Thread 並列 最強!
----
<!-- .slide: data-background-color="rgba(96,173,81,0.3)" -->
+ 高速!
+ 省メモリ!
<!-- .element: style="font-size:360%" -->
Note:
他の並行/並列処理と比較して。
メモリ使用量はさすがに Sequential には負けるけれど有用性は分かってもらえると思う!
---
<!-- .slide: data-background-color="rgba(170,121,193,0.3)" -->
# まとめ
----
<!-- .slide: data-background-color="rgba(170,121,193,0.3)" -->
+ Multi-Threading 簡単便利!
+ Julia 良いよ楽しいよ!
<!-- .element: style="font-size:160%" -->
Note:
っ
----
<!-- .slide: data-background-color="rgba(170,121,193,0.3)" -->
## 参考リンク
+ [Julia 1.3 Documentation](https://docs.julialang.org/en/v1.3/)
+ [Multi-threading changes - Julia v1.3 Release Notes](https://docs.julialang.org/en/v1.3/NEWS/#Multi-threading-changes-1)
+ [Multi-threading (API)](https://docs.julialang.org/en/v1.3/base/multi-threading/)
+ [TaskVsThreadVsMP.ipynb](https://gist.github.com/antimon2/2722894a04e3522cc846dd188aca336f)(全実験の notebook)
+ [nbviewer](https://nbviewer.jupyter.org/gist/antimon2/2722894a04e3522cc846dd188aca336f)
---
<!-- .slide: data-background-color="rgba(170,121,193,0.3)" -->
# おまけ
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## JuliaTokai
<!-- .element: style="font-size: 360%" -->
Note:
姉妹勉強会の簡単な紹介っ
----
<!-- .slide: data-background="https://i.imgur.com/dMy2fxN.jpg" data-background-color="rgba(102,130,223,0.3)" -->
Note:
前回の勉強会の様子
![前回の勉強会の様子](https://i.imgur.com/dMy2fxN.jpg)
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![JuliaTokai グループページ - connpass](https://i.imgur.com/BJEkktQ.png)https://juliatokai.connpass.com/](https://juliatokai.connpass.com/)<!-- .element: style="font-size: 80%" -->
Note:
勉強会の告知・募集サイトっ!
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
### 勉強会の内容
+ [Julia](https://julialang.org) の東海地方ユーザグループ
+ Julia に関すること、以外特にテーマは決めない!
+ 基本、もくもく会
Note:
難しくないよーこわくないよー
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
### 次回
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![JuliaTokai \#05](https://i.imgur.com/O4FVJMR.png)https://juliatokai.connpass.com/event/157797/](https://juliatokai.connpass.com/event/157797/)<!-- .element: style="font-size: 80%" -->
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ 2020/02/08(土):[第5回](https://juliatokai.connpass.com/event/157797/) 開催!
+ 一周年!
+ 基本、もくもく会
+ リモート参加もできるよ!
Note:
次回も、基本もくもく会の予定っ!
----
<!-- .slide: data-background-color="rgba(44,214,221,0.3)" -->
## 来栖川電算
Note:
スポンサー枠っ
----
<!-- .slide: data-background="https://i.imgur.com/5CbxlN7.jpg" data-background-color="rgba(44,214,221,0.3)" -->
Note:
![募集中!](https://i.imgur.com/5CbxlN7.jpg)
---
<!-- .slide: data-background-color="rgba(170,121,193,0.3)" -->
ご清聴ありがとうございます。
Note:
ご清聴ありがとうございますっ!
{"metaMigratedAt":"2023-06-15T03:38:38.565Z","metaMigratedFrom":"YAML","title":"Julia v1.3 の紹介","breaks":"true","slideOptions":"{\"transition\":\"slide\",\"theme\":\"league\"}","contributors":"[{\"id\":\"80062a4b-8dad-49ac-95bf-848ce0686e9e\",\"add\":11293,\"del\":7604}]"}