Slide 1

Slide 1 text

Ϋϥ΢υͷ࡞Γํ (GPUαʔόฤ) Ϋϥ΢υࣄۀຊ෦ Ϋϥ΢υαʔϏε෦ Ἑ໺ɹޫ ͘͞ΒΠϯλʔωοτגࣜձࣾ 2023/02/27

Slide 2

Slide 2 text

2 • ୲౰ۀ຿ • αʔϏεͷόοΫΤϯυ։ൃɺΠϯϑϥ։ൃ • Ӵ੕σʔλϓϥοτϑΥʔϜʮTellusʢςϧʔεʣʯ • ͘͞ΒͷVPSɺ͘͞ΒͷΫϥ΢υ • ܦྺ • 2012 - 2016 ITܥઐ໳ֶߍ4೥՝ఔͰֶͿ ߴ౓ઐ໳࢜ଔ • 2013 - 2016 MSPͱϗεςΟϯάΛߦ͏ձࣾʹΞϧόΠτೖࣾ • OpenStackɺLinux KVMΛ༻͍ͨԾ૝؀ڥͷߏஙӡ༻ • OSSͰߏங͞ΕͨγεςϜͷӡ༻ɺτϥϒϧγϡʔςΟϯά • 2016 - ݱ৬ ͘͞ΒΠϯλʔωοτʹ৽ଔೖࣾ • 2017 - 2019 ܳज़ܥେֶӃʹͯ2೥ݚڀ͢Δ ܳज़ֶम࢜ @tar_xzvff

Slide 3

Slide 3 text

֓ཁ 3

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

ຊ೔͓࿩͢͠Δ͜ͱ(։ൃମ੍) • ͘͞ΒͷΫϥ΢υͷ։ൃମ੍ 5 ίϯτϩʔϧύωϧ (ϑϩϯτΤϯυ) APIɾόοΫΤϯυ (όοΫΤϯυ) ֤छΠϯϑϥ (ج൫ϢχοτɺSRE)

Slide 6

Slide 6 text

ຊ೔͓࿩͢͠Δ͜ͱ(։ൃମ੍) • ͘͞ΒͷΫϥ΢υͷ։ൃମ੍ 6 ίϯτϩʔϧύωϧ (ϑϩϯτΤϯυ) APIɾόοΫΤϯυ (όοΫΤϯυ) ֤छΠϯϑϥ (ج൫ϢχοτɺSRE)

Slide 7

Slide 7 text

ংষ 7

Slide 8

Slide 8 text

GPUαʔό(ߴՐྗϓϥϯ)͕஀ੜ͢Δ͖͔͚ͬ • ౰࣌ͷࢲ͸Ӵ੕σʔλϓϥοτϑΥʔϜʮTellusʯͷ୲౰ • Tellusͷར༻ऀ޲͚ʹӴ੕σʔλΛJupyterLabͳͲΛ༻͍ͯ෼ੳͰ͖Δ ίϯϐϡʔςΟϯά؀ڥͷఏڙΛ͍ͯ͠·ͨ͠ɻ(Jupyter as a service) 8 https://www.tellusxdp.com/ja/about/

Slide 9

Slide 9 text

GPUαʔό(ߴՐྗϓϥϯ)͕஀ੜ͢Δ͖͔͚ͬ 9 CPU(Ծ૝αʔό) ※͘͞ΒͷΫϥ΢υ CPU(෺ཧαʔό) ※͘͞Βͷઐ༻αʔό GPU(෺ཧαʔό) ※͘͞Βͷઐ༻αʔό ߴՐྗγϦʔζ ڞ༗ετϨʔδ ※͘͞ΒͷΫϥ΢υ ɾɾɾ ɾɾɾ ※౰࣌ఏڙ͍ͯͨ͠ߏ੒

Slide 10

Slide 10 text

