CUDA๋?
CUDA(Computed Unified Device Architecture)๋ NVIDIA์์ ๊ฐ๋ฐํ GPU ๊ฐ๋ฐ ํด๋ก, ๋ฅ๋ฌ๋์ ๋ง์ด ์ด์ฉ๋๋ค. C/C++ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ์ด์ HW ์ ๊ทผ์ ์ง์ํ๋ ์ค์น๊ฐ ๊ฐํธํ๊ณ ๋ง์ ์์ ์ฐ์ฐ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๊ฒ ํ๋ค. (nvidia-driver, CUDA, CUDNN๋ง ์ค์นํ๋ฉด ๋จ)
GPU๋ CPU์ ๋นํด ์ฝ์ด ๊ฐ์๊ฐ ์๋นํ ๋ง์ ํธ์ด๋ค. (CPU๋ 8-16๊ฐ, CPU๋ n์ฒ ๊ฐ) ๋๋ฌธ์ ์ฑ๊ธ์ฝ์ด, ๋ฉํฐํ๋ก์ธ์ค, ๋ฉํฐ์ค๋ ๋ ๋ฑ์ ์ฌ์ฉํ์ง ์๊ณ , Many-Core Dependent ์ฐ์ฐ์ ์ด์ฉํด์ผ ํ๋ค.
CUDA๋ CPU๊ฐ ์ฒ๋ฆฌํ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ณ์ฐ(์ฐ์ฐ ์์ )์ GPU์์ ๋ณ๋ ฌ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๊ธฐ์ ์ด๋ค. ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ GPU ๋ฉ๋ชจ๋ฆฌ์ ๋ณต์ฌํ๊ณ , CPU๊ฐ GPU์ ํ๋ก์ธ์ค๋ฅผ ์ง์, GPU๊ฐ ๊ฐ ์ฝ์ด์ ๋ณ๋ ฌ ์์ ์ ์ํํ๊ณ ์ด ๊ฒฐ๊ณผ๋ฌผ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ณต์ฌํ๋ ๋ฐฉ์์ผ๋ก ์์ ์ด ์ํ๋๋ค.
CUDA ํดํท, ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ๊ธฐ ์ ์๋ ์๋ ์ฌํญ๋ค์ ํ์ธํด์ผ ํ๋ค.
- GPU๊ฐ CUDA๋ฅผ ์ง์ํ๋์ง
- ์์คํ ์ด ์ง์๋๋ ๋ฒ์ ์ Linux์ธ์ง
- GCC๊ฐ ์ค์น๋์ด ์๋์ง
- ์ฌ๋ฐ๋ฅธ ์ปค๋ ํค๋์ ๊ฐ๋ฐ ํจํค์ง๊ฐ ์ค์น๋์ด ์๋์ง
- NVIDIA CUDA ํดํท์ ๋ค์ด๋ก๋ํ๊ณ ์ถฉ๋์ด ๋ฐ์ํ์ง ์๋์ง
๋์ ๊ฒฝ์ฐ์๋ ์ฐ๊ตฌ์ค ์๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ถ๋ถ์ ๋๋ผ์ด๋ฒ๊ฐ ์ค์น๋์ด ์์๊ธฐ ๋๋ฌธ์, ๋ณ ๋ฌธ์ ์์ด ๋์ด๊ฐ๋ ๊ฒ ๊ฐ๋ค.
๋ค๋ง, CUDA์ ๊ฒฝ์ฐ ๋ฒ์ ์ ๋ฏผ๊ฐํ์ฌ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ฐ๊ตฌ ํ๋ซํผ์ ๋ํด ๋ง๋ ๋ฒ์ ์ ์ฌ์ฉํด์ผ ์ค๋ฅ๊ฐ ์์ ๊ฒ์ด๋ค. (tensorflow, pytorch ๋ฑ์ ์ด์ฉํ ๋์ ๋ฒ์ ๋๋ nvidia-driver์ ๋ฒ์ ๋ชจ๋ ํฌํจ)
CUDNN์ด๋?
CUDA ๋ฅ๋ฌ๋ ๊ธฐ์ ์ ํ์ํ๋ค๊ณ ์์์ ๊ธฐ์ ํ์๋๋ฐ, ๋ฅ๋ฌ๋ ๊ธฐ์ ์ด ๋ฐ์ ๋ ๋ ๋ค์ํ ๋ฅ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด์ง ์คํ์์ค๋ค์ด ๋๋ถ๋ถ NVIDIA์ CUDA ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ค. ์ด๋ ์ฌ์ฉ๋๋ ์์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ CUDNN(CUDA Deep Nural Network Library)์ด๋ค.
- GPU ๊ฐ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ์ด ์์๋ก ์ปจ๋ณผ๋ฃจ์ , ํ๋ง, ํ์คํ, ํ์ฑํ ๋ฑ์ ์ผ๋ฐ์ ๋ฃจํด์ ๋น ๋ฅด๊ฒ ์ดํํ ์ ์๋๋ก ํ๋ค.
- Nural Network๋ฅผ ๋น ๋ฅด๊ฒ ์ต์ ํ, ๊ฒ์ฆ, ๋ฐฐํฌ์ํจ๋ค.
- tensorflow, pytorch์ ๊ฐ์ ๋ฅ๋ฌ๋ Framework๋ฅผ ๊ฐ์ํํ๋ค.
Installation
์ค๋ช ์ ๋นํด ์ค์น๋ ์์ฃผ ๊ฐ๋จํ๋ค. ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด CUDA์ CUDNN์ด ์๋์ผ๋ก ์ค์น๋๋ค.
$ apt install nvidia-cuda-toolkit
์ค์น ํ์ธ ๋ฐฉ๋ฒ
CUDA ๊ด๋ จ ์์คํ ์ด ์ค์น๋์๋์ง ํ์ธํ๋ ๋ช ๋ น์ด์ด๋ค. ์ด๋ ์ฃผ์ํ ์ ์, nvidia-smi๋ฅผ ์ ๋ ฅํ์์ ๋์ cuda ๋ฒ์ ์ ์ง์ ๊ฐ๋ฅํ(์์คํ ๊ถ์ฅ, ์ถ์ฒ) ๋ฒ์ ์ด ํ์๋๊ธฐ ๋๋ฌธ์ nvcc -V์ ๋ฒ์ ๊ณผ๋ ๋ฌด๊ดํ๋ค. ์ผ๋ฐ์ ์ผ๋ก nvidia-smi์ ๋ฒ์ ์ด nvcc -V์ ๋ฒ์ ๋ณด๋ค ๋๊ฑฐ๋ ๊ฐ๋ค๋ฉด ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋จํ๋ฉด ๋๋ค.
# 1) nvidia-driver ์ค์น ํ์ธ
$ nvidia-smi
# 2) cuda ์ค์น ํ์ธ
$ nvcc -V
# 3) cudnn ์ค์น ํ์ธ (๋ ์ค ํ๋)
$ ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
'๐ OS > Linux-๋ฆฌ๋ ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[E] vi: command not found (0) | 2022.07.20 |
---|---|
[E] lsb_release command not found. (0) | 2022.07.20 |
[E] conda: command not found (0) | 2022.07.20 |
[E] CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. (0) | 2022.07.20 |
[Ubuntu] Embodied AI Simulator ์ค์น - Habitat (0) | 2022.07.20 |