Slide 1

Slide 1 text

&MJYJS1IPFOJY/FSWFTͷ࠷৽ಈ޲ͱ )BTUFHBվΊ1FMFNBZΛ த֩ͱ͢Δࠓޙͷݚڀ։ൃํ਑ ๺۝भࢢཱେֶɹࢁ࡚ਐ 1 ˜4VTVNV:BNB[BLJ

Slide 2

Slide 2 text

ຊൃද֩৺෦෼ ߏ૝ਤ ͸$0/'*%&/5*"-Ͱ͢ ֩৺෦෼ʹ͍ͭͯ͸ࢿྉΛެ։͢Δ༧ఆͳ͠Ͱ͢
 ֩৺෦෼ͷࣸਅɾ4/4֦ࢄ౳΋͝ԕྀ͍ͩ͘͞ લ࠲෦෼ʹ͍ͭͯ͸ɼࣸਅɾ4/4֦ࢄ0,Ͱ͢ 2 ˜4VTVNV:BNB[BLJ

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

1 Elixir、マイナー言語だけど、地味に生活を支えてます &MJYJSͷ࠾༻ࣄྫ 4 ˜4VTVNV:BNB[BLJ

Slide 5

Slide 5 text

&MJYJS ΤϦΫαʔ 
 1FMFNBZ ϖϨϝΠ 
 ͕ٻΊΒΕΔഎܠͱ͸ʁ 5 ˜4VTVNV:BNB[BLJ

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

(Ͱ௨৴଎౓͸޲্͢Δ w (CQTΛ௒͑Δ௨৴ /55υίϞެࣜ w (CQTΛ௒͑Δ௨৴Λୡ੒࣮ͨ͠ݧ݁Ռ͋Γ ӳޠ 8JLJQFEJB w (ΑΓߴ͍प೾਺Λ༻͍Δ͜ͱ͔Βɼج஍ہ͔Βͷ࠷େ ڑ཭͕୹͍
 ˠج஍ہΛߴີ౓ʹઃஔ͠ͳ͍ͱ͍͚ͳ͍ w NTఔ౓ͷϨΠςϯγ ӳޠ8JLJQFEJB 8 ˜4VTVNV:BNB[BLJ

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

(16 w࠷৽(16͸
 ()[Ҏ্ͷ
 ΫϩοΫप೾਺
 Ҏ্ͷ4*.%ίΞ

Slide 13

Slide 13 text

,JMPDPSF w .*.%ํࣜίΞ DPSFT w ϝϞϦϞδϡʔϧ NFNPSZ NPEVMFT w ONϓϩηεϧʔϧ QSPDFTTSVMF w ࠷େ()[ 7 NBYJNVN w 7࣌()[N8
 Q+໋ྩ MPXFOFSHZ w *OUFMJ΍/7*%*"(16ͱൺ΂ɼ 7࣌εϧʔϓοτഒҎ্ɼ
 ΤωϧΪʔޮ཰ഒҎ্ ˜4VTVNV:BNB[BLJ B. Bohnenstiehl et al., "KiloCore: A 32-nm 1000-Processor Computational Array," in IEEE Journal of Solid-State Circuits, vol. 52, no. 4, pp. 891-902, April 2017.

Slide 14

Slide 14 text

5IF$FSFCSBT8BGFS4DBMF&OHJOF 84& w ΢ΣϋʔαΠζͷνοϓ w ஹݸͷτϥϯδελ਺ w ล͕NN w (#ͷΦϯνοϓϝϞϦ POUJQNFNPSJFT w ສίΞ DPSFT w ফඅిྗL8 ˜4VTVNV:BNB[BLJ © 2019 Cerebras systems.

Slide 15

Slide 15 text

ࠓޙͷ൒ಋମτϨϯυ w ϝϞϦͷߴ଎Խ͕ϓϩηοαͷߴ଎Խʹ௥͍͍͍ͭͯͳ͍ w ίΞ਺͸ࠓޙ΋૿େ͠ଓ͚Δ w ൒ಋମϓϩηεඍࡉԽ͸ݶքΛܴ͑ͭͭ͋Δ w ଞͷ֤छूੵٕज़ʹΑΓճ࿏ن໛͸౰෼૿େͷ༨஍͕͋Δ w ճ࿏௕͕ࠓ·ͰҎ্ʹ௕͘ͳΔ w ࠓ·ͰҎ্ʹϝϞϦΞΫηεͱޫ଎͕཯଎ʹͳΔ w ڞ༗ϝϞϦিಥɼϑΥϯɾϊΠϚϯɾϘτϧωοΫ w ճ࿏શମͰΫϩοΫΛಉظͤ͞Δ͜ͱ͕ෆՄೳʹ w ڞ༗ܕΞʔΩςΫνϟΑΓ΋෼ࢄܕΞʔΩςΫνϟ༏Ґ 15 ˜4VTVNV:BNB[BLJ

Slide 16

Slide 16 text

৘ใྔ૿େʴ௨৴଎౓޲্
 ˠٻΊΒΕΔܭࢉྔ૿େ ΫϩοΫप೾਺৳ͼ೰ΈʴίΞ਺૿େ
 ˠܭࢉྔΛ૿΍͢ʹ͸ฒྻॲཧ͕ඞཁ 16 ˜4VTVNV:BNB[BLJ

Slide 17

Slide 17 text

Ͱ΋ฒྻॲཧΛॻ͘ͷ͸
 ͚ͬ͜͏໘౗Ͱ͢ΑͶʁ 17 ˜4VTVNV:BNB[BLJ

Slide 18

Slide 18 text

&MJYJS'MPX
 1FMFNBZ 18 ˜4VTVNV:BNB[BLJ

Slide 19

Slide 19 text

4IBSFE%BUB $PSF #1 $PSF2 3.14 ैདྷͷݴޠͷ໰୊఺ w ෳ਺ͷίΞͰσʔλΛڞ༗͠ ͍ͯΔͱԾఆ͢Δ ˜4VTVNV:BNB[BLJ

Slide 20

Slide 20 text

4IBSFE%BUB $PSF #1 $PSF2 3.14 →1.5 ഁյతߋ৽͕ϘτϧωοΫ w ͋ΔίΞ͕ڞ༗σʔλΛ
 ഁյతߋ৽ͨ͠৔߹ w ଞͷίΞʹ௨஌ͯ͠
 ॲཧΛࢭΊΔඞཁ͕͋Δ w ଎౓௿Լʹͭͳ͕Δ w ίΞ਺͕૿͑Ε͹૿͑Δ΄Ͳ
 ਂࠁͳӨڹΛ΋ͨΒ͢ ˜4VTVNV:BNB[BLJ 6QEBUF /PUJGZ 4UPQ1SPDFTTJOH

Slide 21

Slide 21 text

4IBSFE%BUB $PSF #1 $PSF2 3.14 &MJYJS͸શ͕ͯΠϛϡʔλϒϧͰ͋Δ w &MJYJSͰ͸σʔλͷഁյతߋ৽ ͕ൃੜ͢Δ͜ͱ͸ͳ͍ w ଞͷίΞͷॲཧΛࢭΊͳͯ͘ ྑ͍ w ίΞ਺͕૿͑ͯ΋ॲཧೳྗΛ ҡ࣋Ͱ͖Δ ‎ฒྻੑʹ༏ΕΔ ˜4VTVNV:BNB[BLJ %PO`U
 6QEBUF %PO`UOFFEUP
 TUPQQSPDFTTJOH

Slide 22

Slide 22 text

˜4VTVNV:BNB[BLJ w ӈͷίʔυྫ w ͔Β ·ͰͷϦετʹ w ֤ཁૉʹGPPΛద༻ Y w ֤ཁૉʹCBSΛద༻ w ͨ݁͠ՌΛಘΔ w ഁյతߋ৽ͳ͠Ͱ
 σʔλΛ্͔Βॱʹม׵͍ͯ͘͠
 ʮσʔλม׵ʯύϥμΠϜ w ຊ࣭ඒͳͷͰʮષʯ 1..1_000_000 |> Enum.map(&M.foo(&1))
 |> Enum.map(&M.bar(&1))
 
 defmodule M do def foo( n ), do: n * 2 def bar( n ), do: n + 1 end &MJYJS;FOελΠϧ 22

Slide 23

Slide 23 text

˜4VTVNV:BNB[BLJ 23 w ࠷৽ͷ$16(16͸
 ϚϧνίΞΛ௒͑ͯ
 ϝχʔίΞ w ͜ͷίʔυ͸
 ֤ཁૉؒʹґଘؔ܎͕ͳ͘
 ࠷େ ฒྻͰ
 ࣮ߦՄೳ ؆୯ʹฒྻԽՄೳʂ 1..1_000_000 |> Enum.map(&M.foo(&1))
 |> Enum.map(&M.bar(&1))
 
 defmodule M do def foo( n ), do: n * 2 def bar( n ), do: n + 1 end

Slide 24

Slide 24 text

'MPX w&MJYJSͷ࡞ऀ+PTÉ7BMJN͕ ೥ʹ࡞ͬͨ
 ฒྻॲཧϥΠϒϥϦ wएׯͷهड़Λ଍͚ͩ͢Ͱ
 ϚϧνίΞ$16Λ׆༻ wෳࡶͳॲཧΛฒྻԽ͢Δ৔߹ʹ ޮՌΛൃش
 ୯७ͳॲཧͰ͸ޮՌ͕ग़ͳ͍ wཁૉͷॱ൪͕ೖΕସΘΔ͜ͱ͕ ͋Δ఺ʹ஫ҙ ୯Ұ$16Ͱॲཧ def func do
 1..1_000_000
 |> Enum.map(&foo(&1))
 |> Enum.map(&bar(&1))
 end ฒྻॲཧ def func do
 1..1_000_000
 |> Flow.from_enumerable
 |> Flow.map(&foo(&1))
 |> Flow.map(&bar(&1))
 |> Enum.to_list
 end

Slide 25

Slide 25 text

1FMFNBZ wࢁ࡚ͱٱߐ͕೥͔Β։ൃ͠͸͡ Ίͨฒྻॲཧܥ wएׯͷهड़Λ଍͚ͩ͢Ͱ$16ͷ4*.% ໋ྩΛ׆༻ wݱࡏ͸਺஋࢛ଇԋࢉͷΈαϙʔτɼ
 কདྷ͸&MJYJSશݴޠ࢓༷Λαϙʔτ༧ఆ wϚϧνίΞΛαϙʔτ͍ͯ͠ͳ͍ݱࡏ ͸ɼ·ͩ'MPXͱͷ࢖͍෼͚͕ඞཁ wݱ࣌఺Ͱ͸'MPXͱซ༻͢Δͱ஗͘ͳΔ wকདྷ͸$16(16Λϑϧ׆༻༧ఆ ୯Ұ$16Ͱॲཧ def func do
 1..1_000_000
 |> Enum.map(&foo(&1))
 |> Enum.map(&bar(&1))
 end ฒྻॲཧ defpelemay do
 def func do
 1..1_000_000
 |> Enum.map(&foo(&1))
 |> Enum.map(&bar(&1))
 end
 end

Slide 26

Slide 26 text

σϞϯετϨʔγϣϯ
 ౰೔͸1FMFNBZΛ࣮ߦͤͯ͞Έ·ͨ͠ 26 ˜4VTVNV:BNB[BLJ

Slide 27

Slide 27 text

ݱ࣌఺Ͱͷ׆༻ͷํ޲ੑ w 'MPXΛ࢖ͬͯฒྻεΫϨΠϐϯά w 'MPXͱ0QFO$7Λ࢖ͬͯฒྻը૾ॲཧ w 1FMFNBZΛ࢖ͬͯฒྻࢉज़ܭࢉ w &MJYJSͷߦྻܭࢉϥΠϒϥϦ΍σΟʔϓϥʔχϯάϥΠϒϥ Ϧ΁ͷ1FMFNBZͷద༻ΛਐΊ͍ͯ·͢ w 1FMFNBZ͸·ͩ·ͩػೳ͕଍Γͳ͍Ͱ͕͢ɼݚڀ։ൃΛ ਫ਼ྗతʹਐΊ͍ͯ·͢ʂ 27 ˜4VTVNV:BNB[BLJ

Slide 28

Slide 28 text

͓·͚/FSWFTʹ͍ͭͯ w &MJYJS$POG
 %BZ.PSOJOH,FZOPUF+VTUJO4DIOFDL
 IUUQTZPVUVCFG31@E7UPOP w /FSWFTͷຊ࣭ͷͭ͸ΠϛϡʔλϒϧϑΝΠϧγεςϜ w ಈతʹมߋ͢Δσʔλ͸શͯσʔλϕʔεʹू໿ w NBUTVNPUPSZl௒ݸମܕσʔληϯλʔ04Λ໨ࢦͨ͠બ୒ੑΛ ࣋ͭίϯςφ࣮ߦج൫zʹͯɼ
 /FSWFT΍ͦΕʹྨ͢ΔΠϛϡʔλϒϧϑΝΠϧγεςϜΛධՁ ͯ͠ΈΔͱྑ͍͔ͱࢥ͍·͢ 28 ˜4VTVNV:BNB[BLJ

Slide 29

Slide 29 text

֩৺෦෼ʹ͍ͭͯ͸͝ΊΜͳ͍͞ ݱ࣌఺Ͱ͸ࢿྉඇެ։Ͱ͢ N @@ N 29 ˜4VTVNV:BNB[BLJ