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

クラウドの作り方(GPUサーバ編)

Hikaru Ashino
February 27, 2023

 クラウドの作り方(GPUサーバ編)

Hikaru Ashino

February 27, 2023
Tweet

More Decks by Hikaru Ashino

Other Decks in Technology

Transcript

  1. Ϋϥ΢υͷ࡞Γํ


    (GPUαʔόฤ)
    Ϋϥ΢υࣄۀຊ෦


    Ϋϥ΢υαʔϏε෦
    Ἑ໺ɹޫ
    ͘͞ΒΠϯλʔωοτגࣜձࣾ
    2023/02/27

    View Slide

  2. 2
    • ୲౰ۀ຿


    • αʔϏεͷόοΫΤϯυ։ൃɺΠϯϑϥ։ൃ


    • Ӵ੕σʔλϓϥοτϑΥʔϜʮTellusʢςϧʔεʣʯ


    • ͘͞ΒͷVPSɺ͘͞ΒͷΫϥ΢υ


    • ܦྺ


    • 2012 - 2016 ITܥઐ໳ֶߍ4೥՝ఔͰֶͿ ߴ౓ઐ໳࢜ଔ


    • 2013 - 2016 MSPͱϗεςΟϯάΛߦ͏ձࣾʹΞϧόΠτೖࣾ


    • OpenStackɺLinux KVMΛ༻͍ͨԾ૝؀ڥͷߏஙӡ༻


    • OSSͰߏங͞ΕͨγεςϜͷӡ༻ɺτϥϒϧγϡʔςΟϯά


    • 2016 - ݱ৬ ͘͞ΒΠϯλʔωοτʹ৽ଔೖࣾ


    • 2017 - 2019 ܳज़ܥେֶӃʹͯ2೥ݚڀ͢Δ ܳज़ֶम࢜
    @tar_xzvff

    View Slide

  3. ֓ཁ
    3

    View Slide

  4. ຊ೔͓࿩͢͠Δ͜ͱ
    4
    ݱࡏఏڙதͷ͘͞ΒͷΫϥ΢υͰར༻Ͱ͖ΔGPUαʔό(ߴՐྗϓϥϯ)ͷ͓࿩͠Λ͠·͢ɻ
    ͲͷΑ͏ʹΫϥ΢υͷத਎͕։ൃ͞Ε͍ͯΔ͔Λ஌͍͚ͬͯͨͩΕ͹޾͍Ͱ͢ɻ

    View Slide

  5. ຊ೔͓࿩͢͠Δ͜ͱ(։ൃମ੍)
    • ͘͞ΒͷΫϥ΢υͷ։ൃମ੍
    5
    ίϯτϩʔϧύωϧ


    (ϑϩϯτΤϯυ)
    APIɾόοΫΤϯυ


    (όοΫΤϯυ)
    ֤छΠϯϑϥ


    (ج൫ϢχοτɺSRE)

    View Slide

  6. ຊ೔͓࿩͢͠Δ͜ͱ(։ൃମ੍)
    • ͘͞ΒͷΫϥ΢υͷ։ൃମ੍
    6
    ίϯτϩʔϧύωϧ


    (ϑϩϯτΤϯυ)
    APIɾόοΫΤϯυ


    (όοΫΤϯυ)
    ֤छΠϯϑϥ


    (ج൫ϢχοτɺSRE)

    View Slide

  7. ংষ
    7

    View Slide

  8. GPUαʔό(ߴՐྗϓϥϯ)͕஀ੜ͢Δ͖͔͚ͬ
    • ౰࣌ͷࢲ͸Ӵ੕σʔλϓϥοτϑΥʔϜʮTellusʯͷ୲౰


    • Tellusͷར༻ऀ޲͚ʹӴ੕σʔλΛJupyterLabͳͲΛ༻͍ͯ෼ੳͰ͖Δ
    ίϯϐϡʔςΟϯά؀ڥͷఏڙΛ͍ͯ͠·ͨ͠ɻ(Jupyter as a service)
    8
    https://www.tellusxdp.com/ja/about/

    View Slide

  9. GPUαʔό(ߴՐྗϓϥϯ)͕஀ੜ͢Δ͖͔͚ͬ
    9
    CPU(Ծ૝αʔό)


    ※͘͞ΒͷΫϥ΢υ
    CPU(෺ཧαʔό)


    ※͘͞Βͷઐ༻αʔό
    GPU(෺ཧαʔό)


    ※͘͞Βͷઐ༻αʔό


    ߴՐྗγϦʔζ
    ڞ༗ετϨʔδ


    ※͘͞ΒͷΫϥ΢υ
    ɾɾɾ
    ɾɾɾ
    ※౰࣌ఏڙ͍ͯͨ͠ߏ੒

    View Slide

  10. GPUαʔό(ߴՐྗϓϥϯ)͕஀ੜ͢Δ͖͔͚ͬ
    • ӡ༻͍ͯ͠ΔதͰ͍͔ͭ͘՝୊͕͋ͬͨ


    • Kubernetes͕ಈ͘αʔό͸αʔϏεΛ·͕ͨΔ


    • αʔϏε͕ҟͳΔͨΊ࢓༷͕ҟͳΔ


    • APIͷ༗ແɺػೳͷ༗ແͷࠩɺΠϯϑϥ࢓༷


    • αʔϏεؒΛϩʔΧϧ઀ଓ͢Δͷ͕൥ࡶ


    • Ϋϥ΢υ͸TerraformͰίϯτϩʔϧͰ͖ͨɺͦΕҎ֎͸൒ࣗಈ


    • ͳΜͱ͔ɺαʔϏεؒͷࠩΛ͍͍ײ͡ʹຒΊͳ͕Βӡ༻͍ͯͨ͠
    10

    View Slide

  11. GPUαʔό(ߴՐྗϓϥϯ)͕஀ੜ͢Δ͖͔͚ͬ
    • ͱ͋Δ೔ɺ͘͞ΒͷΫϥ΢υͷ੹೚ऀͱ࿩͢ػձ͕͋ΓɺاըॻΛ
    ࣋ͬͯΫϥ΢υͰGPUఏڙ͍ͨ͠࿩Λ͢Δ


    • →ͥͻ΍Γ·͠ΐ͏ʂͱ͓ฦࣄΛ͍ͨͩ͘


    • Ҏલ͔Βಉ༷ͷཁ๬͕͋Γ૬·ͬͯɺϓϩδΣΫτ͕ൃ଍😊
    11

    View Slide

  12. ϓϩδΣΫτൃ଍
    • ݕূ؀ڥʹͯϓϩτλΠϓͷ։ൃ͕ൃ଍


    • ͘͞ΒͷΫϥ΢υͱ͘͞Βͷઐ༻αʔό ߴՐྗͷϝϯόʔͰߏ੒
    ʢاըɺ։ൃɺӡ༻ʣ


    • ࢲ΋։ൃͱӡ༻ͷ୲౰ͱͯ͠ࢀՃ


    • جຊతʹϦϞʔτͰΦϯϥΠϯίϛϡχέʔγϣϯ


    • ि࣍ͷఆྫϛʔςΟϯά


    • σʔληϯλʔͳͲͰͷݱ஍࡞ۀͷΈΦϑϥΠϯ
    12

    View Slide

  13. ϓϩδΣΫτൃ଍
    • ϓϥϯઃܭ(اըϝϯόʔ)


    • ԿΛ࡞ͬͯɺԿΛఏڙ͢Δ͔ɺԾ૝Ϛγϯͷઃܭ


    • ՝ۚઃܭɺϓϥϯ໊


    • ӡ༻ઃܭ(ӡ༻ϝϯόʔ)


    • ϑΝΠϦςΟ໘(Ͳ͜Ͱಈ͔͔͢ɺNWɺిྗɺۭௐ)


    • ऩ༰ઃܭɺԾ૝ϚγϯͷઃܭɺηΩϡϦςΟධՁɾରࡦ


    • ࠷దͳঢ়ଶΛ࡞Δ


    • ͲͷΑ͏ͳํ๏Ͱӡ༻͢Δ͔ɺఆৗతͳϝϯςφϯε΍ɺো֐࣌ͷରԠ


    • νϡʔχϯά


    • ෛՙࢼݧ


    • ։ൃઃܭ(։ൃϝϯόʔ)


    • ͲͷΑ͏ʹ࡞Δ͔


    • API΍ίϯτϩϧʔύωϧ͔ΒͷϦΫΤετʹै͍Ծ૝ϚγϯΛىಈͤ͞Δ෦෼·ͰΛ࡞Δ


    • Ծ૝ϚγϯͷεέδϡʔϦϯά
    13
    ઃܭޙɺ֤୲౰͝ͱʹɺ࣮૷΍४උͳͲʹਐΉ

    View Slide

  14. ୈ1ষ
    ϓϩτλΠϓͷ։ൃ
    14

    View Slide

  15. ϓϥϯઃܭ
    • αʔόᝑମͱ࢖༻͢ΔGPU͸֬ఆ͍ͯͨͨ͠ΊɺͦΕΒΛར༻


    • Ծ૝Ϛγϯʹ͸ɺ1GPUɺCPUͱϝϞϦ͸ద੾ͳྔΛׂ౰


    • ࢢ৔ΛؑΈͭͭɺεϖοΫΛܾఆ
    15

    View Slide

  16. ӡ༻ઃܭ
    • طଘͷ෺ཧͷGPUαʔϏε(ߴՐྗ)Ͱ΋࣮੷ͷ͋ΔɺੴङDCʹܾఆ


    • ϓϥϯઃܭʹج͍ͮͯऩ༰ઃܭΛ࣮ࢪ


    • طଘͷԾ૝Խج൫(Linux KVM)ͰGPUׂ౰Λߦ͍Ծ૝ϚγϯΛىಈ͢Δํ๏Λௐࠪɾݕূ


    • GPU Pass-Through (෺ཧͷGPUΛͦͷ··Ծ૝Ϛγϯʹׂ౰)


    • GPUԾ૝Խ੡඼


    • GPUʹΑΔHWଆͰͷԾ૝Խ


    • GPU׬શԾ૝Խ GVT-g (KVMGT)


    • GPU४Ծ૝Խ virtio-gpu


    • →ύϑΥʔϚϯεͷ؍఺ͱԾ૝Խͷඞཁ͕ͳ͍͜ͱ͔ΒɺGPU Pass-Throughʹܾఆ


    • GPUׂ౰͸ϗετ্ͷGPUͷPCIeͷBus:Device.Function (BDF)Λ༻͍ͯߦ͏
    16

    View Slide

  17. ӡ༻ઃܭ
    • ͲͷΑ͏ʹ͢Ε͹ܾఆͨ͠GPUׂ౰ํ๏ͰGPUΛׂΓ౰ͯΒΕΔ͔ௐࠪɾݕূ


    • ෺ཧαʔόᝑମͷBIOSɺBMCͷઃఆ(IOMMU)


    • Ծ૝ϚγϯʹGPUΛ౉ͨ͢ΊɺϗετOSଆͰGPUΛ௫·ͳ͍Α͏ʹ͢Δ


    • υΩϡϝϯτͳͲΛࢀߟʹqemu-kvmͷద੾ͳҾ਺Λ୳͢ɾݕূͷ܁Γฦ͠


    • GPUׂ౰ํ๏ʹର͢ΔηΩϡϦςΟϦεΫͷධՁɾରࡦ


    • GPUϕϯμ͓ΑͼɺԾ૝Խʹਫ਼௨ͨ͠εϖγϟϦετͱ࿩͠߹͍Λߦ͍ରࡦ
    17

    View Slide

  18. ։ൃઃܭ
    • ӡ༻ઃܭΛ΋ͱʹԾ૝ϚγϯʹGPUΛׂ౰͠ىಈ͢Δ࢓૊ΈΛݕ౼͢Δ


    • ϗετʹ౥ࡌ͞Ε͍ͯΔGPUͷྻڍ


    • GPUϦΫΤετ࣌ͷ಺෦ॲཧ


    • GPUͷഉଞతׂ౰


    • ݕ౼Λ΋ͱʹԾ࣮૷Λߦ͏


    • 1Ծ૝Ϛγϯ1GPUͷׂ౰͕ͳ͞ΕΔΑ͏ʹ࣮૷
    18

    View Slide

  19. ϓϩτλΠϓ
    19
    ϗετ ෺ཧαʔόᝑମ

    ϋΠύʔόΠβʔ -JOVY,7.

    ϗετ04
    GPU
    Ծ૝Ϛγϯ
    αʔόΛىಈͤ͞Δ
    ϓϩάϥϜ

    View Slide

  20. ୈ̎ষ
    ੡඼൛ͷ։ൃ
    20

    View Slide

  21. ੡඼൛ͷ։ൃ
    • ͓٬༷΁ͷఏڙʹ޲͚ͯ੡඼൛ͷ։ൃΛਐΊΔ


    • ੡඼൛ͷ඼࣭ʹ͢ΔͨΊͷ։ൃɺ͓Αͼݕূ
    21

    View Slide

  22. ϓϥϯઃܭʙ࣮ಇϑΣʔζ
    • ϓϥΠγϯά


    • ϓϥϯ໊ͷݕ౼ɺܾఆ


    • ͓٬༷޲͚ͷϚχϡΞϧ(͘͞ΒͷΫϥ΢υɹυΩϡϝϯτ)ͷ࡞੒
    22

    View Slide

  23. ӡ༻ઃܭ
    • ֤छΠϯϑϥΛ੡඼൛ͱಉ͡ߏ੒ʹ͢Δ


    • 1ϗετ্Ͱෳ਺Ծ૝Ϛγϯ͕ىಈͨ͠৔߹ͷݕূ


    • ύϑΥʔϚϯενϡʔχϯά


    • NUMA


    • Ծ૝Ϛγϯͷઃܭʹج͍ͮͨઃఆɺಈ࡞ݕূ


    • GPUͷಈ࡞ʹ࠷దͳ؀ڥΛ੔උ͢ΔͨΊͷݕূɾઃఆ


    • ෛՙࢼݧɺϕϯνϚʔΫ


    • ϗετͷCPU,ϝϞϦ


    • Ծ૝ϚγϯͷGPU


    • ؂ࢹ಺༰ͷݕ౼
    23

    View Slide

  24. • NUMA


    • ෳ਺CPUΛ౥ࡌ͢Δαʔόʹ͓͍ͯߏ੒͞ΕΔΞʔΩςΫνϟ


    • ϘτϧωοΫɺϝϞϦΞΫηεͷ࠷దԽͳͲʹͭͳ͕Δ


    • Nodeͱ͍͏άϧʔϓ͕͋Δ (lstopoίϚϯυͳͲͰ֬ೝ͢Δ͜ͱ͕Ͱ͖Δ)


    • Ծ૝ϚγϯʹׂΓ౰ͯΔɺCPUɺϝϞϦɺGPUͷ૊Έ߹Θ͕ͤnodeΛލ͍ͩ৔
    ߹ɺύϑΥʔϚϯεʹӨڹΛٴ΅͢͜ͱ͕෼͔Γߟྀͨ͠ઃܭɾ࣮૷Λ࣮ࢪ


    • Ծ૝Ϛγϯىಈ࣌ʹNUMA node͕ἧ͏Α͏ʹࢦఆ͠ىಈͤ͞Δ
    ӡ༻ઃܭ
    24
    NUMA node1 NUMA node2

    View Slide

  25. • NUMA(஗͘ͳΔঢ়ଶ)
    ӡ༻ઃܭ
    25
    Ծ૝Ϛγϯ
    NUMA nodeΛލ͙ͨΊ


    ύϑΥʔϚϯεʹӨڹ

    View Slide

  26. • NUMA(࠷దͳঢ়ଶ)
    ӡ༻ઃܭ
    26
    Ծ૝Ϛγϯ

    View Slide

  27. ӡ༻ઃܭ
    • NUMA nodeͷ૊Έ߹ΘͤʹΑΔੑೳࠩ(PCIeଳҬςετ)


    • NUMA node͕ಉ͡૊Έ߹ΘͤͰ͸҆ఆͯ͠ಈ࡞
    27

    View Slide

  28. ӡ༻ઃܭ
    • Ծ૝Ϛγϯͷઃܭʹج͍ͮͨઃఆɺಈ࡞ݕূ


    • ౰ॳ͸෺ཧαʔόᝑମʹ౥ࡌͨ͠ϝϞϦΛͳΔ΂͘Ծ૝Ϛγϯʹׂ౰͢Δํ਑ͩͬͨ


    • ىಈͨ͠΋ͷͷqemuͷϓϩηε͕swapͯ͠͠·͏ࣄଶ͕ൃੜ


    • ύϑΥʔϚϯεͷ؍఺ͰΑ͘ͳ͍ঢ়ଶ


    • ىಈͯؒ͠΋ແ͘qemuͷϓϩηε͕ऴྃͯ͠͠·͏ࣄଶ͕


    • oom-killerʹΑͬͯqemuϓϩηε͕ڧ੍ऴ͍ྃͯͨ͜͠ͱ͕ൃ֮…😇


    • ϗετͰಈ࡞͢Δ֤छαʔϏεΛ֬ೝ҆͠શʹಈ࡞͢ΔϝϞϦ༰ྔΛܭࢉ͠ɺͦͷεϖοΫͰఏ
    ڙ͢Δ͜ͱʹ


    • Ұ෦γεςϜܥͷσʔϞϯ͕ϝϞϦϦʔΫ͍ͯͨ͠ΓɺͦͷରࡦͳͲ΋࣮ࢪ


    • ҆ఆͨ͠ঢ়ଶͰԾ૝ϚγϯΛಈ͔ͨ͢ΊʹɺεϖοΫͷ૊Έ߹ΘͤݕূΛࢼߦࡨޡ


    • γεςϜશମʹϝϞϦͷۭ͖༰ྔ͕͋ͬͨͱͯ͠΋ɺNUMA node͋ͨΓͷϝϞϦͷۭ͖͕ͳ͍ͱ
    oom-killerͰVM͕ࢭΊΒΕͯ͠·͏ֶͼ͕ಘΒΕͨ
    28

    View Slide

  29. ӡ༻ઃܭ
    • GPUͷಈ࡞ʹ࠷దͳ؀ڥΛ੔උ͢ΔͨΊͷݕূɾઃఆ


    • ΤΞϑϩʔ͕ਖ਼ৗͰɺద੾ͳԹ౓Ͱ͋Δ͜ͱ


    • ϑΝϯͷճస਺੍ޚɺϑΝϯͷҐஔΛม͑ΔͳͲͷରԠ


    • ϑΝϯ͸GPUʹ͸౥ࡌ͞Ε͓ͯΒͣɺυϥΠϠʔͷΑ͏ͳ෩ѹͷϑΝϯΛᝑମʹऔΓ෇͚Δ


    • GPU͕ྫྷ٫͞Εͳ͍ͱɺGPU಺෦ϓϩηοαͷಈ࡞प೾਺͕௿Լ͢Δ


    • ҰํͰϑΝϯΛશ։ʹͯ͠΋ແବ͕ੜ͡ΔͨΊɺίετͱੑೳʹ͓͍ͯόϥϯε͕औΕͨঢ়ଶΛ
    ୳͠ɺݟ͚ͭΔ


    • αʔόᝑମͷIPMIͱGPU͔Β֤छϝτϦΫεΛPrometheusͰऩूɺGrafanaͰμογϡϘʔυΛ࡞
    ੒͠ՄࢹԽ


    • ͍͔ͭ͘ͷϑΝϯͷϞʔυΛࢼ͢΋͏·͍͔ͣ͘αʔόͷ୅ཧళʹ໰͍߹Θͤͨ


    • BMCͷόʔδϣϯ͕ݹ͘Ξοϓσʔτͨ͠ͱ͜Ζظ଴͢Δ݁Ռ͕ಘΒΕ࠷దͳঢ়ଶ͕Ͱ͖ͨ


    • ݕূதϑΝϯΛશ։ʹͨ͠ͱ͜ΖɺGPUαʔόͷᝑମͷഎ໘ଆʹ͋ΔଞͷαʔόͷԹ౓্͕ঢ͠
    ͯ͠·͏ࣄ৅͕ൃੜͨ͠ɺͦΕΒ΋ߟྀͯ͠؀ڥΛ੔උ
    29

    View Slide

  30. ӡ༻ઃܭ
    • GPUͷಈ࡞ʹ࠷దͳ؀ڥΛ੔උ͢ΔͨΊͷݕূɾઃఆ
    30
    ϗετ ෺ཧαʔόᝑମ

    ϋΠύʔόΠβʔ -JOVY,7.

    ϗετ04
    GPU GPU GPU GPU
    Ծ૝Ϛγϯ
    Ծ૝Ϛγϯ
    ɾɹɾɹ
    ɾɾ
    GPUʹෛՙΛ͔͚Δɺgpu_exporterΛ࣮ߦ
    GPUʹෛՙΛ͔͚Δ ˍ gpu_exporterΛ࣮ߦ
    ipmi_exporter
    ipmi_exporter(αʔόᝑମͷϝτϦΫεΛऔಘɺফඅిྗɺԹ౓ɺϑΝϯճస਺౳)


    gpu_exporter(GPUͷ֤छϝτϦΫεɺಈ࡞प೾਺ɺফඅిྗɺԹ౓ɺϝϞϦͳͲΛऔಘ)

    View Slide

  31. ӡ༻ઃܭ
    31

    View Slide

  32. ӡ༻ઃܭ
    • ෛՙࢼݧɺϕϯνϚʔΫ


    • ফඅిྗ͕େ͖͘ͳΔɺԹ౓͕ߴ͘ͳΔέʔεΛ࡞੒͠Ұఆظ࣮ؒࢪ


    • ຊ൪؀ڥͱಉ͡ঢ়ଶϥοΫɺαʔόᝑମ਺Λἧ͑ͯෛՙΛ͔͚Δ


    • جຊతʹ͸ઌ΄Ͳͱ΍Δ͜ͱ͸ಉ͡ɺҧ͍͸Ծ૝Ϛγϯͷ਺͕ଟ͘ͳΔ


    • TerraformͰෛՙࢼݧɺϕϯνϚʔΫ༻ͷԾ૝ϚγϯΛେྔʹల։


    • ४උ͕੔ͬͨΒxargsίϚϯυͰҰ੪ʹԾ૝ϚγϯͱϗετʹෛՙΛ͔͚Δ


    • ͢΂ͯͷϗετɺԾ૝ϚγϯɺGPUͷঢ়ଶΛ֬ೝ͢ΔͨΊͷμογϡϘʔυΛ࡞੒͠ݟकΔ


    • Ծ૝Ϛγϯ


    • gpu_burn΍࣮ࡍͷϫʔΫϩʔυͳͲͰෛՙ


    • ϕϯνϚʔΫ͸ҰൠతͳGPUϕϯνϚʔΫͳͲΛ༻͍Δ


    • ϗετͷCPUɺϝϞϦ


    • ઐ༻ͷπʔϧΛ༻͍ͯෛՙ
    32

    View Slide

  33. ӡ༻ઃܭ
    33

    View Slide

  34. ӡ༻ઃܭ
    34

    View Slide

  35. ӡ༻ઃܭ
    • ؂ࢹ಺༰ͷݕ౼


    • طଘͷϗεταʔόʹର͢Δ؂ࢹʹՃ͑GPUͷ؂ࢹΛ͢Δඞཁ͕͋Δ


    • ϗετ͔ΒGPUʹΞΫηεͰ͖ͳ͍ͨΊ؂ࢹͰ͖ΔൣғͰߦ͏


    • ϗεταʔόଆ


    • GPU౥ࡌεϩοτͷϦϯΫεϐʔυ


    • lspciͳͲͷ৘ใΛνΣοΫ


    • GPUࣗମͷ؂ࢹɺނোݕ஌ɾϔϧενΣοΫ͸ޙड़͢ΔʮαʔϏε
    VMʯͱ͍͏࢓૊ΈΛ༻͍ͯߦ͏͜ͱʹܾఆ
    35

    View Slide

  36. ։ൃઃܭ
    • Ծ૝ϚγϯʹGPUΛׂ౰͠ىಈ͢Δ࢓૊ΈΛ࣮૷͠ɺຊ൪؀ڥʹ൓өͰ͖Δঢ়ଶʹ͢Δ


    • ੡඼൛Λߟྀͨ͠ઃܭɺ࣮૷


    • αʔόΛىಈ͢ΔϓϩάϥϜ


    • NUMAΛߟྀͨ͠Ծ૝Ϛγϯʹର͢ΔCPU,MEM,GPUͷׂ౰


    • ཁٻ͞ΕͨGPU਺ʹԠׂͯ͡౰ɺׂ౰ෆՄͷ৔߹ͷΤϥʔॲཧ


    • ౥ࡌ͞Ε͍ͯΔGPUͷঢ়ଶ؅ཧ(ະׂ౰ɺׂ౰தɺނো)


    • ঢ়ଶΛAPIʹ௨஌͢Δػೳ


    • GPUͷނোݕ஌ɺϔϧενΣοΫͷ࢓૊Έͷݕ౼


    • API


    • GPUϗετͷࡏݿ؅ཧ


    • GPUϓϥϯͷ௥ՃɺGPUαʔόͷεέδϡʔϦϯά


    • GPUͷଐੑ৘ใͷ؅ཧͷݕ౼(GPUܕ൪ɺGPUϝϞϦɺݸମΛࣝผ͢Δ஋ɺetc…)
    36

    View Slide

  37. ։ൃઃܭ
    • GPUͷނোݕ஌ɺϔϧενΣοΫͷ࢓૊Έͷݕ౼


    • ϗετ͔Β͸GPUʹΞΫηεͰ͖ͳ͍ͨΊɺಛผͳԾ૝ϚγϯʮαʔϏεVMʯΛ༻͍
    ͯߦ͏͜ͱʹܾఆ


    • ҎԼͷΑ͏ͳ࢓૊ΈΛ։ൃ࣮૷͠ɺࣗಈνΣοΫͷ࢓૊ΈΛཱ֬


    • 1.Ծ૝ϚγϯఀࢭޙʹGPU͕ղ์͞ΕΔ


    • 2.ղ์͞ΕͨGPU͸࢖༻ࡁΈͱͯ͠ϚʔΫ͞ΕɺఆظతʹͦͷGPUΛΞλον͞Εͨ
    ʮαʔϏεVMʯ͕ىಈ


    • 3.GPUͷ਍அπʔϧ౳Λ༻͍ͯਖ਼ৗʹಈ࡞͢Δ͜ͱΛ֬ೝ


    • 4.ਖ਼ৗͳ৔߹ɺະׂ౰ͱͯ͠GPUͷঢ়ଶΛมߋ͢Δ


    • 5.ҟৗͳ৔߹ɺׂ౰͞Εͳ͍Α͏ʹނোͱͯ͠ϚʔΫ͞ΕΔɺϗεταʔόʹ௨஌Λߦ
    ͍؂ࢹπʔϧͳͲ͕ͦΕΛ΋ͱʹΞϥʔτΛൃใ͢Δ
    37
    ͜ͷ࢓૊Έͷ࣮૷ͷҰ؀Ͱɺ࣮ࡍʹࣾ಺ʹ͋ͬͨյΕͨGPUΛ༻͍ͯҟৗܥͷςετ΋࣮ࢪ

    View Slide

  38. ։ൃઃܭ
    38
    αʔϏεVM࣮ߦ࣌ͷ༷ࢠ

    View Slide

  39. ੡඼൛
    39
    ϗετ ෺ཧαʔόᝑମ

    ϋΠύʔόΠβʔ -JOVY,7.

    ϗετ04
    GPU GPU GPU GPU
    Ծ૝Ϛγϯ Ծ૝Ϛγϯ
    ɾɹɾɹɾ
    ɾɾɾ
    αʔόΛىಈͤ͞Δ
    ϓϩάϥϜ
    αʔϏεVM

    View Slide

  40. • ։ൃத൫ʙ


    • ίϯτϩʔϧύωϧͳͲ؅ཧܥΠϯλϑΣʔεͷ։ൃ


    • ࣾ಺ϕʔλ൛ͱͯ͠ఏڙ


    • ࣮ࡍʹ࢖͑Δ͔ධՁ


    • ϑΟʔυόοΫͳͲΛ͍ͨͩ͘
    40

    View Slide

  41. • ಈ࡞ࢼݧ


    • ίϯτϩʔϧύωϧ͔ΒGPUαʔόΛ࡞੒


    • ਖ਼ৗʹಈ࡞͢Δ͜ͱ


    • ҟৗ͕ى͖ͨ࣌ʹҙਤͨ͠௨Γͷಈ࡞Λ͢Δ͜ͱ


    • αʔϏεϝχϡʔʹGPUϓϥϯ௥Ճ
    41

    View Slide

  42. ϦϦʔε
    42

    View Slide

  43. • 2021೥10݄7೔ʹఏڙ։࢝🎉
    43

    View Slide

  44. ·ͱΊ
    44

    View Slide

  45. • ۤ࿑ͨ͠఺


    • Ծ૝Ϛγϯͷઃܭʹ͓͍ͯ҆ఆ͢ΔεϖοΫΛܾΊΔ


    • ͋ΒΏΔ૊Έ߹ΘͤΛߟ͑ݕূ͢Δͷ͕େมͩͬͨ


    • ՝୊͕ൃੜͨ͠৔߹ͷ੾Γ෼͚


    • ϨΠϠʔ͕བྷΈ߹͏ࣄ৅͸͋Δఔ౓צ͕ͳ͍ͱɺ੾Γ෼͚͕೉͍͠


    • ϋΠύʔόΠβʔ/ϗετOS(Kernel)/GPU/αʔόᝑମ/etc…


    • ੾Γ෼্͚ͨͰɺҟͳΔ໰͍߹ΘͤઌʹΤεΧϨʔγϣϯΛߦ͏


    • ਂ۷Γͨ͠஌͕ࣝඞཁʹͳΔ


    • PCI-Expressʹର͢ΔཧղɺϋΠύʔόΠβʔɾԾ૝ϚγϯɺOSͷϝϞϦ؅ཧ
    45

    View Slide

  46. • ײ૝


    • ॳΊͯ৮ΕΔྖҬ͕৽઱ͩͬͨ


    • PCI-Expressͷ࢓༷(ॻ੶Λߪೖͯ͠ษڧ)


    • ࣗ෼ͰσόΠεΛ࡞ͬͯΈ͍ͨͱࢥ͍ɺFPGAͳͲʹڵຯΛ࣋ͬͨ


    • ͞·͟·ͳϨΠϠʔʹରٕͯ͠ज़Λ࣋ͬͯରԠ͢Δͷ͕ྑ͍ܦݧʹͳͬͨ


    • ݁ߏେม͕ͩͬͨɺ޷͖ͳ͜ͱΛ࢓ࣄͱͯ͠Ͱ͖ͯຬ଍


    • TellusͰ΋ར༻͞ΕΔΑ͏ʹͳΓخ͍͠


    • GPUΛ࢖͏ͨΊͷ؀ڥߏஙͷϋʔυϧ͕ߴ͍ͷͰͦ͜Λղܾ͢ΔΑ͏ͳ΋
    ͷΛఏڙ͍ͨ͠
    46

    View Slide

  47. • ࠷ޙʹ


    • json΍yamlͰΠϯϑϥɾΫϥ΢υΛ࢖͏͜ͱ͕Ͱ͖Δ࣌୅


    • Πϯϑϥ͕ந৅Խ͞Εɺ࢖͍΍͘͢ͳΔ


    • ΍Γ͍ͨ͜ͱʹूதͰ͖Δ͜ͱ͸ྑ͍͜ͱ


    • ҰํͰΫϥ΢υͷઌͷੈք͸͞·͟·ͳٕज़Ͱߏ੒͞Ε͍ͯΔ


    • ࠓճ͝঺հͨ͠಺༰͸΄ΜͷҰ෦


    • ͘͞ΒΠϯλʔωοτͷٕज़ελοΫΛ·ͱΊͯΈͨ(Qiitaهࣄ)


    • https://qiita.com/jh1vxw/items/f460f33e00614c9d2510
    47
    Ϋϥ΢υΛ࡞Δଆʹ͝ڵຯ͕͋Γ·ͨ͠Βɺ͘͞ΒΠϯλʔωοτͰ͓·͓ͪͯ͠Γ·͢ʂ

    View Slide