์ฑ„๋„ํ†ก ์•„์ด์ฝ˜

CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ (6) - C/C++/GPU ๋ณ‘๋ ฌ ์ปดํ“จํŒ… - ์„œ์น˜ & ์†ŒํŠธ

โœ… ์ „์ฒด (1) ~ (6)์˜ ์‹œ๋ฆฌ์ฆˆ ์ค‘, (6) parallel search, parallel sort ๊ตฌํ˜„ โœ… NVIDIA GPU + CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. โœ… C++/C ์–ธ์–ด๋กœ ๋ฐฐ์—ด/ํ–‰๋ ฌ/์ด๋ฏธ์ง€์ฒ˜๋ฆฌ/ํ†ต๊ณ„์ฒ˜๋ฆฌ/์ •๋ ฌ ๋“ฑ์„ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์œผ๋กœ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Thumbnail

์ค‘๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ๋”ฅ๋Ÿฌ๋‹ ยท ๋จธ์‹ ๋Ÿฌ๋‹] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • ์‹œ๋ฆฌ์ฆˆ ์ „์ฒด - GPU๋ฅผ ์ด์šฉํ•œ CUDA์˜ ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…

  • ์ด ๊ฐ•์˜๋Š” - ํŒŒํŠธ (6) - parallel search, parallel sort ๊ตฌํ˜„

  • ๋กœ๋“œ๋งต "CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ"์—์„œ โœ…๋ฌถ์Œ ํ• ์ธ ์ฟ ํฐโœณ๏ธ ์ œ๊ณต

ํ”„๋กœ๊ทธ๋žจ์€ ์†๋„๊ฐ€ ์ƒ๋ช…!
๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด์š” ๐Ÿš€

๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์ด ์ค‘์š”ํ•˜๋‹ค๋˜๋ฐ ๐Ÿง

GPU/๊ทธ๋ž˜ํ”ฝ ์นด๋“œ ๊ธฐ๋ฐ˜์˜ ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์€ AI, ๋”ฅ๋Ÿฌ๋‹, ๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ด๋ฏธ์ง€/์˜์ƒ/์Œ์„ฑ ์ฒ˜๋ฆฌ ๋“ฑ์—์„œ ๋งค์šฐ ํ™œ๋ฐœํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์–ด์š”. ๊ทธ๋ฆฌ๊ณ  ํ˜„์žฌ GPU ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์—์„œ ๊ฐ€์žฅ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ ์šฉ๋˜๋Š” ๊ธฐ์ˆ ์ด NVIDIA ์‚ฌ์˜ CUDA ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค.

๋ณ‘๋ ฌ ์ปดํ“จํŒ… ์ค‘์—๋„ ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…, CUDA (์ฟ ๋‹ค) ๋“ฑ์˜ ๊ธฐ์ˆ ์ด ์ค‘์š”ํ•˜๋‹ค๋Š”๋ฐ, ์ •์ž‘ ์ด ๋ถ„์•ผ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ฐ€๋ฅด์ณ ์ฃผ๋Š” ๊ฐ•์˜๋ฅผ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์„œ ํ•™์Šต์„ ์‹œ์ž‘ํ•˜๊ธฐ๋„ ํž˜๋“ค์ฃ . ์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์›Œ๋ณด์„ธ์š”. CUDA๋‚˜ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์€ ์ด๋ก ์  ๋ฐฐ๊ฒฝ์ด ํ•„์š”ํ•˜๊ณ  ๋‚œ์ด๋„๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ์ด ๊ฐ•์˜์˜ ํ’๋ถ€ํ•œ ์˜ˆ์ œ์™€ ๋ฐฐ๊ฒฝ์ง€์‹ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ๋”ฐ๋ผ๊ฐ„๋‹ค๋ฉด ์ถฉ๋ถ„ํžˆ ํ•˜์‹ค ์ˆ˜ ์žˆ์–ด์š”! ์ด ๊ฐ•์˜๋Š” ์‹œ๋ฆฌ์ฆˆ ๊ฐ•์˜๋กœ ์ œ์ž‘๋  ์˜ˆ์ •์œผ๋กœ, ์ถฉ๋ถ„ํ•œ ๊ฐ•์˜ ์‹œ๊ฐ„์„ ํ™•๋ณดํ•ด์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

