[Ubuntu] CUDA, CUDNN์— ๋Œ€ํ•œ ์ดํ•ด์™€ ์„ค์น˜ ๋ฐฉ๋ฒ•

2022. 7. 20. 14:08ยท๐ŸŒŒ OS/Linux-๋ฆฌ๋ˆ…์Šค
728x90
728x90

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
728x90
320x100
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐ŸŒŒ 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
'๐ŸŒŒ OS/Linux-๋ฆฌ๋ˆ…์Šค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [E] vi: command not found
  • [E] lsb_release command not found.
  • [E] conda: command not found
  • [E] CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
mxnxeonx
mxnxeonx
"์•„, ์ด๊ฑฐ ๋ญ์˜€๋”๋ผ"๋ฅผ ํ•˜์ง€ ์•Š๊ธฐ์œ„ํ•œ ์ผ๊ธฐ์žฅ.
  • mxnxeonx
    MJ's Development Diary
    mxnxeonx
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (154)
      • ๐Ÿ’ป Language (43)
        • Java : ์ž๋ฐ” (18)
        • Python : ํŒŒ์ด์ฌ (9)
        • ROS : ๋กœ๋ด‡์‹œ์Šคํ…œ (9)
        • Android : ์•ˆ๋“œ๋กœ์ด๋“œ (4)
        • JavaScript : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ (2)
      • ๐ŸŒ Environment (19)
        • IDE : ํ†ตํ•ฉ๊ฐœ๋ฐœํ™˜๊ฒฝ (9)
        • Virtual : ๊ฐ€์ƒํ™˜๊ฒฝ (10)
      • โš™ Framework (12)
        • Vue-๋ทฐ (3)
        • Spring-์Šคํ”„๋ง (7)
      • ๐Ÿ’พ DataBase (18)
      • ๐ŸŒŒ OS (36)
        • Linux-๋ฆฌ๋ˆ…์Šค (36)
      • ๐Ÿ’ฌ CI · CD (7)
        • Git : ๊นƒ (7)
      • ๐Ÿ“ƒ ETC (3)
      • ๐Ÿค– AI (4)
  • ๋งํฌ

    • GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
mxnxeonx
[Ubuntu] CUDA, CUDNN์— ๋Œ€ํ•œ ์ดํ•ด์™€ ์„ค์น˜ ๋ฐฉ๋ฒ•
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”