Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核とする今後の研究開発方針

Elixir/Phoenix/Nervesの最新動向と Hastega 改め Pelemay を 中核とする今後の研究開発方針

第5回WSA研究会発表資料

Susumu Yamazaki (ZACKY)

September 28, 2019
Tweet

More Decks by Susumu Yamazaki (ZACKY)

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ w ࢁ࡚ਐ ΍·͖͟͢͢Ή  w ๺۝भࢢཱେֶࠃࡍ؀ڥ޻ֶ෦।ڭत w φοδࣾձ࣮૷ݚڀηϯλʔηϯλʔ௕ w

    ֶੜɾब৬ࢧԉ୲౰ w 1FSTPOBM7JTJPO$P$SFBUPS w ,,4)J'5 w &MJYJSਪ͠GVLVPLBFY1FMFNBZ w ٕज़૬ஊɼڞಉݚڀґཔɼਐ࿏૬ஊɼ
 ద৬਍அͳͲɼਵ࣌ड෇·͢   ˜4VTVNV:BNB[BLJ
  2. (Ͱ௨৴଎౓͸޲্͢Δ w (CQTΛ௒͑Δ௨৴ /55υίϞެࣜ  w (CQTΛ௒͑Δ௨৴Λୡ੒࣮ͨ͠ݧ݁Ռ͋Γ ӳޠ 8JLJQFEJB 

    w (ΑΓߴ͍प೾਺Λ༻͍Δ͜ͱ͔Βɼج஍ہ͔Βͷ࠷େ ڑ཭͕୹͍
 ˠج஍ہΛߴີ౓ʹઃஔ͠ͳ͍ͱ͍͚ͳ͍ w NTఔ౓ͷϨΠςϯγ ӳޠ8JLJQFEJB 8 ˜4VTVNV:BNB[BLJ
  3. ͔ΘΓʹίΞ਺͕૿Ճ w ೥Ҏ߱ͷϓϩηοαͷਐԽ w ºΫϩοΫप೾਺ w ˓ίΞ਺   ˜4VTVNV:BNB[BLJ

    *OUFM$PSF
 &YUSFNF9  $MPDL ()[ PG$PSFT  *OUFM$PSFJ
 9&  $MPDL ()[ PG$PSFT 
  4. ,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.
  5. 5IF$FSFCSBT8BGFS4DBMF&OHJOF 84& w ΢ΣϋʔαΠζͷνοϓ w ஹݸͷτϥϯδελ਺ w ล͕NN w (#ͷΦϯνοϓϝϞϦ

    POUJQNFNPSJFT  w ສίΞ DPSFT  w ফඅిྗL8   ˜4VTVNV:BNB[BLJ © 2019 Cerebras systems.
  6. ࠓޙͷ൒ಋମτϨϯυ w ϝϞϦͷߴ଎Խ͕ϓϩηοαͷߴ଎Խʹ௥͍͍͍ͭͯͳ͍ w ίΞ਺͸ࠓޙ΋૿େ͠ଓ͚Δ w ൒ಋମϓϩηεඍࡉԽ͸ݶքΛܴ͑ͭͭ͋Δ w ଞͷ֤छूੵٕज़ʹΑΓճ࿏ن໛͸౰෼૿େͷ༨஍͕͋Δ w

    ճ࿏௕͕ࠓ·ͰҎ্ʹ௕͘ͳΔ w ࠓ·ͰҎ্ʹϝϞϦΞΫηεͱޫ଎͕཯଎ʹͳΔ w ڞ༗ϝϞϦিಥɼϑΥϯɾϊΠϚϯɾϘτϧωοΫ w ճ࿏શମͰΫϩοΫΛಉظͤ͞Δ͜ͱ͕ෆՄೳʹ w ڞ༗ܕΞʔΩςΫνϟΑΓ΋෼ࢄܕΞʔΩςΫνϟ༏Ґ 15 ˜4VTVNV:BNB[BLJ
  7. 4IBSFE%BUB $PSF #1 $PSF2 3.14 →1.5 ഁյతߋ৽͕ϘτϧωοΫ w ͋ΔίΞ͕ڞ༗σʔλΛ
 ഁյతߋ৽ͨ͠৔߹

    w ଞͷίΞʹ௨஌ͯ͠
 ॲཧΛࢭΊΔඞཁ͕͋Δ w ଎౓௿Լʹͭͳ͕Δ w ίΞ਺͕૿͑Ε͹૿͑Δ΄Ͳ
 ਂࠁͳӨڹΛ΋ͨΒ͢   ˜4VTVNV:BNB[BLJ 6QEBUF /PUJGZ 4UPQ1SPDFTTJOH
  8. 4IBSFE%BUB $PSF #1 $PSF2 3.14 &MJYJS͸શ͕ͯΠϛϡʔλϒϧͰ͋Δ w &MJYJSͰ͸σʔλͷഁյతߋ৽ ͕ൃੜ͢Δ͜ͱ͸ͳ͍ w

    ଞͷίΞͷॲཧΛࢭΊͳͯ͘ ྑ͍ w ίΞ਺͕૿͑ͯ΋ॲཧೳྗΛ ҡ࣋Ͱ͖Δ ‎ฒྻੑʹ༏ΕΔ   ˜4VTVNV:BNB[BLJ %PO`U
 6QEBUF %PO`UOFFEUP
 TUPQQSPDFTTJOH
  9. ˜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
  10. ˜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
  11. '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
  12. 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
  13. ͓·͚/FSWFTʹ͍ͭͯ w &MJYJS$POG
 %BZ.PSOJOH,FZOPUF+VTUJO4DIOFDL
 IUUQTZPVUVCFG31@E7UPOP w /FSWFTͷຊ࣭ͷͭ͸ΠϛϡʔλϒϧϑΝΠϧγεςϜ w ಈతʹมߋ͢Δσʔλ͸શͯσʔλϕʔεʹू໿ w

    NBUTVNPUPSZl௒ݸମܕσʔληϯλʔ04Λ໨ࢦͨ͠બ୒ੑΛ ࣋ͭίϯςφ࣮ߦج൫zʹͯɼ
 /FSWFT΍ͦΕʹྨ͢ΔΠϛϡʔλϒϧϑΝΠϧγεςϜΛධՁ ͯ͠ΈΔͱྑ͍͔ͱࢥ͍·͢ 28 ˜4VTVNV:BNB[BLJ