๐Ÿ“ข ์ˆ˜๊ฐ• ์ „ ํ™•์ธํ•ด์ฃผ์„ธ์š”!

  • ์‹ค์Šต์„ ์œ„ํ•ด NVIDIA CUDA๊ฐ€ ์ž‘๋™ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ์„ ๋ฏธ๋ฆฌ ํ™•๋ณดํ•ด์ฃผ์„ธ์š”. NVIDIA์˜ GeForce ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๊ฐ€ ์žฅ์ฐฉ๋œ PC/๋…ธํŠธ๋ถ์ด ๊ผญ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋„ NVIDIA GeForce ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ์„ค์ •์€ ์ž์ฃผ ๋ฐ”๋€Œ๊ณ  ์œ ๋ฃŒ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ์ˆ˜๊ฐ•์ƒ ๋ณธ์ธ์ด ํ™•๋ณดํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ•์˜ ์‹ค์Šต ํ™˜๊ฒฝ์€ ์ปค๋ฆฌํ˜๋Ÿผ์˜ <00. ๊ฐ•์˜ ์ „ ์ค€๋น„ ์‚ฌํ•ญ> ๊ฐ•์˜์—์„œ ์ž์„ธํžˆ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ•์˜ ํŠน์ง• โœจ

#1.
ํ’๋ถ€ํ•œ
์˜ˆ์ œ์™€ ์„ค๋ช…

CUDA์™€ ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์€ ํ’๋ถ€ํ•œ ์˜ˆ์ œ์™€ ์„ค๋ช…์ด ํ•„์š”ํ•ด์š”. ์ด ์‹œ๋ฆฌ์ฆˆ ๊ฐ•์˜์—์„œ๋Š” ์ด 24์‹œ๊ฐ„ ์ด์ƒ์˜ ์‹ค์ œ ๊ฐ•์˜ ์‹œ๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

#2.
์‹ค์Šต์€ ํ•„์ˆ˜!

์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณผ๋ชฉ์ด๋ผ์„œ, ํ’๋ถ€ํ•œ ์‹ค์Šต์„ ๊ฐ•์กฐํ•˜๊ณ , ์‹ค์ œ ์ž‘๋™ํ•˜๋Š” source code๋ฅผ ์ œ๊ณตํ•ด์„œ, ํ•˜๋‚˜ํ•˜๋‚˜ ๋”ฐ๋ผ๊ฐ€๋ฉด์„œ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#3.
์ค‘์š”ํ•œ ๋ถ€๋ถ„์„
์ง‘์ค‘์ ์œผ๋กœ!

๊ฐ•์˜ ์‹œ๊ฐ„์—๋Š” ์ด๋ฏธ ์„ค๋ช…ํ•œ source code ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ์ค‘๋ณต ์„ค๋ช…์„ ์ตœ๋Œ€ํ•œ ๋ฐฐ์ œํ•ด์„œ, ๋ฐ”๋€ ๋ถ€๋ถ„์ด๋‚˜, ๊ฐ•์กฐํ•ด์•ผ ํ•  ๋ถ€๋ถ„์—๋งŒ ์ง‘์ค‘ํ•ด์„œ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜ ์ถ”์ฒœํ•ด์š” ๐Ÿ™‹โ€โ™€๏ธ

์ทจ์—… ์ „์— ์‹ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๋Œ€ํ•™์ƒ

๊ธฐ์กด ํ”„๋กœ๊ทธ๋žจ์„ ํš๊ธฐ์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ

๋‹ค์–‘ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์–ด๋–ป๊ฒŒ ๊ณ ์†ํ™”๋˜์—ˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์€ ์ „๊ณต ์—ฐ๊ตฌ์ž

AI, ๋”ฅ๋Ÿฌ๋‹, ํ–‰๋ ฌ ๊ณ„์‚ฐ ๋“ฑ์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์ด๋ก ๊ณผ ์‹ค์ œ๋ฅผ ์•Œ๊ณ  ์‹ถ์€ ๋ถ„

๋ฏธ๋ฆฌ ๋ณด๋Š” ๊ฐ•์˜ ํ›„๊ธฐ ๐Ÿƒ

*์•„๋ž˜ ํ›„๊ธฐ๋Š” ์ง€์‹๊ณต์œ ์ž๊ฐ€ ๊ฐ™์€ ์ฃผ์ œ๋กœ ์ง„ํ–‰ํ•œ ์™ธ๋ถ€ ๊ฐ•์—ฐ์— ๋Œ€ํ•œ ํ›„๊ธฐ์ž…๋‹ˆ๋‹ค.