GPUαʔό(ߴՐྗϓϥϯ)͕஀ੜ͢Δ͖͔͚ͬ • ӡ༻͍ͯ͠ΔதͰ͍͔ͭ͘՝୊͕͋ͬͨ • Kubernetes͕ಈ͘αʔό͸αʔϏεΛ·͕ͨΔ • αʔϏε͕ҟͳΔͨΊ࢓༷͕ҟͳΔ • APIͷ༗ແɺػೳͷ༗ແͷࠩɺΠϯϑϥ࢓༷ • αʔϏεؒΛϩʔΧϧ઀ଓ͢Δͷ͕൥ࡶ • Ϋϥ΢υ͸TerraformͰίϯτϩʔϧͰ͖ͨɺͦΕҎ֎͸൒ࣗಈ • ͳΜͱ͔ɺαʔϏεؒͷࠩΛ͍͍ײ͡ʹຒΊͳ͕Βӡ༻͍ͯͨ͠ 10

Slide 11

Slide 11 text

GPUαʔό(ߴՐྗϓϥϯ)͕஀ੜ͢Δ͖͔͚ͬ • ͱ͋Δ೔ɺ͘͞ΒͷΫϥ΢υͷ੹೚ऀͱ࿩͢ػձ͕͋ΓɺاըॻΛ ࣋ͬͯΫϥ΢υͰGPUఏڙ͍ͨ͠࿩Λ͢Δ • →ͥͻ΍Γ·͠ΐ͏ʂͱ͓ฦࣄΛ͍ͨͩ͘ • Ҏલ͔Βಉ༷ͷཁ๬͕͋Γ૬·ͬͯɺϓϩδΣΫτ͕ൃ଍😊 11

Slide 12

Slide 12 text

ϓϩδΣΫτൃ଍ • ݕূ؀ڥʹͯϓϩτλΠϓͷ։ൃ͕ൃ଍ • ͘͞ΒͷΫϥ΢υͱ͘͞Βͷઐ༻αʔό ߴՐྗͷϝϯόʔͰߏ੒ ʢاըɺ։ൃɺӡ༻ʣ • ࢲ΋։ൃͱӡ༻ͷ୲౰ͱͯ͠ࢀՃ • جຊతʹϦϞʔτͰΦϯϥΠϯίϛϡχέʔγϣϯ • ि࣍ͷఆྫϛʔςΟϯά • σʔληϯλʔͳͲͰͷݱ஍࡞ۀͷΈΦϑϥΠϯ 12

Slide 13

Slide 13 text

ϓϩδΣΫτൃ଍ • ϓϥϯઃܭ(اըϝϯόʔ) • ԿΛ࡞ͬͯɺԿΛఏڙ͢Δ͔ɺԾ૝Ϛγϯͷઃܭ • ՝ۚઃܭɺϓϥϯ໊ • ӡ༻ઃܭ(ӡ༻ϝϯόʔ) • ϑΝΠϦςΟ໘(Ͳ͜Ͱಈ͔͔͢ɺNWɺిྗɺۭௐ) • ऩ༰ઃܭɺԾ૝ϚγϯͷઃܭɺηΩϡϦςΟධՁɾରࡦ • ࠷దͳঢ়ଶΛ࡞Δ • ͲͷΑ͏ͳํ๏Ͱӡ༻͢Δ͔ɺఆৗతͳϝϯςφϯε΍ɺো֐࣌ͷରԠ • νϡʔχϯά • ෛՙࢼݧ • ։ൃઃܭ(։ൃϝϯόʔ) • ͲͷΑ͏ʹ࡞Δ͔ • API΍ίϯτϩϧʔύωϧ͔ΒͷϦΫΤετʹै͍Ծ૝ϚγϯΛىಈͤ͞Δ෦෼·ͰΛ࡞Δ • Ծ૝ϚγϯͷεέδϡʔϦϯά 13 ઃܭޙɺ֤୲౰͝ͱʹɺ࣮૷΍४උͳͲʹਐΉ

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

ϓϥϯઃܭ • αʔόᝑମͱ࢖༻͢ΔGPU͸֬ఆ͍ͯͨͨ͠ΊɺͦΕΒΛར༻ • Ծ૝Ϛγϯʹ͸ɺ1GPUɺCPUͱϝϞϦ͸ద੾ͳྔΛׂ౰ • ࢢ৔ΛؑΈͭͭɺεϖοΫΛܾఆ 15

Slide 16

Slide 16 text

ӡ༻ઃܭ • طଘͷ෺ཧͷ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

Slide 17

Slide 17 text

