๐โ๏ธ(ใป∀ใป)
divergence๋ ๋ฐ์ฐ, ๋ถ๊ธฐ๋ผ๋ ๋ป์ ๊ฐ์ง ์์ด ๋จ์ด์ด๋ค. ๋ ์ด์์ ๋น์ฌ์ ๊ฐ์ ์๊ฒฌ, ๊ด์ฌ ๋๋ ํฌ๋ง ์ฌํญ์ ์ฐจ์ด ๋๋ ๊ณตํต์ ์์ ๋ฒ์ด๋๋ ๊ณผ์ ์ ์๋ฏธํ๋ค๊ณ ํ๋ค. ์ค๋ ๋ ๋ฐ์ฐ(thread divergence)์ GPU ๋ด์์ ์ค์ํ ๊ฐ๋ ์ผ๋ก, GPU๋ ๋ง์ ์์ ์์ด๋ ์ฝ์ด๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ์ด ์ฝ์ด๋ค์ ๋ณ๋ ฌ๋ก ๋์์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ๋์ด์๋ค. ์ค๋ ๋ ๋ฐ์ฐ์ด ๋ฐ์ํ๋ฉด ์ด ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ํจ์จ์ฑ์ด ํฌ๊ฒ ๋จ์ด์ง๊ฒ ๋๋๋ฐ.... (;๏ผพโ๏ผพ;)ใ ์ค๋ ๋ ๋ฐ์ฐ(thread divergence) ์ด๋? ์ค๋ ๋ ๋ฐ์ฐ์ GPU๋ด์์ ์คํ๋๋ ์ฌ๋ฌ ์์ด๋ ์ฝ์ด(์ค๋ ๋)๊ฐ ๋์ผํ ์์ ์ ์๋ก ๋ค๋ฅธ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ๊ฐ๊ฒ ๋ ๋ ๋ฐ์ํ๋ค. ์ด๋ ์ฃผ๋ก ์กฐ๊ฑด๋ฌธ('if', 'switch' ๋ฑ) ์ฌ์ฉ์ ์ํด ๋ฐ์ํ..
SIMD SIMD๋ Single Instruction, Multiple Data์ ์ฝ์๋ก, ํ๋์ ๋ช ๋ น์ด๋ก ์ฌ๋ฌ ๋ฐ์ดํฐ์ ๋ํ ์ฐ์ฐ์ ๋์์ ์ํํ ์ ์๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ธฐ์ ์ด๋ค. ์ด ๊ธฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํจ์ผ๋ก์จ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ฒกํฐ๋ ํ๋ ฌ ๊ฐ์ ๋๋์ ๋ฐ์ดํฐ์ ๊ฐ์ ์ฐ์ฐ(๋ํ๊ธฐ, ๊ณฑํ๊ธฐ ๋ฑ)์ ๋ฐ๋ณต์ ์ผ๋ก ์ ์ฉํด์ผํ ๋, SIMD๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์ฐ์ฐ์ ํ ๋ฒ์ ์ฌ๋ฌ ๋ฐ์ดํฐ ๋จ์๋ก ์ฒ๋ฆฌํ ์ ์์ด์ ์ฒ๋ฆฌ ์๋๊ฐ ๋งค์ฐ ๋นจ๋ผ์ง๋ค. ์ปดํจํฐ์ CPU๋ GPU์์ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๊ณ , ํนํ ๊ทธ๋ํฝ ์ฒ๋ฆฌ, ๊ณผํ ๊ธฐ์ ๊ณ์ฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฒ์, ๋๊ท๋ชจ ์ซ์ ์ฐ์ฐ ์ฒ๋ฆฌ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ํจ์จ์ฑ์ ๋ฐํํ๋ค. C๋ C++์์๋ SIMD๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ํน์ ํ ์ปดํ์ผ๋ฌ ํ์ฅ(ex. SS..
์ด์ฌํ ๋ค์ด๋ฐ๊ณ ์ฐ๊ฒฐํ๊ณ ํ๋๋ฐ ์๊พธ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ๋ค. ์๋ฌด๋๋ ์ด์ชฝ์ ์ ํ ๊ธฐํ๊ฐ ๋ณ๋ก ์์๋ค ๋ณด๋ ํ๋๋ฅผ ํ๋ฉด ์๋๋ ๊ฒ ๋ค์ฏ๊ฐ๊ฐ ์๊ธด๋ค ๋ํ๊ต 1ํ๋ ๋๋ก ๋ค์ ๋์๊ฐ ๊ธฐ๋ถ ๐คค dotnet --list-sdks ๋ค์ด๋ฐ๊ณ ๋ ์ค ์์๋๋ฐ ํฐ๋ฏธ๋ ์ฐฝ์์ dotnet ์ค์น๋ฅผ ํ์ธํ๋ ค๊ณ ํด๋ ์ค์น๊ฐ ์๋์๋ค. ์ฐพ์ ์ ์๋ค๋ ๋ก๊ทธ๋ง ๋์๋ค. ๊ทธ๋ฅ ๋ค์ ๊ป๋คํค๋ฉด ๋๋ค๋ ์ฌ๋๋ ์์๋๋ฐ ๊ป๋ค์ผ๊ณ ์ฌ์ค์นํด๋ด๋ ๊ทธ๋๋ก์๋ค. ์ด๊ฒ์ ๊ฒ ํด๋ณด๊ณ ๋นํฉํ๋ค๊ฐ ์ฌ๋ฌ ๊นจ๋ฌ์์ ์ป์๊ณ , ์คํ ์ค๋ฒํ๋ก์ฐ์ ํ ์ธ๊ตญ์ธ์ ๋์์ผ๋ก ์ฑ๊ณตํ๋ค. VSCode ๋ฅผ ์ข ๋ฃ ํ ํ ํฐ๋ฏธ๋ ์ฐฝ์ ์ฐ๋ค. vi ~/.zshrc ๋ฅผ ์ ๋ ฅํด i (์์ ๋ชจ๋)๋ฅผ ๋๋ฅด๊ณ ์๋์ ๊ฐ์ด path๋ฅผ ์ ์ด์ค๋ค. (๊ฒฝ๋ก๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ) shift..
๋งฅ๋ถ ๊ตฌ๋งค ๊ธฐ๋ ์ผ๋ก ์ปดํจํฐ๋ฅผ ์ธํ ํ๋ ์ค ide๋ฅผ ๋ญ ์ฌ์ฉํ ๊น ํ๋ค๊ฐ VSCode๋ฅผ ์ฐ๊ธฐ๋ก ํ๋ค. VS CODE ์ฐ๊ฒฐํ๊ธฐ 1. mono stable ๋ฒ์ ์ ๋ค์ด๋ก๋ ํด์ค๋ค. https://www.mono-project.com/download/stable/ 2. ๋ท๋ท ๋ค์ด๋ก๋ https://dotnet.microsoft.com/en-us/download 3. Visual Studio Code ์ค์น https://code.visualstudio.com/ 4. Unity / [Preference] > [External Tools] ์ ๋ํฐ์์ ํ๋ก์ ํธ ์๋ฌด๊ฑฐ๋ ์คํํด์ [Preference] > [External Tools] ์ ๋ค์ด๊ฐ๋ค . [External Script Editor] ์ ๋๋ฌ Visual St..
์ปดํจํฐ ๋ฉ์ธ๋ณด๋์ ๊ณ ํด์๋ ํ์ด๋จธ๋ฅผ ์ด์ฉํด ์๊ฐ ๊ฐ๊ฒฉ์ ์ธก์ ํ๋ค. ํ์ฌ ์คํ ์๋๋ฅผ ์ธก์ ํ๊ณ ์ถ์ผ๋ฉด QueryPerformanceCounter(=QPC)๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค. ํ์ง๋ง QPC๋ ์ธ๋ถ ์๊ฐ ์ฐธ์กฐ์ ๋ ๋ฆฝ์ ์ด๋ฉฐ ๋๊ธฐํ๋์ง ์์ผ๋ฏ๋ก ํ์ฌ ์๊ฐ๊ฐ์ ๊ตฌํ๊ณ ์ถ์ผ๋ฉด GetSystemTimePreciseAsFildTime์ ์ด์ฉํ๋ผ๊ณ MSDN์ ๋์์๋ค. QueryPerformanceFrequency์ QueryPerformanceCounter๋ฅผ ์ด์ฉํ๋ฉด ํ์ด๋จธ, FPS ์ธก์ ๋ฑ ์ฌ๋ฌ ๋ฐฉ๋ฉด์ผ๋ก ํ์ฉํ ์ ์๋ค. QueryPerformanceFrequency ์ฑ๋ฅ ์นด์ดํฐ์ ๋น๋๋ฅผ ๊ฒ์ํ๋ค. BOOL QueryPerformanceFrequency ( LARGE_INTEGER *lpFrequency ); lpFr..
์ฌ๋ผ์ด๋ฉ ๋ฒกํฐ๋ ์ถฉ๋ ์์ ์ ์ฌ๋ฒกํฐ๊ฐ ์ ์ฌ๋ฉด์ ๋ฐ๋ผ์ ๋ฏธ๋๋ฌ์ง๊ฒ ํ๊ธฐ ์ํด์ ์ํ ์ฑ๋ถ๋ง์ ๋จ๊ธด ๋ฒกํฐ์ด๋ค. ๊ตฌํ๋ ๋ฐฉ๋ฒ์๋ ๋ฐ์ฌ๋ฒกํฐ๋ฅผ ์ด์ฉํด ๊ตฌํ๋ ๋ฐฉ๋ฒ๊ณผ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐ์ฌ๋ฒกํฐ ์ด์ฉํด์ ๊ตฌํ๊ธฐ ๋ฐ์ฌ ๋ฒกํฐ์์ ์ ์ฌ๋ฒกํฐ P์ n(-P·n)์ ํ๋ฒ ๋ํด์ฃผ๋ฉด ์ ์ฌ๋ฉด์ ํฌ์๋ ์ ์ ๋ฒกํฐ๋ฅผ ๊ตฌํ ์ ์๋ค. ์ ์ฌ๋ฒกํฐ์ ์ญ๋ฒกํฐ -P๊ฐ n์ ํฌ์๋ n(-P·n)์ ์ด์ฉํด ์ฌ๋ผ์ด๋ฉ ๋ฒกํฐ๋ฅผ ๊ตฌํ๊ณ ์๋ ์ค์ด๋ค. ๋ฐ๋ผ์ ๋ฐ์ฌ ๋ฒกํฐ๋ฅผ ์ด์ฉํ ๋ ์ฌ๋ผ์ด๋ฉ ๋ฒกํฐ S๋ฅผ ๊ตฌํ๋ ๊ณต์์ ๋ค์๊ณผ ๊ฐ๋ค. S = P + n(-P·n) ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ ์ฌ๋ฒกํฐ P๋ฅผ n์ ๋ฐ๋ก ํฌ์์ํจ๋ค. ์ ์ฌ๋ฒกํฐ P์ ๋ฒ์ ๋ฒกํฐ n์ ๋ผ์ธ ๊ฐ์ด 0≤ θ ≤ π/2 ์ผ ๋, P·n์ ๊ฐ์ ์์๊ฐ ๋๋ฏ๋ก, n๋ฒกํฐ์ ์ญ๋ฒกํฐ ๋ฐฉํฅ์ผ๋ก ํฌ์ ..
๋ฐ์ฌ ๋ฒกํฐ๋ ์ ๋ฐ์ฌ์ด๋ค. ์ ๋ฐ์ฌ๋ ์ ์ฌ๊ฐ๊ณผ ๋ฐ์ฌ๊ฐ์ด ๋์ผํ ๋ฐ์ฌ๋ฅผ ์๋ฏธํ๋ค. ํฌ์ ๋ฒกํฐ ๋ฐ์ฌ ๋ฒกํฐ๋ฅผ ๊ตฌํ๋ ค๋ฉด ํฌ์ ๋ฒกํฐ๋ฅผ ๋จผ์ ๊ตฌํด์ผ ํ๋ค. ํฌ์์ด๋ ์ด๋ค ๋ฒกํฐ v๋ฅผ ๋จ์ ๋ฒกํฐ n์ ๋ด์ ํ์ฌ ๊ตฌํ ์ ์๋ v์ n๋ฐฉํฅ์ผ๋ก์ ๊ธธ์ด๋ฅผ ๋ปํ๋ค. ๋ด์ ๊ฐ์ด ์ค์นผ๋ผ์ด๋ฏ๋ก ํฌ์๋ ๋ฐฉํฅ์ผ๋ก์ ๋ฒกํฐ๋ฅผ ๊ตฌํ๋ ค๋ฉด ์ด ๋ด์ ๊ฐ์ ๋ฐฉํฅ๋ฒกํฐ n์ ๊ณฑํด์ฃผ๋ฉด ๋๋ค. (v·n)n์ ์ด์ฉํด ๋ฒกํฐ๋ฅผ ๊ตฌํ ์ ์๊ฒ ๋๋ค. * ์ ์ด๋ ๊ฒ ๋๋์ง ์ถ๊ฐ ์ค๋ช ! ๋๋ณด๊ธฐ v์ n์ ๋ด์ ํ๋ฉด cosθ๋ฅผ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์ป๊ฒ ๋๋ค. v·n = ||v||||n||cosθ ์ฌ๊ธฐ์ ์ด ์ผ๊ฐํ์ ์ง๊ฐ์ผ๊ฐํ์ด๋ฏ๋ก ์ฝ์ฌ์ธ๊ฐ์ ๋ฐ๋ณ/๋น๋ณ ์ฆ, ||n|| / ||v|| ์ด๋ค. ||n|| = ||v||cosθ ์ด๊ณ ํฌ์ํ ๊ธธ์ด๋ฅผ w๋ผ๊ณ ํ์ ๋ w = ||v||cosθ๊ฐ ๋..