"์ €๋Š” ๋ณ‘๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‚˜ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์— ๋Œ€ํ•ด์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ชฐ๋ž๋Š”๋ฐ,
๊ฐ•์˜๋ฅผ ๋“ค์€ ํ›„์—๋Š” ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์— ์ž์‹ ๊ฐ์„ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ์–ด์š”."

"๊ธฐ์กด C++ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ๋Š” ํ•ด๊ฒฐ์„ ๋ชป ํ–ˆ๋˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งŽ์•˜๋Š”๋ฐ,
์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด์„œ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ์–ด์š”!"

"๊ฐ•์˜๋ฅผ ๋“ค์€ ํ›„ ๋ฉด์ ‘์„ ๋ณผ ๋•Œ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์— ๊ฒฝํ—˜์ด ์žˆ๋‹ค๊ณ  ํ–ˆ๋”๋‹ˆ ๋ฉด์ ‘๊ด€๋“ค์ด ์—„์ฒญ ๋†€๋ผ์…จ์–ด์š”.
๋Œ€ํ•™์ƒ ๋ ˆ๋ฒจ์—์„œ๋Š” CUDA๋‚˜ ๋ณ‘๋ ฌ ์ปดํ“จํŒ… ๊ฐ•์˜๊ฐ€ ์ฐพ๊ธฐ ์‰ฝ์ง€ ์•Š๋‹ค๊ณ  ํ•˜๋”๋ผ๊ณ ์š”."


CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ •๋ณต ๋กœ๋“œ๋งต ๐Ÿ›ฉ๏ธ

  • CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜๋Š” ์ฃผ์ œ์— ๋Œ€ํ•œ ์ง‘์ค‘๋„๋ฅผ ๋†’์ด๊ณ ์ž 7๊ฐœ ์‹œ๋ฆฌ์ฆˆ, ์ด 24์‹œ๊ฐ„ ์ด์ƒ์˜ ๊ฐ•์˜๋กœ ๊ธฐํš๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ๊ฐ•์˜๋Š” ๋‹ค์‹œ 6๊ฐœ ์ด์ƒ์˜ ์„น์…˜์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์„น์…˜๋งˆ๋‹ค ๋…๋ฆฝ์ ์ธ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. (ํ˜„์žฌ ๊ฐ•์˜์ธ ํŒŒํŠธ 0๋Š” 2๊ฐœ์˜ ์„น์…˜์œผ๋กœ Introduction๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.)
  • ๊ฐ•์˜์—์„œ ์‚ฌ์šฉํ•œ ์Šฌ๋ผ์ด๋“œ๊ฐ€ PDF ํŒŒ์ผ๋กœ ์ œ๊ณต๋˜๋ฉฐ, ์‹ค์Šต ์˜ˆ์ œ๊ฐ€ ์„ค๋ช…๋œ ์„น์…˜์—์„œ๋Š” ์‚ฌ์šฉํ•œ ํ”„๋กœ๊ทธ๋žจ source code๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

ํŒŒํŠธ 0 (1์‹œ๊ฐ„ ๋ฌด๋ฃŒ ๊ฐ•์˜) 

  • MPC, CUDA ์†Œ๊ฐœ - MPC์™€ CUDA์— ๋Œ€ํ•œ ์ „์ฒด์ ์ธ ์†Œ๊ฐœ๋ฅผ ํ•˜๋Š” introduction ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