ӡ༻ઃܭ • ͲͷΑ͏ʹ͢Ε͹ܾఆͨ͠GPUׂ౰ํ๏ͰGPUΛׂΓ౰ͯΒΕΔ͔ௐࠪɾݕূ • ෺ཧαʔόᝑମͷBIOSɺBMCͷઃఆ(IOMMU) • Ծ૝ϚγϯʹGPUΛ౉ͨ͢ΊɺϗετOSଆͰGPUΛ௫·ͳ͍Α͏ʹ͢Δ • υΩϡϝϯτͳͲΛࢀߟʹqemu-kvmͷద੾ͳҾ਺Λ୳͢ɾݕূͷ܁Γฦ͠ • GPUׂ౰ํ๏ʹର͢ΔηΩϡϦςΟϦεΫͷධՁɾରࡦ • GPUϕϯμ͓ΑͼɺԾ૝Խʹਫ਼௨ͨ͠εϖγϟϦετͱ࿩͠߹͍Λߦ͍ରࡦ 17

Slide 18

Slide 18 text

։ൃઃܭ • ӡ༻ઃܭΛ΋ͱʹԾ૝ϚγϯʹGPUΛׂ౰͠ىಈ͢Δ࢓૊ΈΛݕ౼͢Δ • ϗετʹ౥ࡌ͞Ε͍ͯΔGPUͷྻڍ • GPUϦΫΤετ࣌ͷ಺෦ॲཧ • GPUͷഉଞతׂ౰ • ݕ౼Λ΋ͱʹԾ࣮૷Λߦ͏ • 1Ծ૝Ϛγϯ1GPUͷׂ౰͕ͳ͞ΕΔΑ͏ʹ࣮૷ 18

Slide 19

Slide 19 text

ϓϩτλΠϓ 19 ϗετ ෺ཧαʔόᝑମ ϋΠύʔόΠβʔ -JOVY,7. ϗετ04 GPU Ծ૝Ϛγϯ αʔόΛىಈͤ͞Δ ϓϩάϥϜ

Slide 20

Slide 20 text

ୈ̎ষ ੡඼൛ͷ։ൃ 20

Slide 21

Slide 21 text

੡඼൛ͷ։ൃ • ͓٬༷΁ͷఏڙʹ޲͚ͯ੡඼൛ͷ։ൃΛਐΊΔ • ੡඼൛ͷ඼࣭ʹ͢ΔͨΊͷ։ൃɺ͓Αͼݕূ 21

Slide 22

Slide 22 text

ϓϥϯઃܭʙ࣮ಇϑΣʔζ • ϓϥΠγϯά • ϓϥϯ໊ͷݕ౼ɺܾఆ • ͓٬༷޲͚ͷϚχϡΞϧ(͘͞ΒͷΫϥ΢υɹυΩϡϝϯτ)ͷ࡞੒ 22

Slide 23

Slide 23 text

ӡ༻ઃܭ • ֤छΠϯϑϥΛ੡඼൛ͱಉ͡ߏ੒ʹ͢Δ • 1ϗετ্Ͱෳ਺Ծ૝Ϛγϯ͕ىಈͨ͠৔߹ͷݕূ • ύϑΥʔϚϯενϡʔχϯά • NUMA • Ծ૝Ϛγϯͷઃܭʹج͍ͮͨઃఆɺಈ࡞ݕূ • GPUͷಈ࡞ʹ࠷దͳ؀ڥΛ੔උ͢ΔͨΊͷݕূɾઃఆ • ෛՙࢼݧɺϕϯνϚʔΫ • ϗετͷCPU,ϝϞϦ • Ծ૝ϚγϯͷGPU • ؂ࢹ಺༰ͷݕ౼ 23

Slide 24

Slide 24 text

• NUMA • ෳ਺CPUΛ౥ࡌ͢Δαʔόʹ͓͍ͯߏ੒͞ΕΔΞʔΩςΫνϟ • ϘτϧωοΫɺϝϞϦΞΫηεͷ࠷దԽͳͲʹͭͳ͕Δ • Nodeͱ͍͏άϧʔϓ͕͋Δ (lstopoίϚϯυͳͲͰ֬ೝ͢Δ͜ͱ͕Ͱ͖Δ) • Ծ૝ϚγϯʹׂΓ౰ͯΔɺCPUɺϝϞϦɺGPUͷ૊Έ߹Θ͕ͤnodeΛލ͍ͩ৔ ߹ɺύϑΥʔϚϯεʹӨڹΛٴ΅͢͜ͱ͕෼͔Γߟྀͨ͠ઃܭɾ࣮૷Λ࣮ࢪ • Ծ૝Ϛγϯىಈ࣌ʹNUMA node͕ἧ͏Α͏ʹࢦఆ͠ىಈͤ͞Δ ӡ༻ઃܭ 24 NUMA node1 NUMA node2

