Puzzle 16: ํ–‰๋ ฌ ๊ณฑ์…ˆ (MatMul)

๊ฐœ์š”

ํ–‰๋ ฌ ๊ณฑ์…ˆ์€ ๊ณผํ•™ ๊ณ„์‚ฐ, ๋จธ์‹  ๋Ÿฌ๋‹, ๊ทธ๋ž˜ํ”ฝ์Šค์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ์—ฐ์‚ฐ์ž…๋‹ˆ๋‹ค. ๋‘ ํ–‰๋ ฌ \(A\)์™€ \(B\)๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด๋“ค์˜ ๊ณฑ \(C = A \times B\) ๋ฅผ ๊ตฌํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

ํ–‰๋ ฌ \(A_{m\times k}\)์™€ \(B_{k\times n}\)์— ๋Œ€ํ•ด, ๊ฒฐ๊ณผ \(C_{m\times n}\)์˜ ๊ฐ ์›์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค:

\[\Large C_{ij} = \sum_{l=0}^{k-1} A_{il} \cdot B_{lj} \]

ํ–‰๋ ฌ ๊ณฑ์…ˆ ์‹œ๊ฐํ™” ํ–‰๋ ฌ ๊ณฑ์…ˆ ์‹œ๊ฐํ™”

์ด ํผ์ฆ์—์„œ๋Š” GPU์—์„œ ํ–‰๋ ฌ ๊ณฑ์…ˆ์„ ๊ตฌํ˜„ํ•˜๋Š” ์—ฌ๋Ÿฌ ์ ‘๊ทผ๋ฒ•์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๊ฐ ๋ฒ„์ „์€ ์„œ๋กœ ๋‹ค๋ฅธ ์„ฑ๋Šฅ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ๊ธฐ๋ณธ ๋ฒ„์ „ ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ์ถœ๋ ฅ ํ–‰๋ ฌ์˜ ์›์†Œ ํ•˜๋‚˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ง๊ด€์ ์ธ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค. ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ, ์ค‘๋ณต๋œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ๋งŽ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„์ „ ์ž…๋ ฅ ํ–‰๋ ฌ์˜ ๋ธ”๋ก์„ ๋น ๋ฅธ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์ค„์ž…๋‹ˆ๋‹ค. ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ์ถœ๋ ฅ ์›์†Œ ํ•˜๋‚˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์€ ๊ฐ™์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.

  • ํƒ€์ผ๋ง ๋ฒ„์ „ ์—ฐ์‚ฐ์„ ํƒ€์ผ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ์Šค๋ ˆ๋“œ๋“ค์ด ์ถœ๋ ฅ ํ–‰๋ ฌ์˜ ๋ธ”๋ก์„ ํ•จ๊ป˜ ๋กœ๋“œํ•˜๊ณ  ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ์™€ ์Šค๋ ˆ๋“œ ํ˜‘๋ ฅ์„ ํ•œ์ธต ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๊ฐ ๋ฒ„์ „์€ ์ด์ „ ๋ฒ„์ „ ์œ„์— ์Œ“์•„ ์˜ฌ๋ฆฌ๋ฉด์„œ GPU ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ƒˆ๋กœ์šด ์ตœ์ ํ™” ๊ธฐ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํŒจํ„ด๊ณผ ์Šค๋ ˆ๋“œ ํ˜‘๋ ฅ ์ „๋žต์ด ์„ฑ๋Šฅ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋‹จ๊ณ„์  ์ง„ํ–‰ ๊ณผ์ •์€ GPU ์ตœ์ ํ™”์˜ ๋Œ€ํ‘œ์ ์ธ ํŒจํ„ด์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค:

  1. ์ •ํ™•ํ•˜์ง€๋งŒ ๋‹จ์ˆœํ•œ ๊ธฐ๋ณธ ๊ตฌํ˜„์—์„œ ์ถœ๋ฐœ
  2. ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์ค„์ด๊ธฐ
  3. ํƒ€์ผ๋ง์œผ๋กœ ๋ฐ์ดํ„ฐ ์ง€์—ญ์„ฑ๊ณผ ์Šค๋ ˆ๋“œ ํ˜‘๋ ฅ ๊ฐœ์„ 
  4. ๊ณ ์ˆ˜์ค€ ์ถ”์ƒํ™”๋ฅผ ํ™œ์šฉํ•˜๋ฉด์„œ๋„ ์„ฑ๋Šฅ ์œ ์ง€

์›ํ•˜๋Š” ๋ฒ„์ „์„ ๊ณจ๋ผ ํ–‰๋ ฌ ๊ณฑ์…ˆ ์—ฌ์ •์„ ์‹œ์ž‘ํ•ด ๋ณด์„ธ์š”!