ํŒŒํŠธ 1 (3์‹œ๊ฐ„ 40๋ถ„)

  • CUDA kernel ๊ฐœ๋… - CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์‹œ์ž‘์ธ CUDA kermel์˜ ๊ฐœ๋…์„ ํ•™์Šตํ•˜๊ณ , ๋ณ‘๋ ฌ ์ปดํ“จํŒ…์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒํŠธ 2 (4์‹œ๊ฐ„ 15๋ถ„)

  • vector addition - 1์ฐจ์› ๋ฐฐ์—ด ํ˜•ํƒœ์ธ vector (๋ฒกํ„ฐ) ๋ผ๋ฆฌ์˜ ์—ฐ์‚ฐ์„ ๋‹ค์–‘ํ•œ ์˜ˆ์ œ๋กœ ์ œ์‹œํ•˜๊ณ , AXPY ๋ฃจํ‹ด์„ ์‹ค์ œ๋กœ CUDA๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒํŠธ 3 (4์‹œ๊ฐ„ 5๋ถ„)

  • memory hierarchy - CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ๋กœ matrix addition, adjacent difference ๋“ฑ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒํŠธ 4 (3์‹œ๊ฐ„ 45๋ถ„)

  • matrix transpose & multiply - 2์ฐจ์› ๋ฐฐ์—ด ํ˜•ํƒœ์ธ matrix(๋งคํŠธ๋ฆญ์Šค, ํ–‰๋ ฌ)๋ผ๋ฆฌ์˜ ์—ฐ์‚ฐ์„ ๋‹ค์–‘ํ•œ ์˜ˆ์ œ๋กœ ์ œ์‹œํ•˜๊ณ , GEMM ๋ฃจํ‹ด์„ CUDA๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒํŠธ 5 (3์‹œ๊ฐ„ 55๋ถ„)

  • atomic operation & reduction - CUDA ์ปจํŠธ๋กค ํ”Œ๋กœ์šฐ์— ๋Œ€ํ•œ ์ดํ•ด์™€ ๋”๋ถˆ์–ด, atomic operation, reduction ๋“ฑ์˜ ๋ฌธ์ œ ์ •์˜๋ถ€ํ„ฐ ํ•ด๊ฒฐ์ฑ…๊นŒ์ง€ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. GEMV ๋ฃจํ‹ด๋„ CUDA๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒํŠธ 6 (3์‹œ๊ฐ„ 45๋ถ„)ํ˜„์žฌ ๊ฐ•์˜

  • search & sort - CUDA ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ด์šฉํ•ด์„œ, search-all ๋ฌธ์ œ๋‚˜ even-odd sort, bitonic sort, counting merge sort ๋“ฑ์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์˜ˆ์ œ๋ฅผ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ
๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ปดํ“จํŒ… ์ •๋ณต ์™„๋ฃŒ!


Q&A ๐Ÿ’ฌ

Q. ์œ ๋ฃŒ ๊ฐ•์˜ ์ˆ˜๊ฐ•ํ‰์€ ์–ด๋–ค๊ฐ€์š”?

์œ ๋ฃŒ ๊ฐ•์˜๊ฐ€ (1) ~ (6) ์œผ๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์˜คํ”ˆ๋˜์–ด์„œ, ์ˆ˜๊ฐ•ํ‰์ด ํฉ์–ด์ ธ์žˆ๊ณ , ์•„์ง ๋น„๊ณต๊ฐœ์ž…๋‹ˆ๋‹ค. ์œ ๋ฃŒ ๊ฐ•์˜๋Š” ํ˜„์žฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆ˜๊ฐ•ํ‰๋“ค์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

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

Q. ๋น„์ „๊ณต์ž๋„ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ•์˜์ธ๊ฐ€์š”?

  • C++ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์–ด๋Š ์ •๋„ ๊ฒฝํ—˜์ด ์žˆ์œผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ, C ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜์‹  ๊ฒฝํ—˜์€ ์žˆ์œผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜ˆ์ œ๊ฐ€ ๋˜๋„๋ก ํ‰์ดํ•˜๊ฒŒ ์ž‘์„ฑ๋˜์—ˆ์ง€๋งŒ, ๋ชจ๋‘ C++/C ์ฝ”๋“œ๋กœ ์ œ๊ณต๋˜๋ฉฐ, malloc, memcpy ๋“ฑ์˜ ํ•จ์ˆ˜๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ ์ •๋„์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋„๋กœ ์„ค๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๋งŒ, ์ปดํ“จํ„ฐ ๊ตฌ์กฐ (๋ ˆ์ง€์Šคํ„ฐ, ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ), ์šด์˜ ์ฒด์ œ (ํƒ€์ž„ ์‰์–ด๋ง ๋“ฑ), ์ปดํŒŒ์ผ๋Ÿฌ (์ฝ”๋“œ ์ƒ์„ฑ, ์ฝ”๋“œ ์ตœ์ ํ™”) ๋“ฑ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์žˆ์œผ์‹œ๋ฉด, ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ๊ฐ•์˜์˜ ์ตœ์ดˆ ์„ค๊ณ„๋Š” 4๋…„์ œ ๋Œ€ํ•™, ์ปดํ“จํ„ฐ ์ „๊ณต, ์กธ์—…๋ฐ˜ ํ•™์ƒ๋“ค์˜ ์‹ฌํ™” ํ•™์Šต์šฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Q. ๊ฐ•์˜๋ฅผ ๋“ฃ๊ธฐ ์ „ ์ค€๋น„ํ•ด์•ผ ํ•  ๊ฒƒ์ด ์žˆ๋‚˜์š”? ์ˆ˜๊ฐ• ๊ด€๋ จ ์ฐธ๊ณ  ์‚ฌํ•ญ(๊ฐ–์ถฐ์•ผ ํ•  ํ™˜๊ฒฝ, ๊ธฐํƒ€ ์œ ์˜ ์‚ฌํ•ญ ๋“ฑ)์ด ์žˆ๋‚˜์š”?

  • ์‹ค์Šต์„ ์œ„ํ•œ NVIDIA CUDA๊ฐ€ ์ž‘๋™ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ์€ ๋ฏธ๋ฆฌ ํ™•๋ณดํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. NVIDIA์˜ GeForce ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๊ฐ€ ์žฅ์ฐฉ๋œ PC/๋…ธํŠธ๋ถ์ด ๊ผญ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋„ NVIDIA GeForce ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ์„ค์ •์€ ์ž์ฃผ ๋ฐ”๋€Œ๊ณ , ์œ ๋ฃŒ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ, ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด๋ผ๋ฉด, ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ์ˆ˜๊ฐ•์ƒ ๋ณธ์ธ์ด ํ•ด๊ฒฐํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