Slide 25

Slide 25 text

• NUMA(஗͘ͳΔঢ়ଶ) ӡ༻ઃܭ 25 Ծ૝Ϛγϯ NUMA nodeΛލ͙ͨΊ ύϑΥʔϚϯεʹӨڹ

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

ӡ༻ઃܭ • NUMA nodeͷ૊Έ߹ΘͤʹΑΔੑೳࠩ(PCIeଳҬςετ) • NUMA node͕ಉ͡૊Έ߹ΘͤͰ͸҆ఆͯ͠ಈ࡞ 27

Slide 28

Slide 28 text

ӡ༻ઃܭ • Ծ૝Ϛγϯͷઃܭʹج͍ͮͨઃఆɺಈ࡞ݕূ • ౰ॳ͸෺ཧαʔόᝑମʹ౥ࡌͨ͠ϝϞϦΛͳΔ΂͘Ծ૝Ϛγϯʹׂ౰͢Δํ਑ͩͬͨ • ىಈͨ͠΋ͷͷqemuͷϓϩηε͕swapͯ͠͠·͏ࣄଶ͕ൃੜ • ύϑΥʔϚϯεͷ؍఺ͰΑ͘ͳ͍ঢ়ଶ • ىಈͯؒ͠΋ແ͘qemuͷϓϩηε͕ऴྃͯ͠͠·͏ࣄଶ͕ • oom-killerʹΑͬͯqemuϓϩηε͕ڧ੍ऴ͍ྃͯͨ͜͠ͱ͕ൃ֮…😇 • ϗετͰಈ࡞͢Δ֤छαʔϏεΛ֬ೝ҆͠શʹಈ࡞͢ΔϝϞϦ༰ྔΛܭࢉ͠ɺͦͷεϖοΫͰఏ ڙ͢Δ͜ͱʹ • Ұ෦γεςϜܥͷσʔϞϯ͕ϝϞϦϦʔΫ͍ͯͨ͠ΓɺͦͷରࡦͳͲ΋࣮ࢪ • ҆ఆͨ͠ঢ়ଶͰԾ૝ϚγϯΛಈ͔ͨ͢ΊʹɺεϖοΫͷ૊Έ߹ΘͤݕূΛࢼߦࡨޡ • γεςϜશମʹϝϞϦͷۭ͖༰ྔ͕͋ͬͨͱͯ͠΋ɺNUMA node͋ͨΓͷϝϞϦͷۭ͖͕ͳ͍ͱ oom-killerͰVM͕ࢭΊΒΕͯ͠·͏ֶͼ͕ಘΒΕͨ 28

Slide 29

Slide 29 text

ӡ༻ઃܭ • GPUͷಈ࡞ʹ࠷దͳ؀ڥΛ੔උ͢ΔͨΊͷݕূɾઃఆ • ΤΞϑϩʔ͕ਖ਼ৗͰɺద੾ͳԹ౓Ͱ͋Δ͜ͱ • ϑΝϯͷճస਺੍ޚɺϑΝϯͷҐஔΛม͑ΔͳͲͷରԠ • ϑΝϯ͸GPUʹ͸౥ࡌ͞Ε͓ͯΒͣɺυϥΠϠʔͷΑ͏ͳ෩ѹͷϑΝϯΛᝑମʹऔΓ෇͚Δ • GPU͕ྫྷ٫͞Εͳ͍ͱɺGPU಺෦ϓϩηοαͷಈ࡞प೾਺͕௿Լ͢Δ • ҰํͰϑΝϯΛશ։ʹͯ͠΋ແବ͕ੜ͡ΔͨΊɺίετͱੑೳʹ͓͍ͯόϥϯε͕औΕͨঢ়ଶΛ ୳͠ɺݟ͚ͭΔ • αʔόᝑମͷIPMIͱGPU͔Β֤छϝτϦΫεΛPrometheusͰऩूɺGrafanaͰμογϡϘʔυΛ࡞ ੒͠ՄࢹԽ • ͍͔ͭ͘ͷϑΝϯͷϞʔυΛࢼ͢΋͏·͍͔ͣ͘αʔόͷ୅ཧళʹ໰͍߹Θͤͨ • BMCͷόʔδϣϯ͕ݹ͘Ξοϓσʔτͨ͠ͱ͜Ζظ଴͢Δ݁Ռ͕ಘΒΕ࠷దͳঢ়ଶ͕Ͱ͖ͨ • ݕূதϑΝϯΛશ։ʹͨ͠ͱ͜ΖɺGPUαʔόͷᝑମͷഎ໘ଆʹ͋ΔଞͷαʔόͷԹ౓্͕ঢ͠ ͯ͠·͏ࣄ৅͕ൃੜͨ͠ɺͦΕΒ΋ߟྀͯ͠؀ڥΛ੔උ 29

