Slide 1

Slide 1 text

௒ฒྻߴ଎࣮ߦॲཧܥ )BTUFHB ϔΠεΨ ʙ -POFTUBS&MJYJS$POG֌ટؼࠃ ࢁ࡚ਐ 1 ˜4VTVNV:BNB[BLJ

Slide 2

Slide 2 text

ࣗݾ঺հ w 5XJUUFS'BDFCPPL(JU)VC(.BJM
 ͢΂ͯ[BDLZ w ๺۝भࢢཱେֶࠃࡍ؀ڥ޻ֶ෦।ڭत w &MJYJSਪ͠GVLVPLBFY)BTUFHB w φοδࣾձ࣮૷ݚڀηϯλʔηϯλʔ௕ w ֶੜɾब৬ࢧԉ୲౰ w 1FSTPOBM7JTJPO$P$SFBUPS w ,,4)J'5 w ٕज़૬ஊɼڞಉݚڀґཔɼਐ࿏૬ஊɼ
 ద৬਍அͳͲɼਵ࣌ड෇·͢ ˜4VTVNV:BNB[BLJ

Slide 3

Slide 3 text

)BTUFHB ϔΠεΨ 
 ͬͯԿʁ 3 ˜4VTVNV:BNB[BLJ

Slide 4

Slide 4 text

)BTUFHB ϔΠεΨ w ΢ΣϒΞϓϦέʔγϣϯͰ༻͍Δ
 ը૾ॲཧɾػցֶश౳Λ w &MJYJSͰ؆ܿʹهड़ͯ͠ w αʔόʔɼ΢ΣϒΫϥΠΞϯτɼ
 Τοδ্ͷ$16(16ʹෛՙ෼ࢄ
 ͤ͞ͳ͕Βߴ଎ʹฒྻ࣮ߦͤ͞Δ
 ͜ͱΛ໨ࢦ͢ॲཧܥ w ໊শ͸''༝དྷ
 ஥ؒΛߴ଎Խͤ͞Δຐ๏ w ৄࡉ͸ޙड़ ˜4VTVNV:BNB[BLJ

Slide 5

Slide 5 text

-POFTUBS&MJYJS$POG ͬͯԿʁ 5 ˜4VTVNV:BNB[BLJ

Slide 6

Slide 6 text

-POFTUBS&MJYJS$POG w ౙʹςΩαεभΦʔεςΟϯͰ։࠵ ͞ΕΔ&MJYJSͷΧϯϑΝϨϯε w -POFTUBS͸ςΩαεभͷभضͷ
 γϯϘϧ w ೥͸݄೔ʙ݄೔ʹ։࠵
 IUUQTXXXMPOFTUBSFMJYJSDPOGDPN w &MJYJSઐ໳ͷΧϯϑΝϨϯεͰ͋Δ &MJYJS$POG64ɼ&MJYJS$POG&6ʹ ͙࣍ୈҐͷن໛ ˜4VTVNV:BNB[BLJ

Slide 7

Slide 7 text

-POFTUBS&MJYJS$POG ʹԿ͠ʹߦͬͨͷʁ 7 ˜4VTVNV:BNB[BLJ

Slide 8

Slide 8 text

)BTUFHBւ֎σϏϡʔ w -POFTUBS&MJYJS$POGͰ )BTUFHBΛൃද͠·ͨ͠ʂ ˜4VTVNV:BNB[BLJ IUUQTZPVUVCFMZQRM(M,4P IUUQTXXXMPOFTUBSFMJYJSDPOGDPNTQFBLFSTTVTVNVZBNB[BLJ

Slide 9

Slide 9 text

ͲΜͳൃදͨ͠ͷʁ 9 ˜4VTVNV:BNB[BLJ

Slide 10

Slide 10 text

Hastega: Challenge for GPGPU on Elixir Susumu Yamazaki (ZACKY) Associate Professor at Univ. of Kitakyushu Adviser at fukuoka.ex

Slide 11

Slide 11 text

We’re three Samurais from fukuoka.ex, like “Les Trois Mousquetaires” (The Three Musketeers)

Slide 12

Slide 12 text

We’ll show you
 our spirits of
 Samurai and Zen…

Slide 13

Slide 13 text

Long, long distance… The world with
 destructive updates is…

Slide 14

Slide 14 text

Dystopia! © 2014, Teresa Prater

Slide 15

Slide 15 text

© 2011, Pavel Medzyun Their works become
 dystopia!

Slide 16

Slide 16 text

Our solution:
 Hastega!!!

Slide 17

Slide 17 text

Hastega • It’s a magic!! • the highest evolved magic to accelerate our party in Final Fantasy!
 (Stronger than Haste) • It will be the highest evolved technology to accelerate our machines in the Elixir ecosystem! It’s inspired by Flow

Slide 18

Slide 18 text

Let’s cast a spell of Hastega on Samurai

Slide 19

Slide 19 text

4-8x faster than Elixir using Flow! and also faster than P-map
 (Parallel map) ↑ Slower ↓ Faster Flow

Slide 20

Slide 20 text

3x+ faster than Python with GPU (CuPy) !!! ↑ Slower ↓ Faster

Slide 21

Slide 21 text

Only a little slower than native code (Rust)!! Dead heat!! ↑ Slower ↓ Faster

Slide 22

Slide 22 text

Overwhelming Effectiveness like a berserk Samurai

Slide 23

Slide 23 text

By the way,
 which is better, 
 recursive call and Enum.map?

Slide 24

Slide 24 text

Enum.map is simpler! It’s like Zen! ˜4UFQIBOF%"MV

Slide 25

Slide 25 text

Why is Enum.map Zen? ˜4UFQIBOF%"MV • Zen is the essential beauty • The essential of programming is data transformation • Enum.map describes only data transformation list = 1..1_000_000 |> Enum.to_list list 
 |> Enum.map(&foo(&1))
 |> Enum.map(&bar(&1))

Slide 26

Slide 26 text

1..1_000_000 
 |> Enum.map(&foo(&1))
 |> Enum.map(&bar(&1)) • We propose to call it the Elixir Zen style to write in Enum.map • It is a good programming custom • Because it’s more readable and maintainable The Elixir Zen style

Slide 27

Slide 27 text

Then, what will happen? ˜4UFQIBOF%"MV

Slide 28

Slide 28 text

In Elixir on Erlang VM, the Elixir Zen style is 20 percents slower than recursive call list = 1..1_000_000 |> Enum.to_list list 
 |> Enum.map(&foo(&1))
 |> Enum.map(&bar(&1)) list
 |> func()
 
 def func( [] ), do: [] def func( [ head | tail ] ) do
 [ head |> foo |> bar 
 | func(tail) ]
 end 6msec ↑ Slower ↓ Faster Performance Evaluation

Slide 29

Slide 29 text

© 2011, Pavel Medzyun It’s Zen, but not Samurai…! It will cause dystopia!

Slide 30

Slide 30 text

• make the Elixir Zen styled code faster • by casting the spell of it on Samurai to be berserk • that is, to be transformed into the fastest native code, 
 using all computing resources, • not only multi-core CPUs (with SIMD instructions)
 but also GPUs Hastaga will… We feel it Wabi-Sabi

Slide 31

Slide 31 text

Hastega makes the most beautiful code to be transformed the fastest!

Slide 32

Slide 32 text

Do you wanna get power of Hastega, now?

Slide 33

Slide 33 text

I’m sorry, but the 1st practical use version of Hastega will be released before Summer, 2019 m(_ _)m

Slide 34

Slide 34 text

ͳΜͰ)BTUFHBΛ
 ։ൃͨ͠ͷʁ 34 ˜4VTVNV:BNB[BLJ

Slide 35

Slide 35 text

৘ใྔരൃ ೥ʹσʔλͷ૯ྔ͕θλόΠτ ೥ʹθλόΠτʹୡ͢ΔݟࠐΈ 35 ˜4VTVNV:BNB[BLJ

Slide 36

Slide 36 text

৘ใྔരൃ ೥ʹຖ݄ΤΫαόΠτ૿Ճ ೥ʹຖ݄ΤΫαόΠτ૿ՃݟࠐΈ ৘ใͷ૿Ճྔ͕Ճ଎ 36 ˜4VTVNV:BNB[BLJ

Slide 37

Slide 37 text

ܭࢉೳྗ͕௥͍͔ͭͳ͍ )FOOFTZ1BUUFSTPO
 ೥ʹ$16ΫϩοΫप೾਺͸಄ଧͪʹ 37 ˜4VTVNV:BNB[BLJ

Slide 38

Slide 38 text

ͳͥΫϩοΫप೾਺Λ৳͹ͤͳ͍͔ʁ w ΫϩοΫप೾਺ͷ૿େ͸ফඅిྗͱൃ೤ྔͷ૿େΛট͘ w ిݯڙڅྔͱ೤఻ಋ཰͓Αͼྫྷ٫ೳྗ͕௥͍͔ͭͳ͍ w ʙ()[ఔ౓ͰৗԹͰ҆ఆಈ࡞͢ΔݶքΛܴ͍͑ͯΔ w ڝٕ༻ΦʔόʔΫϩοΫͰ͸ӷମ஠ૉ౳ʹਁ͚Δ౳ʹ ΑΓ()[Ҏ্Ͱಈ࡞͍ͤͯ͞Δ w ௨ৗͷ1$΍αʔόʔͰ͸ৗԹՔಇͰ͖Δ͜ͱ͕ཁ݅ 38 ˜4VTVNV:BNB[BLJ

Slide 39

Slide 39 text

͔ΘΓʹίΞ਺͕૿Ճ w ೥Ҏ߱ͷϓϩηοαͷਐԽ w ºΫϩοΫप೾਺ w ˓ίΞ਺ ˜4VTVNV:BNB[BLJ *OUFM$PSF
 &YUSFNF9 ΫϩοΫ ()[ ίΞ਺ *OUFM$PSFJ
 9& ΫϩοΫ ()[ ίΞ਺

Slide 40

Slide 40 text

)BTUFHBͬͯ
 ͲΜͳͷʁ 40 ˜4VTVNV:BNB[BLJ

Slide 41

Slide 41 text

)BTUFHBͷݪཧ ˜4VTVNV:BNB[BLJ @@ c&OVNNBQ .GPP 
 c&OVNNBQ .CBS 
 
 EFGNPEVMF.EP EFGGPP O EPO EFGCBS O EPO FOE &MJYJS;FO4UZMF
 &OVNNBQελΠϧ @@LFSOFMWPJEDBMD @@HMPCBMMPOHJOQVU @@HMPCBMMPOHPVUQVU \ TJ[F@UJHFU@HMPCBM@JE MPOHUFNQJOQVU UFNQGPP UFNQ UFNQCBS UFNQ PVUQVUUFNQ ^ 0QFO$-
 Χʔωϧ෦ w ࠨͷίʔυ͸ ฒྻͷՄೳੑ͕͋Δ w ࠨͷίʔυ͔Βӈͷίʔυ΁ػցతʹม׵Ͱ͖Δ w ࠷৽(16ͷ Ҏ্ͷ4*.%ίΞͰฒྻ࣮ߦՄೳ

Slide 42

Slide 42 text

)BTUFHBͷίʔυྫ ˜4VTVNV:BNB[BLJ EFGNPEVMF)EP SFRVJSF)BTUFHB JNQPSU)BTUFHB EFGIBTUFHBEP EFGGVOD MJTU EP MJTU c&OVNNBQ 
 c&OVNNBQ FOE IBTUFHBTUVC FOE FOE w SFRVJSF)BTUFHBͰ)BTUFHBΛಡࠐΈ w JNQPSU)BTUFHBͰϞδϡʔϧ໊Λ෇ه
 ͤͣʹEFGIBTUFHB΍IBTUFHBTUVC͕
 ར༻Ͱ͖Δ w EFGIBTUFHBEPʜFOEͰʜͷίʔυΛ
 ॲཧܥʹಡࠐΉ w IBTUFHBTUVCͰίʔυੜ੒Λߦ͏

Slide 43

Slide 43 text

-POFTUBS&MJYJS$POG ͷΈ΍͛࿩͸ʁ 43 ˜4VTVNV:BNB[BLJ

Slide 44

Slide 44 text

/FSWFT w &MJYJSΛ*P5૊ࠐΈγεςϜʹ ಋೖ͢ΔιϦϡʔγϣϯ w -POFTUBS&MJYJS$POGͰ͸ &MJYJS1IPFOJYͱର౳ͳଘࡏͱ͠ ͯ঺հ͞Ε͍ͯͨ w ,FZOPUFຊ
 1SFTFOUBUJPOຊ
 5SBJOJOHຊ
 -5ຊ w ৄ͘͠͸ߴ੉ઌੜͷൃදΛָ͠Έ ʹ͍ͯͩ͘͠͞ʂ ˜4VTVNV:BNB[BLJ IUUQTZPVUVCF*U*WOEU['.

Slide 45

Slide 45 text

1IPFOJY-JWF7JFX w 1IPFOJYͷ࡞ऀ$ISJTͷൃද
 -JWF7JFX w ΋͏ϦϦʔε͞ΕͨͷͰɼ
 ࢼͨ͠ਓ΋ଟ͍ͷͰ͸ʁ w /FSWFTͱ-JWF7JFXΛ઀ଓ ͨ͠σϞ΋͋Γ ˜4VTVNV:BNB[BLJ

Slide 46

Slide 46 text

-VODIJTPEF w ೔໨ͷϥϯνλΠϜʹ
 ߨԋऀઐ༻ͷ෦԰Ͱٞ࿦ͨ͠
 ༷ࢠΛऩ࿥ w &MJYJS1IPFOJY/FSWFTͷ
 ະདྷʹ͍ͭͯޠΓ߹͏ w )BTUFHBʹ͍ͭͯ΋Ұੜݒ໋ ͠Ό΂Γ·ͨ͠ w ࠓɼฉ͍ͯ΋ɼ൒෼͘Β͍͠ ͔ฉ͖औΕͳ͍ɻɻɻ ˜4VTVNV:BNB[BLJ IUUQTQPEDBTUTNBSUMPHJDJPTQFDJBMMPOFTUBSFMJYJS

Slide 47

Slide 47 text

&MJYJSOFYU5IF3JWFS w ٕज़ίϛϡχςΟͷਐาͷྺ࢙Λ
 େՏͷྲྀΕʹͨͱ͑Δ w ্ྲྀ͔ΒԼྲྀʹྲྀΕΔʹͭΕͯ
 ίϛϡχςΟͷ͋Γํ͕ม࣭͢Δ w ίϛϡχςΟʹͲ͏ؔΘΔ΂͖͔ w ίϛϡχςΟ΁ฦ͢ɼߩݙ͢Δ w ʮ7PUF౤ථͤΑʯ w ʮ௨աّྱʯతηογϣϯ w ࠷΋ݟΔ΂͖ϓϨθϯςʔγϣϯ ˜4VTVNV:BNB[BLJ IUUQTZPVUVCF,8S81H*

Slide 48

Slide 48 text

&SMBOH&DPTZTUFN'PVOEBUJPO w &MJYJSͷ࡞ऀ+PTÉ7BMJNͷ
 ,FZOPUFຊ໨ ຊ໨΋ݟͯͶ w &MJYJSOFYU͔ΒͷྲྀΕΛड͚
 &MJYJSͷ฼ମͰ͋Δ&SMBOHͱ
 Ͳ͏͍͏ؔ܎ੑΛ΋͔ͭʁ
 ʹ͍ͭͯ+PTÉ͔ΒޠΒΕͨ w &SMBOH&DPTZTUFN'PVOEBUJPO ʹՃೖͯ͠ʮ7PUF౤ථʯͯ͠
 ΄͍͠ͱݺͼ͔͚ͨ w &SMBOH΁ͷϦεϖΫτΛ෷͍ɼ
 &MJYJS͔Β୅දΛग़ͦ͏ͱ͍͏ಈ͖ ˜4VTVNV:BNB[BLJ IUUQTZPVUVCFR$"2V51P.

Slide 49

Slide 49 text

+PTÉͱͷަྲྀ w )BTUFHBߨԋޙɼ+PTÉ͕೤৺ ʹ࣭໰͖ͯͨ͠ w +PTÉͷߨԋޙɼࢲ΋ٞ࿦͢Δ w )BTUFHB͕+PTÉͷߏ૝͢Δ ϩʔυϚοϓ্ͷཁૉٕज़
 Ͱ͋Δ͜ͱΛ֬ೝ w ؼࠃޙϝʔϧͰจ௨͢Δ஥ʹ ˜4VTVNV:BNB[BLJ

Slide 50

Slide 50 text

+PTÉ͕໌Β͔ʹͨ͠
 ڻዼͷࣄ࣮ 50 ˜4VTVNV:BNB[BLJ

Slide 51

Slide 51 text

ܦҢ w +PTÉ͸)BTUFHBʹͱͯ΋ڵຯΛ࣋ͬͯ͘Ε w ͳΜͱɼࢲͷॻ͍ͨ೔ຊޠͷ࿦จΛࣗ෼Ͱ຋༁ͯ͠ಡΜͰ͘Εͨ w ͦͷͱ͖ʹ͜Μͳϝʔϧ͕ૹΒΕ͖ͯͨ 51 ˜4VTVNV:BNB[BLJ

Slide 52

Slide 52 text

˜4VTVNV:BNB[BLJ

Slide 53

Slide 53 text

˜4VTVNV:BNB[BLJ

Slide 54

Slide 54 text

˜4VTVNV:BNB[BLJ

Slide 55

Slide 55 text

˜4VTVNV:BNB[BLJ

Slide 56

Slide 56 text

ʜͰɼ)BTUFHBͷ
 ϦϦʔε͸ɼ·ͩͳͷʁ 56 ˜4VTVNV:BNB[BLJ

Slide 57

Slide 57 text

·ͩͰ͢ʂ
 +PTÉͷॿݴͱֶੜͷKPJOͰ
 ΑΓύϫʔΞοϓͯ͠ઈࢍ։ൃதʂ 57 ˜4VTVNV:BNB[BLJ

Slide 58

Slide 58 text

Our adventure of Samurai, Zen and Wabi-Sabi continues…

Slide 59

Slide 59 text

I’ll be back! to share new research results

Slide 60

Slide 60 text

THE END

Slide 61

Slide 61 text

0OFNPSFUIJOH 61 ˜4VTVNV:BNB[BLJ

Slide 62

Slide 62 text

&MJYJS$POG64 ݄೔ʙ೔ w )BTUFHBͷൃදΛ͠·͢ʂ w ৽ͨʹݚڀ։ൃͨ͠৽ٕज़Λ ൃද͠·͢ʂ w ϓϩάϥϜ͸੝Γͩ͘͞Μ w ΈΜͳͰߦ͜͏Αʂ w ੈքͷைྲྀΛײ͡Α͏ʂ ˜4VTVNV:BNB[BLJ IUUQTFMJYJSDPOGDPNTQFBLFST

Slide 63

Slide 63 text

ݚڀʹ͝ڠྗ͍ͩ͘͞ʂ w ͞ΒͳΔίʔυ࠷దԽͷݚڀʹඞཁͳ࣮ߦ࣌৘ใΛऩू͢ΔͨΊͷϓϩϑΝΠϥ Λ೥౓தʹ։ൃ͢Δ༧ఆͰ͢ w ऩू͢Δ৘ใͷྫ
 $16ͷछྨϝϞϦɾΩϟογϡϝϞϦ༰ྔϦεταΠζɾཁૉͷܕ
 ϓϩηε਺ΠςϨʔγϣϯதίʔυྔ&MJYJS;FOελΠϧίʔυͷׂ߹ͳͲ w Ͱ͖Ε͹࣮ӡ༻ʹ͍ۙ৘ใΛऩू͍ͨ͠ͱߟ͍͑ͯ·͢ w ࢲୡͷνʔϜ͚ͩͰσʔλΛಠ઎͢ΔΘ͚Ͱ͸ͳ͘ɼ౷ܭॲཧ্ͨ͠Ͱɼ
 اۀ໊ɾݸਓ໊౳Λ໌͔ͣ͞ʹɼݚڀऀ޲͚ʹσʔλఏڙ͍ͨ͠ͱߟ͍͑ͯ·͢ w ͝ڠྗ͍͚ͨͩΔاۀɾݸਓͷํ͸ɼ͝࿈བྷ͍ͩ͘͞ʂ
 ࢁ࡚ਐ[BDLZ!LJUBLZVVBDKQ 63 ˜4VTVNV:BNB[BLJ

Slide 64

Slide 64 text

݄೔ͷ༧ఆΛۭ͚ͯͶʂ ࠃ಺ͰͷΠϕϯτاըத 64 ˜4VTVNV:BNB[BLJ