Slide 1

Slide 1 text

KOBA789 Իͷग़ΔCPU Λ࡞͍ͬͯΔ్த

Slide 2

Slide 2 text

·ͣ༧๷ઢΛுΒͤͯ͘Εʂ ͜Ε͸ٳܜλΠϜͩʂʂʂʂʂ

Slide 3

Slide 3 text

KOBA789 • ύιίϯΦλΫ • ࠷ऴֶྺߴଔ • ݱࡏແ৬ʢਓੜͷय़ٳΈʣ • ࣗ࡞ DBMS ੎ Ͱɺ୭ʁ

Slide 4

Slide 4 text

https://diary.hatenablog.jp/entry/2020/11/16/222203

Slide 5

Slide 5 text

ࣗ࡞DBMSͷ࿩͸͠·ͤΜ

Slide 6

Slide 6 text

CPUͷ࿩΋͠·ͤΜ

Slide 7

Slide 7 text

ࠓ೔ͷ಺༰ • ʢͳΜΒ͔ͷʣγϛϡϨʔλͷ࿩ • WebAssemblyʢΛ࢖͏ଆʣͷ࿩ • WebGL ͷ࿩ • Rust ͷ࿩ ͥΜͿଞͷొஃऀ͕ৄ͘͠
 ஻ͬͯ͘ΕΔΜ͡Όͳ͍͔ʁ

Slide 8

Slide 8 text

ۙ೥ࣗ࡞ CPU ͕Ξπ͍ CPUΛࣗ࡞ͨ͜͠ͱ͕͋Γ·͔͢ 50% 50% ͸͍ ͜Ε͔Β࡞Δ ※׬શͳໝ૝ͱओ؍ʹجͮ͘σʔλ Զ΋࡞Γ͍ͨ

Slide 9

Slide 9 text

ʮCPU ͷݪྉͬͯγϦίϯͳΜͰ͢Αʂɹ ҙ֎ʹ͜Ε஌ΒΕͯͳ͍ΜͰ͚͢Ͳʯ

Slide 10

Slide 10 text

ʮCPU ͷݪྉͬͯγϦίϯͳΜͰ͢Αʂɹ ҙ֎ʹ͜Ε஌ΒΕͯͳ͍ΜͰ͚͢Ͳʯ ৗࣝ

Slide 11

Slide 11 text

ʮCPU ͷݪྉͬͯγϦίϯͳΜͰ͢Αʂɹ ҙ֎ʹ͜Ε஌ΒΕͯͳ͍ΜͰ͚͢Ͳʯ ৗࣝ ͸ͨͯ͠ 
 ͦ͏ͩΖ͏͔

Slide 12

Slide 12 text