Q. ์ˆ˜์—… ๋‚ด์šฉ์„ ์–ด๋Š ์ˆ˜์ค€๊นŒ์ง€ ๋‹ค๋ฃจ๋‚˜์š”?

  • ํŒŒํŠธ 0์—์„œ ์ถœ๋ฐœํ•ด์„œ, ํŒŒํŠธ 1์—์„œ ํŒŒํŠธ 6๋กœ ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก, ๋” ๊นŠ์€ ์ด๋ก ๊ณผ ๋” ๋งŽ์€ ์ดํ•ด๋„๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. 
  • ๋ฐ˜๋“œ์‹œ ํŒŒํŠธ 0์—์„œ ํŒŒํŠธ 6์˜ ์ˆœ์„œ๋Œ€๋กœ, ์ •์ฃผํ–‰ํ•ด์„œ ์ˆ˜๊ฐ•ํ•˜์‹œ๊ธฐ๋ฅผ ๊ฐ•๋ ฅํžˆ ๊ถŒ๊ณ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  • ํŒŒํŠธ 6์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์—์„œ ๋‹ค๋ฃจ๋Š” counting merge sort๋Š” ์ „๋ฌธ ์—ฐ๊ตฌ์ž๋“ค๋„ ๊ธˆ๋ฐฉ ๋”ฐ๋ผ๊ฐ€๊ธฐ์—๋Š” ์–ด๋ ค์šด ์ •๋„์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ฐจ๊ทผ์ฐจ๊ทผ ๋”ฐ๋ผ๊ฐ”๋˜ off-line ์ˆ˜๊ฐ•์ƒ๋“ค์€ ์•ž๋ถ€๋ถ„์˜ ํ•™์Šต์„ ๋ฐ”ํƒ•์œผ๋กœ, ๋ฌด๋‚œํ•˜๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. 

Q. ์ˆ˜๊ฐ• ๊ธฐํ•œ์„ ์„ค์ •ํ•˜๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‚˜์š”?

  • ์ˆ˜๊ฐ• ๊ธฐํ•œ์„ ์„ค์ •ํ•œ ๊ฒƒ์€, ์ปดํ“จํ„ฐ ๋ถ„์•ผ ํŠน์„ฑ์ƒ ๊ทธ ์ •๋„์˜ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ด ๊ฐ•์˜ ๋‚ด์šฉ์ด ์ด๋ฏธ ์˜›๋‚  ์ด์•ผ๊ธฐ๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ๊ทธ๋•Œ์ฏค์—”, ์ƒˆ๋กœ์šด ๊ฐ•์˜์—์„œ ๋‹ค์‹œ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜„

