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

    View Slide

  2. ຊൃද֩৺෦෼ ߏ૝ਤ
    ͸$0/'*%&/5*"-Ͱ͢
    ֩৺෦෼ʹ͍ͭͯ͸ࢿྉΛެ։͢Δ༧ఆͳ͠Ͱ͢

    ֩৺෦෼ͷࣸਅɾ4/4֦ࢄ౳΋͝ԕྀ͍ͩ͘͞
    લ࠲෦෼ʹ͍ͭͯ͸ɼࣸਅɾ4/4֦ࢄ0,Ͱ͢
    2
    ˜4VTVNV:BNB[BLJ

    View Slide

  3. ࣗݾ঺հ
    w ࢁ࡚ਐ ΍·͖͟͢͢Ή

    w ๺۝भࢢཱେֶࠃࡍ؀ڥ޻ֶ෦।ڭत
    w φοδࣾձ࣮૷ݚڀηϯλʔηϯλʔ௕
    w ֶੜɾब৬ࢧԉ୲౰
    w 1FSTPOBM7JTJPO$P$SFBUPS
    w ,,4)J'5
    w &MJYJSਪ͠GVLVPLBFY1FMFNBZ
    w ٕज़૬ஊɼڞಉݚڀґཔɼਐ࿏૬ஊɼ

    ద৬਍அͳͲɼਵ࣌ड෇·͢


    ˜4VTVNV:BNB[BLJ

    View Slide

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

    View Slide

  5. &MJYJS ΤϦΫαʔ

    1FMFNBZ ϖϨϝΠ

    ͕ٻΊΒΕΔഎܠͱ͸ʁ
    5
    ˜4VTVNV:BNB[BLJ

    View Slide

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

    View Slide

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

    View Slide

  8. (Ͱ௨৴଎౓͸޲্͢Δ
    w (CQTΛ௒͑Δ௨৴ /55υίϞެࣜ

    w (CQTΛ௒͑Δ௨৴Λୡ੒࣮ͨ͠ݧ݁Ռ͋Γ ӳޠ
    8JLJQFEJB

    w (ΑΓߴ͍प೾਺Λ༻͍Δ͜ͱ͔Βɼج஍ہ͔Βͷ࠷େ
    ڑ཭͕୹͍

    ˠج஍ہΛߴີ౓ʹઃஔ͠ͳ͍ͱ͍͚ͳ͍
    w NTఔ౓ͷϨΠςϯγ ӳޠ8JLJQFEJB

    8
    ˜4VTVNV:BNB[BLJ

    View Slide

  9. ܭࢉೳྗ͕௥͍͔ͭͳ͍
    )FOOFTZ1BUUFSTPO

    ೥ʹ$16ΫϩοΫप೾਺͸಄ଧͪʹ
    9
    ˜4VTVNV:BNB[BLJ

    View Slide

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

    View Slide

  11. ͔ΘΓʹίΞ਺͕૿Ճ
    w ೥Ҏ߱ͷϓϩηοαͷਐԽ
    w ºΫϩοΫप೾਺
    w ˓ίΞ਺


    ˜4VTVNV:BNB[BLJ
    *OUFM$PSF

    &YUSFNF9

    $MPDL ()[
    PG$PSFT
    *OUFM$PSFJ

    9&

    $MPDL ()[
    PG$PSFT

    View Slide

  12. (16
    w࠷৽(16͸

    ()[Ҏ্ͷ

    ΫϩοΫप೾਺

    Ҏ্ͷ4*.%ίΞ

    View Slide

  13. ,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.

    View Slide

  14. 5IF$FSFCSBT8BGFS4DBMF&OHJOF 84&

    w ΢ΣϋʔαΠζͷνοϓ
    w ஹݸͷτϥϯδελ਺
    w ล͕NN
    w (#ͷΦϯνοϓϝϞϦ
    POUJQNFNPSJFT

    w ສίΞ DPSFT

    w ফඅిྗL8


    ˜4VTVNV:BNB[BLJ
    © 2019 Cerebras systems.

    View Slide

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

    View Slide

  16. ৘ใྔ૿େʴ௨৴଎౓޲্

    ˠٻΊΒΕΔܭࢉྔ૿େ
    ΫϩοΫप೾਺৳ͼ೰ΈʴίΞ਺૿େ

    ˠܭࢉྔΛ૿΍͢ʹ͸ฒྻॲཧ͕ඞཁ
    16
    ˜4VTVNV:BNB[BLJ

    View Slide

  17. Ͱ΋ฒྻॲཧΛॻ͘ͷ͸

    ͚ͬ͜͏໘౗Ͱ͢ΑͶʁ
    17
    ˜4VTVNV:BNB[BLJ

    View Slide

  18. &MJYJS'MPX

    1FMFNBZ
    18
    ˜4VTVNV:BNB[BLJ

    View Slide

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


    ˜4VTVNV:BNB[BLJ

    View Slide

  20. 4IBSFE%BUB
    $PSF #1 $PSF2
    3.14
    →1.5
    ഁյతߋ৽͕ϘτϧωοΫ
    w ͋ΔίΞ͕ڞ༗σʔλΛ

    ഁյతߋ৽ͨ͠৔߹
    w ଞͷίΞʹ௨஌ͯ͠

    ॲཧΛࢭΊΔඞཁ͕͋Δ
    w ଎౓௿Լʹͭͳ͕Δ
    w ίΞ਺͕૿͑Ε͹૿͑Δ΄Ͳ

    ਂࠁͳӨڹΛ΋ͨΒ͢


    ˜4VTVNV:BNB[BLJ
    6QEBUF /PUJGZ
    4UPQ1SPDFTTJOH

    View Slide

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


    ˜4VTVNV:BNB[BLJ
    %PO`U

    6QEBUF
    %PO`UOFFEUP

    TUPQQSPDFTTJOH

    View Slide

  22. ˜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

    View Slide

  23. ˜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

    View Slide

  24. '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

    View Slide

  25. 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

    View Slide

  26. σϞϯετϨʔγϣϯ

    ౰೔͸1FMFNBZΛ࣮ߦͤͯ͞Έ·ͨ͠
    26
    ˜4VTVNV:BNB[BLJ

    View Slide

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

    View Slide

  28. ͓·͚/FSWFTʹ͍ͭͯ
    w &MJYJS$POG

    %BZ.PSOJOH,FZOPUF+VTUJO4DIOFDL

    IUUQTZPVUVCFG31@E7UPOP
    w /FSWFTͷຊ࣭ͷͭ͸ΠϛϡʔλϒϧϑΝΠϧγεςϜ
    w ಈతʹมߋ͢Δσʔλ͸શͯσʔλϕʔεʹू໿
    w NBUTVNPUPSZl௒ݸମܕσʔληϯλʔ04Λ໨ࢦͨ͠બ୒ੑΛ
    ࣋ͭίϯςφ࣮ߦج൫zʹͯɼ

    /FSWFT΍ͦΕʹྨ͢ΔΠϛϡʔλϒϧϑΝΠϧγεςϜΛධՁ
    ͯ͠ΈΔͱྑ͍͔ͱࢥ͍·͢
    28
    ˜4VTVNV:BNB[BLJ

    View Slide

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

    View Slide