๐ก ๊ณ์ธต ์ฉ์ด
- SM(Stream Processor): GPU์ ์ฝ์ด
- Single Precision: 4byte๋ก ํ์๋๋ ๋ฐ์ดํฐ
- Double Precision: 8byte๋ก ํ์๋๋ ๋ฐ์ดํฐ
- ์ปค๋: CPU์์ GPU๋ก ๋ณด๋ด๋ ๋ถ๋ถ์ ๋จ์, ์ปค๋ ์์ ๊ทธ๋ฆฌ๋๊ฐ ๋ค์ด์์
- ๊ทธ๋ฆฌ๋: ์ฌ๋ฌ ๊ฐ์ ๋ธ๋ก์ผ๋ก ์ด๋ฃจ์ด์ง
- ๋ธ๋ก: ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๋ก ์ด๋ฃจ์ด์ง
- ์ค๋ ๋: ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํตํด ๋ฐ์ดํฐ ๊ณต์ , ๋ธ๋ก ๋ด์์ ์คํ ๋๊ธฐํ
- ์ปค๋์ด ์คํ๋๋ฉด SM์ ์ค๋ ๋ ๋ธ๋ก์ด ๋ถ๋ฐฐ๋์ด ์คํ๋จ
- ํ๋์ SM์ ์ฌ๋ฌ ๋ธ๋ก์ด ๋์๋จ
- ๋ธ๋ก ์๋ ์ฝ์ด์ ๊ฐ์๋ณด๋ค ๋ง์์ผ ํจ(๋ธ๋ก ์ > ์ฝ์ด ๊ฐ์)
- ์ค๋ ๋๋ฅผ ์ฝ์ด์ ํ ๋นํ ๋ ์ํ ๋จ์๋ผ๋ ๊ฒ์ ํตํด ์ค์ผ์ค๋ง์ ํด์ ๋ชจ๋ ์ค๋ ๋๊ฐ ์ํ๋๋๋ก ํจ
- 1 Warp = 32 Threads
๐ก nvcc
CUDA Compiler, ํ์ฅ์ cu๋ฅผ ๊ฐ์ง CUDA ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ธฐ ์ํด ์ฌ์ฉ
nvidia-smi: ๋ด๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์ฅ์น์ ๋ํ ์ ๋ณด
- -x{c | c++ | cu}: ์์ค ํ์ผ์ language๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์
- -G: device code์ ๋ํ debug ์ ๋ณด๋ฅผ ์์ฑ
- -arch: NVIDIA GPU architecture๋ฅผ ์ง์ (-arch=sm_70), ์ฑ๋ฅ์ ์ํ๋ ์ํคํ ์ฒ์ ๋ง๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด์ ์ต์ ์ ๋ถ์ด๋๊ฒ ์ข์
- -maxrregcount: ์ปค๋์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ ์ง์คํฐ์ ๊ฐ์๋ฅผ ์ง์
- -fmad: multiply-add์ ๊ธฐ๋ฅ์ ํ์ฑ/๋นํ์ฑํ ํจ, default๋ true
- -dlcm: L1 cache ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ง์ , default๋ ca(L1+L2 cache), cg(L2 cache)
- --ptxas-options=-v or -Xptxas=-v: ์ปดํ์ผ ์ ๊ฐ๋ตํ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค
- -Xcompiler: ์ปดํ์ผ๋ฌ/preprocessor์ ์ง์ ์ต์ ์ ์ง์
- -Xlinker: ํธ์คํธ ๋ง์ปค์ ์ง์ ์ต์ ์ ์ง์
๐ก Handling
CPU๋ CUDA๋ ํ๋์จ์ด์ ์ผ๋ก ๋ถ๋ฆฌ๋์ด ์๊ธฐ ๋๋ฌธ์ CPU๊ฐ GPU ์ชฝ์ ์ปค๋์ ํตํด์ ์์ ์ ๋๊ฒจ์ฃผ๋ฉด CPU์์๋ GPU๋ฅผ ์ปจํธ๋กคํ ์ ์๋ค. ๊ทธ๋์ GPU ์์์ ์์ ๋ฌผ์ ๋ํ ๊ฒฐ๊ณผ์ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ํ๋ณํ๊ธฐ ์ํด ํธ๋ค๋ฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ฌ ์ฌ๋ถ๋ฅผ ํ๋ณํ๋ค.
- __host____device__const char*cudaGetErrorName(cudaError_terror): ์๋ฌ ์ฝ๋์ ์ด๋ฆ์ ๋ฐํ
- __host____device__const char*cudaGetErrorString(cudaError_terror): ์๋ฌ ์ฝ๋์ ๋ด์ฉ์ ๋ฐํ
- cudaSuccess: ์ฐ์ฐ์ ์ฑ๊ณต์ ๋ํ๋
๊ฐ์
'CUDA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Thread Hierarchy, CUDA Kernel (4) | 2024.02.14 |
---|---|
CUDA, ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ (0) | 2024.02.13 |