Q. ๋™์˜์ƒ์— ์ž๋ง‰์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‚˜์š”?

  • ๋„ค. ํ˜„์žฌ๋Š” ๋ชจ๋“  ๋™์˜์ƒ์— ์ž๋ง‰์ด ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๋งŒ, ์ถ”ํ›„์— ์ถ”๊ฐ€๋˜๋Š” ๋™์˜์ƒ ์ผ๋ถ€์—๋Š” ๋™์˜์ƒ ์ž๋ง‰์ด ์—†์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ•์˜ ์ž๋ฃŒ์— ์‚ฌ์šฉํ•œ ํฐํŠธ ๊ด€๋ จ ์‚ฌํ•ญ โœ”๏ธ

  • ๋™์˜์ƒ๊ณผ PDF ํŒŒ์ผ์—์„œ๋Š” Google / Adobe์˜ ๋ฌด๋ฃŒ ํฐํŠธ๋งŒ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. 
  • ํ•œ๊ธ€ ํฐํŠธ๋Š” "๋ณธ๊ณ ๋”•" Noto Sans KR, ์˜๋ฌธ ํฐํŠธ๋Š” Source Sans ProSource Serif Pro๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ ,
  • ๋‹ค์Œ ๋งํฌ์—์„œ ๋ชจ๋‘ ๋ฌด๋ฃŒ๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ ํ›„์—๋Š” ์••์ถ• ํ•ด์ œ ํ›„, ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ PC/๋…ธํŠธ๋ถ ๋“ฑ์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • https://fonts.google.com/noto/specimen/Noto+Sans+KR์—์„œ, "download family"๋กœ ZIP ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œ ํ›„ ์„ค์น˜
  • https://fonts.google.com/specimen/Source+Sans+Pro์—์„œ, "download family"๋กœ ZIP ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œ ํ›„ ์„ค์น˜
  • https://fonts.google.com/specimen/Source+Serif+Pro์—์„œ, "download family"๋กœ ZIP ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œ ํ›„ ์„ค์น˜

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ๋ฐฐ์—ด/ํ–‰๋ ฌ/์ด๋ฏธ์ง€์ฒ˜๋ฆฌ/ํ†ต๊ณ„์ฒ˜๋ฆฌ/์ •๋ ฌ ๋“ฑ์„ C++C ๊ธฐ๋ฐ˜ ๋ณ‘๋ ฌ์ปดํ“จํŒ…/๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋กœ ๊ฐ€์†ํ•˜๋ ค๋Š” ๋ถ„

  • ์ง์ ‘ ๊ฐœ๋ฐœํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณ‘๋ ฌ ์ปดํ“จํŒ…/CUDA/์ฟ ๋‹ค ๋กœ ๊ฐ€์†์‹œํ‚ค๋ ค๋Š” ๋ถ„

  • NVIDIA CUDA ํ”„๋กœ๊ทธ๋ž˜๋ฐ/CUDA ์ปดํ“จํŒ…์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•˜์‹œ๋ ค๋Š” ๋ถ„

  • GPU ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ/๋ณ‘๋ ฌ์ปดํ“จํŒ…์˜ ์ด๋ก ๊ณผ ์‹ค์ œ๋ฅผ ๊ณจ๊ณ ๋ฃจ ๊ณต๋ถ€ํ•˜์‹œ๋ ค๋Š” ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • C++ ๋˜๋Š” C ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝํ—˜

  • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ, ๋ ˆ์ง€์Šคํ„ฐ, ์บ์‹œ, ํƒ€์ž„ ์‰์–ด๋ง ๋“ฑ์— ๋Œ€ํ•œ ์ง€์‹์ด ์žˆ์œผ๋ฉด ๋” ์ข‹์Šต๋‹ˆ๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š”
๋“œ๋ฆฝ์ปคํ”ผ+ํ•œ๋ชจ๊ธˆ๋”์ž…๋‹ˆ๋‹ค.

4,772

๋ช…

์ˆ˜๊ฐ•์ƒ

136

๊ฐœ

์ˆ˜๊ฐ•ํ‰

55

๊ฐœ

๋‹ต๋ณ€

4.9

์ 

๊ฐ•์˜ ํ‰์ 

30

๊ฐœ

๊ฐ•์˜

One more cup of drip coffee for the road

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

39๊ฐœ โˆ™ (3์‹œ๊ฐ„ 42๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

4๊ฐœ

5.0

4๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

์—ฐ๊ด€ ๋กœ๋“œ๋งต

๊ฐ•์˜๊ฐ€ ํฌํ•จ๋œ ๋กœ๋“œ๋งต์œผ๋กœ ํ•™์Šตํ•ด ๋ณด์„ธ์š”!

โ‚ฉ49,500