Slide 1

Slide 1 text

άϥϑΟοΫεҎ֎ͷ ෼໺ͰͷMetalͷՄೳੑ iOSDC 2018 (2018/9/2) @kotetu

Slide 2

Slide 2 text

Kuriyama Toru (܀ࢁప) iOS / Android developer ɹɹɹɹɹɹɹɹat Sansan app (iOS/Android) Twitter: @kotetuɹɹɹɹɹɹ Github, Qiita: @kotetuco

Slide 3

Slide 3 text

Metal • GPUΛ࢖͏ͨΊͷFramework • ओʹ3DάϥϑΟοΫεͰ࢖༻ • άϥϑΟοΫεͰ͔͠࢖͑ͳ ͍Θ͚Ͱ͸ͳ͍ 3 / 14

Slide 4

Slide 4 text

Metalͷ༻్ “Render advanced 3D graphics and perform data-parallel computations using the GPU.” ʮGPUΛ࢖ͬͨߴ౓ͳ3DϨϯμϦϯάͱฒྻॲཧʯ https://developer.apple.com/documentation/metal 4 / 14

Slide 5

Slide 5 text

Metalͷ༻్ “Render advanced 3D graphics and perform data-parallel computations using the GPU.” ʮGPUΛ࢖ͬͨߴ౓ͳ3DϨϯμϦϯάͱฒྻॲཧʯ https://developer.apple.com/documentation/metal 4 / 14 3DάϥϑΟοΫεҎ֎ͷ༻్΋૝ఆ

Slide 6

Slide 6 text

GPUͷಛੑ • 1ίΞ͋ͨΓͷੑೳ͸CPUͷํ͕ߴ͍͕ίΞ਺ ͸CPUΑΓଟ͍ • ʮCPU͸εϙʔπΧʔɺGPU͸όεʯ • ฒྻॲཧʹ޲͍ͨΞʔΩςΫνϟ Ҿ༻ɿiOSDC 2017ʮඈͼಓ۩Ͱ͸ͳ͍Metalʯ(@shu223͞Μ) ൃදࢿྉ 5 / 14

Slide 7

Slide 7 text

ฒྻॲཧͷԸܙΛड͚ͦ͏ͳɹ ෼໺ • ը૾ॲཧ • ػցֶश(ਪ࿦) • ෺ཧγϛϡϨʔγϣϯ 6 / 14

Slide 8

Slide 8 text

ฒྻॲཧͷԸܙΛड͚ͦ͏ͳɹ ෼໺ • ը૾ॲཧ • ػցֶश(ਪ࿦) • ෺ཧγϛϡϨʔγϣϯ 6 / 14

Slide 9

Slide 9 text

ը૾ॲཧ • Core Image (Core Imageͷը૾ॲཧͷҰ෦͸ ಺෦ͰMetalΛ࢖༻͍ͯ͠Δ) • Core Image͕αϙʔτ͍ͯ͠ͳ͍ը૾ॲཧ͸ OpenCVͳͲͷը૾ॲཧϥΠϒϥϦΛ࢖͏ 7 / 14

Slide 10

Slide 10 text

OpenCV • ը૾ॲཧɾίϯϐϡʔλϏδϣϯϥΠϒϥϦ • PCͷGPUʹ͸ରԠ͍ͯ͠Δ͕Metalʹ͸ରԠ ͍ͯ͠ͳ͍ • iOS্Ͱ͸GPUͷԸܙΛड͚ΒΕͳ͍ 8 / 14

Slide 11

Slide 11 text

࣮ݧɿը૾ॲཧͷॲཧ࣌ؒɹɹ Λൺֱɹɹ • OpenCV (CPU) • Metal (GPU) • Metal Performance Shader ɹɹɹɹɹ (MetalΛ࢖ͬͨը૾ɾฒྻॲཧϥΠϒϥϦ) 9 / 14

Slide 12

Slide 12 text

࢖༻ͨ͠ը૾ https://pixabay.com/photo-3599450/ ը૾αΠζɿ5984 × 3989 ϑΝΠϧαΠζɿ6.9MB (JPEG) 10 / 14

Slide 13

Slide 13 text

ൺֱʹ༻͍ͨը૾ॲཧ 11 / 14 1. ೋ஋Խ (നࠇը૾΁ม׵) 2. ը૾ͷॖখ 3. ॖখ + ΅͔͠

Slide 14

Slide 14 text

ݕূ༻ΞϓϦ • githubʹ͋Γ·͢(Լهࢀর) • Xcode 10 (beta 6) • iOS11+ (࣮ػ͕ඞཁ) • OpenCV 3.4.2 12 / 14 https://github.com/kotetuco/ComparisonOfMetalAndOpenCV

Slide 15

Slide 15 text

ݕূ݁Ռ 13 / 14 ※ ୯Ґ͸ϛϦඵɺ࢖༻୺຤͸ iPhone 8 Plusɹ(iOS11.3.1)

Slide 16

Slide 16 text

ݕূ݁Ռ 13 / 14 ※ ୯Ґ͸ϛϦඵɺ࢖༻୺຤͸ iPhone 8 Plusɹ(iOS11.3.1) Metal͕ ଎͍

Slide 17

Slide 17 text

·ͱΊ • MetalΛ࢖͑͹ඞͣ଎͘ͳΔΘ͚Ͱ͸ͳ͍ • ୯७ͳฒྻॲཧͰ͸GPU༻ϝϞϦ΁ͷίϐʔ΍ CPU-GPUؒ௨৴ͷ࣌ؒΛແࢹͰ͖ͳ͍ • ෳ਺ͷॲཧΛ·ͱΊͯߦ͍͍ͨ৔߹ʹ͸Metal͕༗ར • Metal(GPU)ʹ޲͍͍ͯΔ͔Ͳ͏͔ͷݟۃΊ͕େࣄ 14 / 14