Slide 1

Slide 1 text

Introduction to GPU Programming in Python 2018.04.21 PyData.Okinawa #34 @hoto17296

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

@hoto17296 • ͪΎΒσʔλגࣜձࣾ • σʔλ෼ੳϚϯ • JavaScript / Python / AWS • IPv6 ͕Θ͔Βͳ͍ࠓ೔͜ͷ͝Ζ

Slide 5

Slide 5 text

Ͳͷ͝Ոఉʹ΋͋Δ GPU Ϛγϯ

Slide 6

Slide 6 text

࢖͍͜ͳͯ͠·͔͢ʁʁʁ

Slide 7

Slide 7 text

ࣗ෼ͷ GPU ͷΠϝʔδ Λ଎͘ಈ͔ͤΔ΍ͭʂ

Slide 8

Slide 8 text

΋͍ͬͨͳ͍

Slide 9

Slide 9 text

GPU Λ࢖͍౗ͨ͢Ίʹ CUDA Λ৮ͬͯΈΑ͏

Slide 10

Slide 10 text

GPU ͱ͸ • Graphics Processing Unit • άϥϑΟοΫॲཧͷͨΊͷϓϩηοα • ୯७ͳॲཧΛฒྻԋࢉͰ͖Δ • άϥϑΟοΫҎ֎ʹ΋׆༻͞ΕΔ (GPGPU) • σΟʔϓϥʔχϯάͱ͔

Slide 11

Slide 11 text

(NVIDIA) GPU ͷத਎ ετϦʔϛϯά Ϛϧνϓϩηοα ଞʹ΋ϝϞϦͱ͔ Ωϟογϡͱ͔ ৭ʑ͋Δ͚Ͳলུ CUDA ίΞ

Slide 12

Slide 12 text

CUDA ͱ͸ • Compute Unified Device Architecture • NVIDIA GPU Λ࢖ͬͯฒྻܭࢉΛ͢ΔͨΊͷ
 ϓϩάϥϛϯάϞσϧ

Slide 13

Slide 13 text

CUDA ༻ޠ • ϗετͱσόΠε • CPU ଆΛϗετ, GPU ଆΛσόΠε ͱݺͿ • Χʔωϧؔ਺ • GPU ଆͰ࣮ߦ͢ΔॲཧΛهड़ͨؔ͠਺

Slide 14

Slide 14 text

CUDA ϓϩάϥϛϯάϞσϧ • ฒྻ਺͕๲େʹͳΔ • εϨου, ϒϩοΫ, άϦου ͱ͍͏
 ·ͱ·ΓͰฒྻॲཧΛߦ͏

Slide 15

Slide 15 text

ग़యɿ http://www.nvidia.co.jp/object/cuda_education_jp_old.html

Slide 16

Slide 16 text

CUDA ϓϩάϥϛϯάϞσϧ • ฒྻ਺ = εϨου਺ x ϒϩοΫ਺ x άϦου਺ • 1ϒϩοΫ͋ͨΓ࠷େ 512 εϨου • 1άϦου͋ͨΓ࠷େ 65536^2 ϒϩοΫ 1GPU ͋ͨΓ࠷େ 2 ஹ ฒྻʂʂʂ
 ✌('ω'✌ )ࡾ✌('ω')✌ࡾ( ✌’ω')✌

Slide 17

Slide 17 text

CUDA ϓϩάϥϛϯά ΍Γͨ͘ͳ͖ͬͯ·ͨ͠Ͷ ʁʁʁ

Slide 18

Slide 18 text

CUDA ϓϩάϥϛϯάͷํ๏ • C Έ͍ͨͳݴޠͰΧʔωϧؔ਺Λ࣮૷ͯ͠
 nvcc ͱ͍͏ίϯύΠϥͰίϯύΠϧ͢Δ • μϧ͍ • GPU Λར༻ͨ͠ฒྻॲཧΛॻ͍ͯΈ͍͕ͨ
 C ͕ॻ͖͍ͨΘ͚Ͱ͸ͳ͍ • Python Ͱॻ͔ͤͯ͘Ε

Slide 19

Slide 19 text

Numba • JIT ίϯύΠϧͯ͠
 Python Λߴ଎ԽͰ͖Δ΍ͭ • GPU ΋ར༻Ͱ͖Δ (Numba CUDA)

Slide 20

Slide 20 text

Χʔωϧؔ਺ͷ ఆٛ σίϨʔλΛࢦఆ͢Δ͜ͱͰ Χʔωϧؔ਺ͱͯ͠ఆٛ ͜ͷΧʔωϧؔ਺͕ ฒྻ਺෼࣮ߦ͞ΕΔ ݱࡏͲͷҐஔ (ʁ) ͷεϨουͰ
 ࣮ߦ͍ͯ͠Δ͔औಘͰ͖Δ εϨουͷҐஔ৘ใ͔Β ॲཧ͢Δର৅ཁૉͷ࠲ඪΛܭࢉ͢Δ ߦྻͷର৅ཁૉʹରͯ͠ॲཧΛߦ͏

Slide 21

Slide 21 text

Χʔωϧؔ਺ͷ࣮ߦ ฒྻ਺ (griddim, blockdim) Λࢦఆ͔ͯ͠Β࣮ߦ͢Δ

Slide 22

Slide 22 text

΋͏গ͠ෳࡶͳྫɿ ৞ΈࠐΈԋࢉ ग़యɿ http://tecmemo.wpblog.jp/category/machine-learning/deep-learning/page/2/

Slide 23

Slide 23 text

ϥϓϥγΞϯϑΟϧλ • ৞ΈࠐΈԋࢉͰը૾ͷΤοδݕग़Λߦ͏ख๏ • ը૾ͷ৭ͷඍ෼ʹ૬౰͢Δ • ͜ͷߦྻΛϑΟϧλͱͯ͠
 ৞ΈࠐΈԋࢉΛߦ͏ 1 1 1 1 -8 1 1 1 1

Slide 24

Slide 24 text

৞ΈࠐΈԋࢉΛߦ͏ Χʔωϧؔ਺Λ ࣮૷

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

ೖྗը૾ ϑΟϧλ݁Ռ

Slide 27

Slide 27 text

·ͱΊ • Python Ͱ΋ GPU ϓϩάϥϛϯά͸Ͱ͖Δ • GPU Ͱ༡Ϳͷ͸ͨͷ͍͠
 ✌('ω'✌ )ࡾ✌('ω')✌ࡾ( ✌’ω')✌