๐Ÿ“–โœ๏ธ(ใƒป∀ใƒป)/computer

๊ฒ€์ƒ‰๊ฒฐ๊ณผ 4 ๊ฐœ
์Šค๋ ˆ๋“œ ๋ฐœ์‚ฐ (thread divergence)

divergence๋Š” ๋ฐœ์‚ฐ, ๋ถ„๊ธฐ๋ผ๋Š” ๋œป์„ ๊ฐ€์ง„ ์˜์–ด ๋‹จ์–ด์ด๋‹ค. ๋‘˜ ์ด์ƒ์˜ ๋‹น์‚ฌ์ž ๊ฐ„์˜ ์˜๊ฒฌ, ๊ด€์‹ฌ ๋˜๋Š” ํฌ๋ง ์‚ฌํ•ญ์˜ ์ฐจ์ด ๋˜๋Š” ๊ณตํ†ต์ ์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ ๋ฐœ์‚ฐ(thread divergence)์€ GPU ๋‚ด์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์œผ๋กœ, GPU๋Š” ๋งŽ์€ ์ˆ˜์˜ ์‰์ด๋” ์ฝ”์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์ด ์ฝ”์–ด๋“ค์€ ๋ณ‘๋ ฌ๋กœ ๋™์‹œ์— ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋‹ค. ์Šค๋ ˆ๋“œ ๋ฐœ์‚ฐ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์˜ ํšจ์œจ์„ฑ์ด ํฌ๊ฒŒ ๋–จ์–ด์ง€๊ฒŒ ๋˜๋Š”๋ฐ.... (;๏ผพโ—‡๏ผพ;)ใ‚ ์Šค๋ ˆ๋“œ ๋ฐœ์‚ฐ(thread divergence) ์ด๋ž€? ์Šค๋ ˆ๋“œ ๋ฐœ์‚ฐ์€ GPU๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ์‰์ด๋” ์ฝ”์–ด(์Šค๋ ˆ๋“œ)๊ฐ€ ๋™์ผํ•œ ์‹œ์ ์— ์„œ๋กœ ๋‹ค๋ฅธ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ๊ฐ€๊ฒŒ ๋  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Š” ์ฃผ๋กœ ์กฐ๊ฑด๋ฌธ('if', 'switch' ๋“ฑ) ์‚ฌ์šฉ์— ์˜ํ•ด ๋ฐœ์ƒํ•˜..

SIMD๋ž€? (Single Instruction Multiple Data)

SIMD SIMD๋Š” Single Instruction, Multiple Data์˜ ์•ฝ์ž๋กœ, ํ•˜๋‚˜์˜ ๋ช…๋ น์–ด๋กœ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ธฐ์ˆ ์ด๋‹ค. ์ด ๊ธฐ์ˆ ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฒกํ„ฐ๋‚˜ ํ–‰๋ ฌ ๊ฐ™์€ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์— ๊ฐ™์€ ์—ฐ์‚ฐ(๋”ํ•˜๊ธฐ, ๊ณฑํ•˜๊ธฐ ๋“ฑ)์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ์šฉํ•ด์•ผํ•  ๋•Œ, SIMD๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์„ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋งค์šฐ ๋นจ๋ผ์ง„๋‹ค. ์ปดํ“จํ„ฐ์˜ CPU๋‚˜ GPU์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๊ณ , ํŠนํžˆ ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ, ๊ณผํ•™ ๊ธฐ์ˆ  ๊ณ„์‚ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒ€์ƒ‰, ๋Œ€๊ทœ๋ชจ ์ˆซ์ž ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ํšจ์œจ์„ฑ์„ ๋ฐœํœ˜ํ•œ๋‹ค. C๋‚˜ C++์—์„œ๋Š” SIMD๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ •ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ํ™•์žฅ(ex. SS..

Mac VSCode-๋‹ท๋„ท sdk ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ (The .NET Core SDK cannot be located)

์—ด์‹ฌํžˆ ๋‹ค์šด๋ฐ›๊ณ  ์—ฐ๊ฒฐํ•˜๊ณ  ํ–ˆ๋Š”๋ฐ ์ž๊พธ ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ ์ด์ชฝ์€ ์ ‘ํ•  ๊ธฐํšŒ๊ฐ€ ๋ณ„๋กœ ์—†์—ˆ๋‹ค ๋ณด๋‹ˆ ํ•˜๋‚˜๋ฅผ ํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฒŒ ๋‹ค์„ฏ๊ฐœ๊ฐ€ ์ƒ๊ธด๋‹ค ๋Œ€ํ•™๊ต 1ํ•™๋…„ ๋•Œ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ„ ๊ธฐ๋ถ„ ๐Ÿคค dotnet --list-sdks ๋‹ค์šด๋ฐ›๊ณ  ๋œ ์ค„ ์•Œ์•˜๋Š”๋ฐ ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ dotnet ์„ค์น˜๋ฅผ ํ™•์ธํ•˜๋ ค๊ณ  ํ•ด๋„ ์„ค์น˜๊ฐ€ ์•ˆ๋˜์—ˆ๋‹ค. ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๋กœ๊ทธ๋งŒ ๋‚˜์™”๋‹ค. ๊ทธ๋ƒฅ ๋‹ค์‹œ ๊ป๋‹คํ‚ค๋ฉด ๋œ๋‹ค๋Š” ์‚ฌ๋žŒ๋„ ์žˆ์—ˆ๋Š”๋ฐ ๊ป๋‹ค์ผœ๊ณ  ์žฌ์„ค์น˜ํ•ด๋ด๋„ ๊ทธ๋Œ€๋กœ์˜€๋‹ค. ์ด๊ฒƒ์ €๊ฒƒ ํ•ด๋ณด๊ณ  ๋‹นํ™ฉํ•˜๋‹ค๊ฐ€ ์—ฌ๋Ÿฌ ๊นจ๋‹ฌ์Œ์„ ์–ป์—ˆ๊ณ , ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์˜ ํ•œ ์™ธ๊ตญ์ธ์˜ ๋„์›€์œผ๋กœ ์„ฑ๊ณตํ–ˆ๋‹ค. VSCode ๋ฅผ ์ข…๋ฃŒ ํ•œ ํ›„ ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ฐ๋‹ค. vi ~/.zshrc ๋ฅผ ์ž…๋ ฅํ•ด i (์ˆ˜์ • ๋ชจ๋“œ)๋ฅผ ๋ˆ„๋ฅด๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด path๋ฅผ ์ ์–ด์ค€๋‹ค. (๊ฒฝ๋กœ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•) shift..