2021/03/20の「Kernel/VM探検隊online part2」で発表したものです。 https://connpass.com/event/201059/ https://www.youtube.com/watch?v=brrm328XItM&t=2621s
KOBA789Իͷग़ΔCPUΛ࡞͍ͬͯΔ్த
View Slide
·ͣ༧ઢΛுΒͤͯ͘Εʂ͜ΕٳܜλΠϜͩʂʂʂʂʂ
KOBA789• ύιίϯΦλΫ• ࠷ऴֶྺߴଔ• ݱࡏແ৬ʢਓੜͷय़ٳΈʣ• ࣗ࡞ DBMS Ͱɺ୭ʁ
https://diary.hatenablog.jp/entry/2020/11/16/222203
ࣗ࡞DBMSͷ͠·ͤΜ
CPUͷ͠·ͤΜ
ࠓͷ༰• ʢͳΜΒ͔ͷʣγϛϡϨʔλͷ• WebAssemblyʢΛ͏ଆʣͷ• WebGL ͷ• Rust ͷͥΜͿଞͷొஃऀ͕ৄ͘͠ ͬͯ͘ΕΔΜ͡Όͳ͍͔ʁ
ۙࣗ࡞ CPU ͕Ξπ͍ CPUΛࣗ࡞ͨ͜͠ͱ͕͋Γ·͔͢50% 50%͍ ͜Ε͔Β࡞Δ※શͳໝͱओ؍ʹجͮ͘σʔλԶ࡞Γ͍ͨ
ʮCPU ͷݪྉͬͯγϦίϯͳΜͰ͢Αʂɹҙ֎ʹ͜ΕΒΕͯͳ͍ΜͰ͚͢Ͳʯ
ʮCPU ͷݪྉͬͯγϦίϯͳΜͰ͢Αʂɹҙ֎ʹ͜ΕΒΕͯͳ͍ΜͰ͚͢Ͳʯৗࣝ
ʮCPU ͷݪྉͬͯγϦίϯͳΜͰ͢Αʂɹҙ֎ʹ͜ΕΒΕͯͳ͍ΜͰ͚͢Ͳʯৗࣝͨͯ͠ ͦ͏ͩΖ͏͔
CPUಋମҎ֎Ͱ࡞ΕΔཧճ࿏ΛߏͰ͖Ε ૉࢠͳΜͰ͍͍͔ͷ༗໊ͳ&/*"$ਅۭ
ͦͦಋମͰ࡞ͬͨ$16 ಈ͍͍ͯΔͷ͔Ͳ͏͔Α͘Θ͔Βͳ͍େࣄͳܭࢉΛ͍ͯ͠Δͷʹ ྗ͕ײ͡ΒΕͣɺ͚͔͠ΒΜ
͜͜ʹɺ খֶੜͷͱ͖ʹळ݄Ͱങͬͨ ϦϨʔ͕ݸ͋Δ
͜ͷϦϨʔͰ$16Λ࡞Ζ͏
ϦϨʔͱి࣓ੴͰమ൘͕ ٵ͍دͤΒΕΔ ૉͳΈεΠονϯάૉࢠͷͻͱͭ
ϦϨʔͱཧతͳՄಈ෦͕͋ΔͷͰ ಈ࡞Ի͕͢Δָ͍͠ʂʂ
ϦϨʔಛ༗ͷࠔΓ͝ͱ• ௨ৗͷཧճ࿏΄Ͳݟ͕ڞ༗͞Ε͍ͯͳ͍• ཧѹॖͷίπͱ͔Θ͔Βͳ͍• ։ൃʹศརͳπʔϧͳͲϩΫʹͳ͍• γϛϡϨʔλͱ͔ͳ͍• ͕Μͬͯϋϯμ͚ͯ͠ಈ͔ͳ͔ͬͨΒͱͯ൵͍͠
·ͣճ࿏$"%Λ࡞Ζ͏ʂ$"%Λ࡞Δͷָ͕ͯ͘͠$16Λ࡞ΔͷΛΕͨ
͜͜Ͱࢥ͍ग़͢γϦʔζ
https://www.youtube.com/watch?v=KiHpyP5UhyE
લʹಉ͡Α͏ͳൃදΛ͍ͯ͠Δhttps://www.youtube.com/watch?v=KiHpyP5UhyE
https://www.youtube.com/watch?v=jYJ31SrxCEE
https://www.youtube.com/watch?v=jYJ31SrxCEEཌʹಉ͡Α͏ͳ ൃදΛ͍ͯ͠Δʂʂ
ࡾͷਖ਼
ࠓճ͍ͮΒ͍ γϛϡϨʔλ͚ͩͰͳ͘ɺ $"%࡞ͬͨ
͓ॻ͖• γϛϡϨʔλΛ࡞Δ• Ͳ͏ͬͯϦϨʔճ࿏ͷγϛϡϨʔγϣϯΛ͢Δ͔• CADΛ࡞Δ• ճ࿏CADΛ60fpsͰψϧψϧಈ͔͢• Rust, WebAssembly, WebGL……• σϞCPU࡞Δͱ͜Ζ·Ͱ ؒʹ߹Θͳ͔ͬͨͶ
γϛϡϨʔλΛ࡞Δ
ి࣓ϦϨʔͷճ࿏• ίΠϧͱΛͭͳ͍Ͱ࡞Δ• ίΠϧͷยଆඞͣGNDʹ͢Δ• ઈରʹγϣʔτ͠ͳ͘ͳΔ• γϛϡϨʔλ࡞Γ͍͢ίΠϧ
ి࣓ϦϨʔͷճ࿏• ճ࿏• ͭ·Γάϥϑ• ిؾ͕ྲྀΕΔ• ͭ·Γ࿈݁
ి࣓ϦϨʔͷճ࿏࿈݁ʹ ిݯ͕͋Δ͔
ͱ͍͏Α͏ͳ͜ͱΛRustͰదʹॻ͘
CADΛ࡞Δ
CADʹٻΊΔͷ• ॻ͍ͨճ࿏ਤ͕ͦͷ··ಈ͍ͯ΄͍͠• ಈ͘ճ࿏ਤΛ৮ͬͯ༡ͼ͍ͨ• ڊେͳճ࿏ਤͰ60fpsͰψϧψϧಈ͍ͯཉ͍͠• ճ࿏ن͕େ͖͘ͳͬͯγϛϡϨʔγϣϯͳΊΒ͔ʹ
ΠϚυΩͷGUIͱ͍͑ϒϥβReactͱTypeScriptͰόʔϯͩͥʁ• ཁૉ͕૿͑ͯ͘ΔͱDOMͰ͗͢Δ• TypeScript(JavaScript)Ͱ࠲ඪܭࢉΛ͠·͘ΔίʔυΛॻ͘ͷ ͋·ΓʹΩπ͍• ԋࢉࢠͷΦʔόʔϩʔυ͕ͳ͍ͷͰඇৗʹʹѱ͍ίʔυʹ• ͋ͱɺͬͺ͍
RustͰ WebAssemblyͰ WebGLͩʂ
WebGLͱߴϨΠϠͳͷͰҰԠ• JavaScript͔ΒOpenGLͷΑ͏ͳͷ͕ୟ͚ΔAPI• ༨ܭͳͷ͕ʢൺֱతগͳ͘ʣ͍• ΄΅OpenGL͕ͦͷ··࿐ग़͍ͯ͠Δ• JSͷΑ͏ͳεΫϦϓτݴޠͱͷ૬ੑ࠷ѱ• ͜ΕΛJSͰ͏ਓ͔ͳΓྗ͕͋Δ• RustͰ͏͖
WebGL(OpenGL)Ͱ2DάϥϑΟοΫε• OpenGLͰ͝ଘ͡ͷͱ͓Γࡾ֯ܗ͔͠ॻ͚ͳ͍• ԁʁͱ͔ॻ͚ͳ͍• ઢࡾ֯ܗΛ2ຕ͏• จࣈॻ͚ͳ͍• ؾ߹͍Ͱશ෦࣮͢Δ• 60fpsͷͨΊͱࢥ͑ͭΒ͘ͳ͍
Immediate mode GUI• εςʔτϨεͰɺຖϑϨʔϜશ෦ඳ͖͢• ϏοτϚοϓΛࠩͰ͍ճͨ͠Γ͠ͳ͍• ήʔϜΤϯδϯͳͲͱ૬ੑͷ͍͍GUIΞʔΩςΫνϟ• Dear ImGuiUnityͷIMGUI͕༗໊• ࠓճͷCADͰ͜ΕΛ࠾༻
ຖϑϨʔϜඳ͍ͨΒ͘ͳ͍ͷ͔• ݱͷGPUࣗମ͍• GPUCPU͔ΒRPCͰૢ࡞͢Δ• RPCͷίϚϯυൃߦ͕࣌ؒ৯͏• ίϚϯυΛΕΞϗ΄Ͳ͍• ͍Ζ͍ΖςΫ͕͋Δ
σϞ
ࠓޙͷເ• subleqͷΑ͏ͳʢ໋ྩηοτ͕ʣখ͍͞ΞʔΩςΫνϟΛ࣮ͯ͠Έ͍ͨ• ωοτϦετు͚ΔΑ͏ʹͨ͠ͷͰɺ ϓϦϯτج൘ͷΞʔτϫʔΫΛ͓࣮ͯ͜͠ػΛ࡞Γ͍ͨ