Slide 30

Slide 30 text

ӡ༻ઃܭ • GPUͷಈ࡞ʹ࠷దͳ؀ڥΛ੔උ͢ΔͨΊͷݕূɾઃఆ 30 ϗετ ෺ཧαʔόᝑମ ϋΠύʔόΠβʔ -JOVY,7. ϗετ04 GPU GPU GPU GPU Ծ૝Ϛγϯ Ծ૝Ϛγϯ ɾɹɾɹ ɾɾ GPUʹෛՙΛ͔͚Δɺgpu_exporterΛ࣮ߦ GPUʹෛՙΛ͔͚Δ ˍ gpu_exporterΛ࣮ߦ ipmi_exporter ipmi_exporter(αʔόᝑମͷϝτϦΫεΛऔಘɺফඅిྗɺԹ౓ɺϑΝϯճస਺౳) gpu_exporter(GPUͷ֤छϝτϦΫεɺಈ࡞प೾਺ɺফඅిྗɺԹ౓ɺϝϞϦͳͲΛऔಘ)

Slide 31

Slide 31 text

ӡ༻ઃܭ 31

Slide 32

Slide 32 text

ӡ༻ઃܭ • ෛՙࢼݧɺϕϯνϚʔΫ • ফඅిྗ͕େ͖͘ͳΔɺԹ౓͕ߴ͘ͳΔέʔεΛ࡞੒͠Ұఆظ࣮ؒࢪ • ຊ൪؀ڥͱಉ͡ঢ়ଶϥοΫɺαʔόᝑମ਺Λἧ͑ͯෛՙΛ͔͚Δ • جຊతʹ͸ઌ΄Ͳͱ΍Δ͜ͱ͸ಉ͡ɺҧ͍͸Ծ૝Ϛγϯͷ਺͕ଟ͘ͳΔ • TerraformͰෛՙࢼݧɺϕϯνϚʔΫ༻ͷԾ૝ϚγϯΛେྔʹల։ • ४උ͕੔ͬͨΒxargsίϚϯυͰҰ੪ʹԾ૝ϚγϯͱϗετʹෛՙΛ͔͚Δ • ͢΂ͯͷϗετɺԾ૝ϚγϯɺGPUͷঢ়ଶΛ֬ೝ͢ΔͨΊͷμογϡϘʔυΛ࡞੒͠ݟकΔ • Ծ૝Ϛγϯ • gpu_burn΍࣮ࡍͷϫʔΫϩʔυͳͲͰෛՙ • ϕϯνϚʔΫ͸ҰൠతͳGPUϕϯνϚʔΫͳͲΛ༻͍Δ • ϗετͷCPUɺϝϞϦ • ઐ༻ͷπʔϧΛ༻͍ͯෛՙ 32

Slide 33

Slide 33 text

ӡ༻ઃܭ 33

Slide 34

Slide 34 text

ӡ༻ઃܭ 34

Slide 35

Slide 35 text

ӡ༻ઃܭ • ؂ࢹ಺༰ͷݕ౼ • طଘͷϗεταʔόʹର͢Δ؂ࢹʹՃ͑GPUͷ؂ࢹΛ͢Δඞཁ͕͋Δ • ϗετ͔ΒGPUʹΞΫηεͰ͖ͳ͍ͨΊ؂ࢹͰ͖ΔൣғͰߦ͏ • ϗεταʔόଆ • GPU౥ࡌεϩοτͷϦϯΫεϐʔυ • lspciͳͲͷ৘ใΛνΣοΫ • GPUࣗମͷ؂ࢹɺނোݕ஌ɾϔϧενΣοΫ͸ޙड़͢ΔʮαʔϏε VMʯͱ͍͏࢓૊ΈΛ༻͍ͯߦ͏͜ͱʹܾఆ 35