CPU͸൒ಋମҎ֎Ͱ΋࡞ΕΔ ࿦ཧճ࿏Λߏ੒Ͱ͖Ε͹ 
 ૉࢠ͸ͳΜͰ΋͍͍ ͔ͷ༗໊ͳ&/*"$͸ਅۭ؅

Slide 13

Slide 13 text

ͦ΋ͦ΋ ൒ಋମͰ࡞ͬͨ$16͸ 
 ಈ͍͍ͯΔͷ͔Ͳ͏͔Α͘Θ͔Βͳ͍ େࣄͳܭࢉΛ͍ͯ͠Δͷʹ 
 ౒ྗ͕ײ͡ΒΕͣɺ͚͔͠ΒΜ

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

͜͜ʹɺ 
 খֶੜͷͱ͖ʹळ݄Ͱങͬͨ 
 ϦϨʔ͕ݸ͋Δ

Slide 16

Slide 16 text

͜ͷϦϨʔͰ$16Λ࡞Ζ͏

Slide 17

Slide 17 text

ϦϨʔͱ͸ ి࣓ੴͰమ൘͕ 
 ٵ͍دͤΒΕΔ 
 ૉ๿ͳ࢓૊Έ εΠονϯάૉࢠͷͻͱͭ

Slide 18

Slide 18 text

ϦϨʔͱ͸ ෺ཧతͳՄಈ෦͕͋ΔͷͰ 
 ಈ࡞Ի͕͢Δ ָ͍͠ʂʂ

Slide 19

Slide 19 text

ϦϨʔಛ༗ͷࠔΓ͝ͱ • ௨ৗͷ࿦ཧճ࿏΄Ͳ஌ݟ͕ڞ༗͞Ε͍ͯͳ͍ • ࿦ཧѹॖͷίπͱ͔Θ͔Βͳ͍ • ։ൃʹศརͳπʔϧͳͲ΋ϩΫʹͳ͍ • γϛϡϨʔλͱ͔ͳ͍ • ͕Μ͹ͬͯϋϯμ෇͚ͯ͠ಈ͔ͳ͔ͬͨΒͱͯ΋൵͍͠

Slide 20

Slide 20 text

·ͣ͸ճ࿏$"%Λ࡞Ζ͏ʂ $"%Λ࡞Δͷָ͕ͯ͘͠$16Λ࡞ΔͷΛ๨Εͨ

Slide 21

Slide 21 text

͜͜Ͱࢥ͍ग़͢γϦʔζ

Slide 22

Slide 22 text

https://www.youtube.com/watch?v=KiHpyP5UhyE

Slide 23

Slide 23 text

೥લʹ΋ಉ͡Α͏ͳൃදΛ͍ͯ͠Δ https://www.youtube.com/watch?v=KiHpyP5UhyE

Slide 24

Slide 24 text

https://www.youtube.com/watch?v=jYJ31SrxCEE

Slide 25

Slide 25 text

https://www.youtube.com/watch?v=jYJ31SrxCEE ཌ೥ʹ΋ಉ͡Α͏ͳ 
 ൃදΛ͍ͯ͠Δʂʂ

Slide 26

Slide 26 text

ࡾ౓໨ͷਖ਼௚

Slide 27

Slide 27 text

ࠓճ͸࢖͍ͮΒ͍ 
 γϛϡϨʔλ͚ͩͰͳ͘ɺ 
 $"%΋࡞ͬͨ

Slide 28

Slide 28 text

͓඼ॻ͖ • γϛϡϨʔλΛ࡞Δ • Ͳ͏΍ͬͯϦϨʔճ࿏ͷγϛϡϨʔγϣϯΛ͢Δ͔ • CADΛ࡞Δ • ճ࿏CADΛ60fpsͰψϧψϧಈ͔͢ • Rust, WebAssembly, WebGL…… • σϞ CPU࡞Δͱ͜Ζ·Ͱ͸
 ؒʹ߹Θͳ͔ͬͨͶ

Slide 29

Slide 29 text

γϛϡϨʔλΛ࡞Δ

Slide 30

Slide 30 text

ి࣓ϦϨʔͷճ࿏ • ίΠϧͱ઀఺Λͭͳ͍Ͱ࡞Δ • ίΠϧͷยଆ͸ඞͣGNDʹ͢Δ • ઈରʹγϣʔτ͠ͳ͘ͳΔ • γϛϡϨʔλ΋࡞Γ΍͍͢ ίΠϧ ઀఺

Slide 31

Slide 31 text

ి࣓ϦϨʔͷճ࿏ • ճ࿏ • ͭ·Γάϥϑ • ిؾ͕ྲྀΕΔ • ͭ·Γ࿈݁੒෼

Slide 32

Slide 32 text

ి࣓ϦϨʔͷճ࿏ ࿈݁੒෼ʹ 
 ిݯ͕͋Δ͔

Slide 33

Slide 33 text

ͱ͍͏Α͏ͳ͜ͱΛRustͰద౰ʹॻ͘

Slide 34

Slide 34 text

CADΛ࡞Δ

Slide 35

Slide 35 text

CADʹٻΊΔ΋ͷ • ॻ͍ͨճ࿏ਤ͕ͦͷ··ಈ͍ͯ΄͍͠ • ಈ͘ճ࿏ਤΛ௚઀৮ͬͯ༡ͼ͍ͨ • ڊେͳճ࿏ਤͰ΋60fpsͰψϧψϧಈ͍ͯཉ͍͠ • ճ࿏ن໛͕େ͖͘ͳͬͯ΋γϛϡϨʔγϣϯ͸ͳΊΒ͔ʹ

Slide 36

Slide 36 text

ΠϚυΩͷGUIͱ͍͑͹ϒϥ΢β ReactͱTypeScriptͰόʔϯͩͥʁ • ཁૉ਺͕૿͑ͯ͘ΔͱDOMͰ͸஗͗͢Δ • TypeScript(JavaScript)Ͱ࠲ඪܭࢉΛ͠·͘ΔίʔυΛॻ͘ͷ͸
 ͋·ΓʹΩπ͍ • ԋࢉࢠͷΦʔόʔϩʔυ͕ͳ͍ͷͰඇৗʹ໨ʹѱ͍ίʔυʹ • ͋ͱɺ΍ͬͺ஗͍

Slide 37

Slide 37 text

RustͰ 
 WebAssemblyͰ 
 WebGLͩʂ

Slide 38

Slide 38 text

WebGLͱ͸ ߴϨΠϠͳͷͰҰԠ • JavaScript͔ΒOpenGLͷΑ͏ͳ΋ͷ͕ୟ͚ΔAPI • ༨ܭͳ΋ͷ͕ʢൺֱతগͳ͘ʣ଎͍ • ΄΅OpenGL͕ͦͷ··࿐ग़͍ͯ͠Δ • JSͷΑ͏ͳεΫϦϓτݴޠͱͷ૬ੑ͸࠷ѱ • ͜ΕΛJSͰ࢖͏ਓ͸͔ͳΓ೜଱ྗ͕͋Δ • RustͰ࢖͏΂͖

Slide 39

Slide 39 text

WebGL(OpenGL)Ͱ2DάϥϑΟοΫε • OpenGLͰ͸͝ଘ͡ͷͱ͓Γࡾ֯ܗ͔͠ॻ͚ͳ͍ • ԁʁͱ͔ॻ͚ͳ͍ • ઢ෼΋ࡾ֯ܗΛ2ຕ࢖͏ • จࣈ΋ॻ͚ͳ͍ • ؾ߹͍Ͱશ෦࣮૷͢Δ • 60fpsͷͨΊͱࢥ͑͹ͭΒ͘ͳ͍

Slide 40

Slide 40 text

Immediate mode GUI • εςʔτϨεͰɺຖϑϨʔϜશ෦ඳ͖௚͢ • ϏοτϚοϓΛࠩ෼Ͱ࢖͍ճͨ͠Γ͠ͳ͍ • ήʔϜΤϯδϯͳͲͱ૬ੑͷ͍͍GUIΞʔΩςΫνϟ • Dear ImGui΍UnityͷIMGUI͕༗໊ • ࠓճͷCADͰ΋͜ΕΛ࠾༻

Slide 41

Slide 41 text

ຖϑϨʔϜඳ͍ͨΒ஗͘ͳ͍ͷ͔ • ݱ୅ͷGPUࣗମ͸௒଎͍ • GPU͸CPU͔ΒRPCͰૢ࡞͢Δ • RPCͷίϚϯυൃߦ͕࣌ؒ৯͏ • ίϚϯυ਺Λ࡟Ε͹Ξϗ΄Ͳ଎͍ • ͍Ζ͍ΖςΫ͕͋Δ

Slide 42

Slide 42 text

σϞ

Slide 43

Slide 43 text

ࠓޙͷເ • subleqͷΑ͏ͳʢ໋ྩηοτ͕ʣখ͍͞ΞʔΩςΫνϟΛ࣮૷ͯ͠Έ͍ͨ • ωοτϦετ͸ు͚ΔΑ͏ʹͨ͠ͷͰɺ
 ϓϦϯτج൘ͷΞʔτϫʔΫΛ͓࣮ͯ͜͠ػΛ࡞Γ͍ͨ