Slide 36

Slide 36 text

։ൃઃܭ • Ծ૝ϚγϯʹGPUΛׂ౰͠ىಈ͢Δ࢓૊ΈΛ࣮૷͠ɺຊ൪؀ڥʹ൓өͰ͖Δঢ়ଶʹ͢Δ • ੡඼൛Λߟྀͨ͠ઃܭɺ࣮૷ • αʔόΛىಈ͢ΔϓϩάϥϜ • NUMAΛߟྀͨ͠Ծ૝Ϛγϯʹର͢ΔCPU,MEM,GPUͷׂ౰ • ཁٻ͞ΕͨGPU਺ʹԠׂͯ͡౰ɺׂ౰ෆՄͷ৔߹ͷΤϥʔॲཧ • ౥ࡌ͞Ε͍ͯΔGPUͷঢ়ଶ؅ཧ(ະׂ౰ɺׂ౰தɺނো) • ঢ়ଶΛAPIʹ௨஌͢Δػೳ • GPUͷނোݕ஌ɺϔϧενΣοΫͷ࢓૊Έͷݕ౼ • API • GPUϗετͷࡏݿ؅ཧ • GPUϓϥϯͷ௥ՃɺGPUαʔόͷεέδϡʔϦϯά • GPUͷଐੑ৘ใͷ؅ཧͷݕ౼(GPUܕ൪ɺGPUϝϞϦɺݸମΛࣝผ͢Δ஋ɺetc…) 36

Slide 37

Slide 37 text

։ൃઃܭ • GPUͷނোݕ஌ɺϔϧενΣοΫͷ࢓૊Έͷݕ౼ • ϗετ͔Β͸GPUʹΞΫηεͰ͖ͳ͍ͨΊɺಛผͳԾ૝ϚγϯʮαʔϏεVMʯΛ༻͍ ͯߦ͏͜ͱʹܾఆ • ҎԼͷΑ͏ͳ࢓૊ΈΛ։ൃ࣮૷͠ɺࣗಈνΣοΫͷ࢓૊ΈΛཱ֬ • 1.Ծ૝ϚγϯఀࢭޙʹGPU͕ղ์͞ΕΔ • 2.ղ์͞ΕͨGPU͸࢖༻ࡁΈͱͯ͠ϚʔΫ͞ΕɺఆظతʹͦͷGPUΛΞλον͞Εͨ ʮαʔϏεVMʯ͕ىಈ • 3.GPUͷ਍அπʔϧ౳Λ༻͍ͯਖ਼ৗʹಈ࡞͢Δ͜ͱΛ֬ೝ • 4.ਖ਼ৗͳ৔߹ɺະׂ౰ͱͯ͠GPUͷঢ়ଶΛมߋ͢Δ • 5.ҟৗͳ৔߹ɺׂ౰͞Εͳ͍Α͏ʹނোͱͯ͠ϚʔΫ͞ΕΔɺϗεταʔόʹ௨஌Λߦ ͍؂ࢹπʔϧͳͲ͕ͦΕΛ΋ͱʹΞϥʔτΛൃใ͢Δ 37 ͜ͷ࢓૊Έͷ࣮૷ͷҰ؀Ͱɺ࣮ࡍʹࣾ಺ʹ͋ͬͨյΕͨGPUΛ༻͍ͯҟৗܥͷςετ΋࣮ࢪ

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

੡඼൛ 39 ϗετ ෺ཧαʔόᝑମ ϋΠύʔόΠβʔ -JOVY,7. ϗετ04 GPU GPU GPU GPU Ծ૝Ϛγϯ Ծ૝Ϛγϯ ɾɹɾɹɾ ɾɾɾ αʔόΛىಈͤ͞Δ ϓϩάϥϜ αʔϏεVM

Slide 40

Slide 40 text

• ։ൃத൫ʙ • ίϯτϩʔϧύωϧͳͲ؅ཧܥΠϯλϑΣʔεͷ։ൃ • ࣾ಺ϕʔλ൛ͱͯ͠ఏڙ • ࣮ࡍʹ࢖͑Δ͔ධՁ • ϑΟʔυόοΫͳͲΛ͍ͨͩ͘ 40

Slide 41

Slide 41 text

• ಈ࡞ࢼݧ • ίϯτϩʔϧύωϧ͔ΒGPUαʔόΛ࡞੒ • ਖ਼ৗʹಈ࡞͢Δ͜ͱ • ҟৗ͕ى͖ͨ࣌ʹҙਤͨ͠௨Γͷಈ࡞Λ͢Δ͜ͱ • αʔϏεϝχϡʔʹGPUϓϥϯ௥Ճ 41

Slide 42

Slide 42 text

ϦϦʔε 42

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

·ͱΊ 44

Slide 45

Slide 45 text

• ۤ࿑ͨ͠఺ • Ծ૝Ϛγϯͷઃܭʹ͓͍ͯ҆ఆ͢ΔεϖοΫΛܾΊΔ • ͋ΒΏΔ૊Έ߹ΘͤΛߟ͑ݕূ͢Δͷ͕େมͩͬͨ • ՝୊͕ൃੜͨ͠৔߹ͷ੾Γ෼͚ • ϨΠϠʔ͕བྷΈ߹͏ࣄ৅͸͋Δఔ౓צ͕ͳ͍ͱɺ੾Γ෼͚͕೉͍͠ • ϋΠύʔόΠβʔ/ϗετOS(Kernel)/GPU/αʔόᝑମ/etc… • ੾Γ෼্͚ͨͰɺҟͳΔ໰͍߹ΘͤઌʹΤεΧϨʔγϣϯΛߦ͏ • ਂ۷Γͨ͠஌͕ࣝඞཁʹͳΔ • PCI-Expressʹର͢ΔཧղɺϋΠύʔόΠβʔɾԾ૝ϚγϯɺOSͷϝϞϦ؅ཧ 45

Slide 46

Slide 46 text

• ײ૝ • ॳΊͯ৮ΕΔྖҬ͕৽઱ͩͬͨ • PCI-Expressͷ࢓༷(ॻ੶Λߪೖͯ͠ษڧ) • ࣗ෼ͰσόΠεΛ࡞ͬͯΈ͍ͨͱࢥ͍ɺFPGAͳͲʹڵຯΛ࣋ͬͨ • ͞·͟·ͳϨΠϠʔʹରٕͯ͠ज़Λ࣋ͬͯରԠ͢Δͷ͕ྑ͍ܦݧʹͳͬͨ • ݁ߏେม͕ͩͬͨɺ޷͖ͳ͜ͱΛ࢓ࣄͱͯ͠Ͱ͖ͯຬ଍ • TellusͰ΋ར༻͞ΕΔΑ͏ʹͳΓخ͍͠ • GPUΛ࢖͏ͨΊͷ؀ڥߏஙͷϋʔυϧ͕ߴ͍ͷͰͦ͜Λղܾ͢ΔΑ͏ͳ΋ ͷΛఏڙ͍ͨ͠ 46

Slide 47

Slide 47 text

• ࠷ޙʹ • json΍yamlͰΠϯϑϥɾΫϥ΢υΛ࢖͏͜ͱ͕Ͱ͖Δ࣌୅ • Πϯϑϥ͕ந৅Խ͞Εɺ࢖͍΍͘͢ͳΔ • ΍Γ͍ͨ͜ͱʹूதͰ͖Δ͜ͱ͸ྑ͍͜ͱ • ҰํͰΫϥ΢υͷઌͷੈք͸͞·͟·ͳٕज़Ͱߏ੒͞Ε͍ͯΔ • ࠓճ͝঺հͨ͠಺༰͸΄ΜͷҰ෦ • ͘͞ΒΠϯλʔωοτͷٕज़ελοΫΛ·ͱΊͯΈͨ(Qiitaهࣄ) • https://qiita.com/jh1vxw/items/f460f33e00614c9d2510 47 Ϋϥ΢υΛ࡞Δଆʹ͝ڵຯ͕͋Γ·ͨ͠Βɺ͘͞ΒΠϯλʔωοτͰ͓·͓ͪͯ͠Γ·͢ʂ