[Linux] ๋”ฅ๋Ÿฌ๋‹ ํ™˜๊ฒฝ ๊ตฌ์ถ• : CUDA, CuDNN

Posted by Euisuk's Dev Log on April 24, 2024

[Linux] ๋”ฅ๋Ÿฌ๋‹ ํ™˜๊ฒฝ ๊ตฌ์ถ• : CUDA, CuDNN

์›๋ณธ ๊ฒŒ์‹œ๊ธ€: https://velog.io/@euisuk-chung/ํ™˜๊ฒฝ๊ตฌ์ถ•-CUDA-CuDNN์•„-๋‚˜-์ข€-๊ทธ๋งŒ-๊ดด๋กญํ˜€๋ผ-ใ… 

์˜ค๋Š˜ ํšŒ์‚ฌ ๋กœ์ปฌ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋ฉด์„œ ๊ธฐ์กด์— ์˜ค๋ž˜๋œ ํŒŒ์ผ๋“ค์„ ๋ฐ€๊ณ  ์ƒˆ๋กญ๊ฒŒ ๋‹ค์‹œ ์„ค์น˜ํ•  ๊ธฐํšŒ๊ฐ€ ์™”๋‹ค!!! ํŒŒ์ผ์€ ๋‹คํ–‰ํžˆ ๋ณต์›์„ ์™„๋ฃŒํ•ด์„œ ์ง€๊ธˆ์—์„œ์•ผ ์›ƒ์œผ๋ฉด์„œ ์“ฐ์ง€๋งŒโ€ฆ ์ •๋ง์ด์ง€ ๋”์ฐํ•œ 8์‹œ๊ฐ„์ด์—ˆ๋‹คโ€ฆใ…Žใ…Ž

์ถœ๊ทผํ•ด์„œ ์—…๋ฌด๋ฅผ ์ข€ ํ•˜๋‹ค๋ณด๋‹ˆ ์„œ๋ฒ„๊ฐ€ ๋ฌดํ•œ ๋ณต๊ตฌ ๋ชจ๋“œ๋กœ ๋น ์ ธ์„œ ๋ณต์›๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ์— ๋น ์กŒ๋‹คโ€ฆ ํŠน์ • ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์‹œ๋ฉด์„œ ์‹œ์Šคํ…œ ํŒŒ์ผ์„ ๊ฑด๋“œ๋ฆฐ ๊ฒƒ ๊ฐ™์•˜๊ณ .. ๋„์ €ํžˆ ๋ณต๊ตฌ ๋ชจ๋“œ์—์„œ๋„ ์‚ด๋ฆด ๋ฐฉ๋ฒ•์ด ๋ณด์ด์ง€ ์•Š์•˜๋‹ค๐Ÿ”ฅ ๊ทธ๋ž˜๋„ ์ฃผ์š” ์ฝ”๋“œ ๋ฐ ๋ฐ์ดํ„ฐ๋Š” ํ•˜๋“œ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์š” ์ •๋ณด๋Š” ์‚ด๋ฆด ์ˆ˜ ์žˆ์—ˆ๋‹คโ€ฆ

(ํ•‘๊ณ„ ์ฃผ์˜) ๊ฐœ์ธ์ ์œผ๋กœ ๋„์ปค๋ฅผ ๋„์ž…ํ•ด์„œ ์ ์šฉํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์—ฌ๋Ÿฌ๋ช…์ด์„œ ํ•˜๋‚˜์˜ ์›๊ฒฉ ๋ฐ์Šคํฌํƒ‘์„ PoC ์‹คํ—˜์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์•˜๊ณ , ๊ธฐ์กด์— ์‚ฌ์šฉํ•ด์˜ค๋˜ ํˆด ๋ฐ ๋ฐฉ์‹๋“ค์ด ์žˆ๋˜ํ„ฐ๋ผ ๋‚ด ๋งˆ์Œ๋Œ€๋กœ ๋„์ž…ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์› ๋‹คโ€ฆ๐Ÿ˜ฅ

ํ•˜..๋ถˆ

์„œ๋‘๊ฐ€ ๊ธธ๊ธด ํ–ˆ์ง€๋งŒ ์ด ์ฐธ์— UBUNTU๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ๊ธฐ์กด์— ์˜ค๋ž˜๋œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋“ค์€ ์ •๋ฆฌํ•ด์ฃผ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์•„์ง๊นŒ์ง€ ํ•œ๊ฐ€์ง€ ๋‚œ๊ด€์ด ๋‚จ์•„์žˆ์—ˆ๋‹ค! ๋ฐ”๋กœ๋ฐ”๋กœ ๋”ฅ๋Ÿฌ๋‹ ํ™˜๊ฒฝ ์„ค์ •!! ํ•ญ์ƒ ๋”ฅ๋Ÿฌ๋‹ ํ™˜๊ฒฝ ์„ค์ •์„ ํ•˜๋‹ค๋ณด๋ฉด ๊ฐ€์ฐจ(๋ฝ‘๊ธฐ)์ฒ˜๋Ÿผ ์–ด๋–ค ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์ฝ๋Š” ๊ฐ€์— ๋”ฐ๋ผ์„œ ํ•œ๋ฒˆ์— ์„ค์น˜๊ฐ€ ์ž˜ ๋  ๋•Œ๋„ ์•ˆ ๋  ๋•Œ๋„ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด์ฐธ์— ์ƒˆ๋กญ๊ฒŒ ์„ค์น˜๋ฅผ ํ•˜๋ฉด์„œ ๋ณธ์งˆ์„ ํŒŒ์•…ํ•˜๊ณ  ์ œ๋Œ€๋กœ ๋œ ์„ค์น˜๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

์šฉ์–ด์ •๋ฆฌ

Nvidia Driver๋Š” ๋ฌด์—‡์ธ๊ฐ€?

Nvidia Driver

์ •์˜

Nvidia Driver๋Š” Nvidia ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ์™€ ์ปดํ“จํ„ฐ ์šด์˜ ์ฒด์ œ(OS) ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค. ์ด ๋“œ๋ผ์ด๋ฒ„๋Š” ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•˜๋ฉฐ, GPU๋ฅผ ์ตœ์ ์˜ ์กฐ๊ฑด์—์„œ ์ž‘๋™ํ•˜๊ฒŒ ํ•œ๋‹ค.

์—ญํ• 

  1. ๊ทธ๋ž˜ํ”ฝ ์„ฑ๋Šฅ ์ตœ์ ํ™”: ์ตœ์‹  ๊ฒŒ์ž„ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋งž์ถฐ ๊ทธ๋ž˜ํ”ฝ ์„ฑ๋Šฅ์„ ์กฐ์ •ํ•˜๊ณ  ์ตœ์ ํ™”ํ•œ๋‹ค.
  2. ํ˜ธํ™˜์„ฑ ์œ ์ง€: ์šด์˜ ์ฒด์ œ ์—…๋ฐ์ดํŠธ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•œ๋‹ค.
  3. ์˜ค๋ฅ˜ ์ˆ˜์ •: ๋ฐœ๊ฒฌ๋˜๋Š” ๋ฒ„๊ทธ๋‚˜ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

CUDA๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์ •์˜

CUDA(Compute Unified Device Architecture)๋Š” Nvidia๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋ณ‘๋ ฌ ์ปดํ“จํŒ… ํ”Œ๋žซํผ ๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์ด๋‹ค. CUDA๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ Nvidia GPU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ฐ˜ ์ฒ˜๋ฆฌ ์ž‘์—…์˜ ๊ณ„์‚ฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ€์†ํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•œ๋‹ค.

์—ญํ• 

  1. ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ฐ€์†ํ™”: ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ์™€ ๋ณต์žกํ•œ ๊ณ„์‚ฐ์„ GPU์—์„œ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ CPU๋งŒ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ž‘์—…์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ง€์›: ๊ณผํ•™ ์—ฐ์‚ฐ, ์—”์ง€๋‹ˆ์–ด๋ง, ๋”ฅ๋Ÿฌ๋‹ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋œ๋‹ค.

CUDA Toolkit์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์ •์˜

CUDA Toolkit์€ CUDA ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€๋กœ, GPU ๊ฐ€์† ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋„๊ตฌ, ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.

์—ญํ• 

  • ๊ฐœ๋ฐœ ๋„๊ตฌ ์ œ๊ณต: CUDA ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ๋„๊ตฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • ์„ฑ๋Šฅ ๋ถ„์„: ๊ฐœ๋ฐœ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๊ณ  ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ํฌํ•จํ•œ๋‹ค.

cuDNN(cuda Deep Neural network Library)

์ •์˜

cuDNN์€ ๋”ฅ๋Ÿฌ๋‹ ์—ฐ์‚ฐ์„ ์œ„ํ•ด ์ตœ์ ํ™”๋œ GPU ๊ฐ€์† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. NVIDIA์—์„œ ์ œ๊ณตํ•˜๋ฉฐ, ํŠนํžˆ ์‹ฌ์ธต ์‹ ๊ฒฝ๋ง(deep neural networks)์˜ ํ•™์Šต ๋ฐ ์ถ”๋ก ์„ ๊ฐ€์†ํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

์—ญํ• 

  1. ๋”ฅ๋Ÿฌ๋‹ ์„ฑ๋Šฅ ์ตœ์ ํ™”: ๋‹ค์–‘ํ•œ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์—ฐ๋™ํ•˜์—ฌ ๋†’์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค.
  2. ํ•™์Šต ์‹œ๊ฐ„ ๋‹จ์ถ•: ๊ณ ์„ฑ๋Šฅ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์„ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋ธ ํ•™์Šต ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ์ค„์ธ๋‹ค.

์„ค์น˜ ๋ฐฉ๋ฒ• (UBUNTU 18.04LTS)

UBUNTU 18.04 LTS์— cuda12.1๋ฒ„์ „๊ณผ cudnn8.7.0๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์„ค์น˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด๊ฒ ๋‹ค.

  1. NVIDIA ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜

1
2
3
4
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
ubuntu-drivers devices
sudo apt install nvidia-driver-550
  • sudo add-apt-repository ppa:graphics-drivers/ppa: Ubuntu์— ์ถ”๊ฐ€์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ์™ธ๋ถ€ ์ €์žฅ์†Œ(PPA)๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด ์ €์žฅ์†Œ๋Š” NVIDIA์—์„œ ์ œ๊ณตํ•˜๋Š” ์ตœ์‹  ๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.
  • sudo apt update: ์‹œ์Šคํ…œ์˜ ํŒจํ‚ค์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์„œ ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ํฌํ•จ์‹œํ‚จ๋‹ค. ์ด ๊ณผ์ •์„ ํ†ตํ•ด ์ตœ์‹  ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ค€๋น„ํ•˜๋Š” ๋‹จ๊ณ„๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
  • ubuntu-drivers devices: ์„ค์น˜๊ฐ€๋Šฅํ•œ NVIDIA ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ ๋“œ๋ผ์ด๋ฒ„ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค€๋‹ค. ํ•„์ž์˜ ๊ฒฝ์šฐ ํŒ€ ๊ณต์šฉ ์„œ๋ฒ„๋กœ 1080 GPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ํ•ด๋‹น GPU์˜ ๊ฐ€์šฉ ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ ๋“œ๋ผ์ด๋ฒ„ ๋ชฉ๋ก์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋ญ๋“  ์„ค์น˜๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ recommendํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์„ค์น˜ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

ubuntu-drivers

  • sudo apt install nvidia-driver-550: ์ง€์ •๋œ ๋ฒ„์ „์˜ NVIDIA ๊ทธ๋ž˜ํ”ฝ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•œ๋‹ค. ์ด ๋“œ๋ผ์ด๋ฒ„๋Š” GPU์™€ ์šด์˜ ์ฒด์ œ ๊ฐ„์˜ ํšจ์œจ์ ์ธ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ , ์ตœ์ ํ™”๋œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ด์ค€๋‹ค.

๐Ÿ’ก ๋ฌด์Šจ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•ด์•ผํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค๊ณ ?

์œ„์— ์˜ˆ์‹œ์—๋Š” ์ง์ ‘ ์›ํ•˜๋Š” ์ˆ˜๋™ ๋ฒ„์ „์˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์น˜ํ•˜๋Š” ์˜ˆ์‹œ๋ฅผ ์ œ์‹œํ•˜๊ณ  ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ, ๊ถŒ์žฅ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ๋˜ํ•œ ์กด์žฌํ•œ๋‹ค.

โœ๏ธ sudo ubuntu-drivers autoinstall

  1. CUDA ๋ฐ CUDA Toolkit ์„ค์น˜

ํ•„์ž๋Š” ํŒŒ์ดํ† ์น˜๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฏ€๋กœ ํ† ์น˜์—์„œ ์š”๊ตฌํ•˜๊ณ  ์žˆ๋Š” cuda11.8์„ ์„ค์น˜ํ•ด๋ณผ ์˜ˆ์ •์ด๋‹ค.

(์ฐธ๊ณ : ์ด์ „ ๋ฒ„์ „์˜ ํŒŒ์ดํ† ์น˜๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด? => https://pytorch.org/get-started/previous-versions/)

torch

CUDA Toolkit๋“ค์˜ ๋‹ค์šด๋กœ๋“œ ์†Œ์Šค๋“ค์„ ๋‹ค์Œ ๋งํฌ์—์„œ ์ œ๊ณต๋˜๊ณ  ์žˆ๋‹ค.

CUDA Toolkit

์ด ์ค‘์— ํ•˜์ด๋ผ์ดํŠธ๋ฅผ ์ณ์ค€ 11.8.0์„ ๋‹ค์šด๋ฐ›์•„์ค„ ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณธ์ธ์˜ ์„œ๋ฒ„(๋ฐ์Šคํฌํƒ‘) ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์„ค์ •์„ ํ•ด์ค€๋‹ค.

11.8.0

1
2
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
  • wget: ์ง€์ •๋œ URL์—์„œ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.
  • sudo sh cuda_11.8.0_520.61.05_linux.run: ๋‹ค์šด ๋ฐ›์€ ์‹คํ–‰ ํŒŒ์ผ์„ ์‰˜์—์„œ ์‹คํ–‰ํ•˜์—ฌ ๋‹ค์šด ๋ฐ›๋Š”๋‹ค.
  1. ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋‹ค์šด๋กœ๋“œ ์ฐฝ์ด ๋‚˜์˜จ๋‹ค. (ACCEPT)

    ACCEPT

  2. ์ด๋ฏธ ์•ž์—์„œ Driver ์„ค์น˜๋ฅผ ์™„๋ฃŒํ–ˆ์œผ๋ฏ€๋กœ, Driver์ฒดํฌ๋Š” ํ•ด์ œํ•˜๊ณ , CUDA์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

    CUDA์„ค์น˜

์–ด? CUDA๋ฅผ ์„ค์น˜ํ–ˆ์Œ์—๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ์š”?

error

1
2
# ์ ‘์† ํ›„ ์•„๋ž˜ ์ฝ”๋“œ ์ถ”๊ฐ€ (๋ณธ์ธ CUDA๋ฒ„์ „์— ๋งž๊ฒŒ ์„ค์ •ํ•  ๊ฒƒ)
vim ~/.bashrc 
1
2
3
4
# https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions%5B/url%5D
export export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  1. cuDNN ์„ค์น˜

์œ„์—์„œ CUDA๋ฅผ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ–ˆ๊ณ , ์ด์ œ CuDNN์„ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. Tensorflow์˜ ๊ฒฝ์šฐ, ํŠนํžˆ๋‚˜ CUDA ๋ฐ CuDNN์˜ ๋ฒ„์ „์— ๋ฏผ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ค์น˜ ์‹œ ๋ฒ„์ „์— ์œ ์˜ํ•ด์„œ ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

Tensorflow

์œ„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ํ…์„œํ”Œ๋กœ์šฐ์˜ ๊ฒฝ์šฐ, CUDA 11.8์ด๋ž‘ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” cudnn์€ 8.6๊ณผ 8.7์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ ์•„๋ž˜ ๋งํฌ๋กœ ๋“ค์–ด๊ฐ€์„œ cudnn 8.7์„ ๋‹ค์šด๋ฐ›๊ณ  ์„ค์น˜ํ•ด๋ณด๊ฒ ๋‹ค.

CuDNN

1
2
3
4
tar -xvf cudnn-linux-x86_64-8.7.0.84_cuda11-archive.tar.xz
sudo cp cudnn-linux-x86_64-8.7.0.84_cuda11-archive/include/cudnn*.h /usr/local/cuda-11.8/include
sudo cp -P cudnn-linux-x86_64-8.7.0.84_cuda11-archive/lib/libcudnn* /usr/local/cuda-11.8/lib64
sudo chmod a+r /usr/local/cuda-11.8/lib64/libcudnn*
  • tar -xvf: ๋‹ค์šด๋กœ๋“œํ•œ cuDNN์˜ ์••์ถ•์„ ํ’€์–ด์ค€๋‹ค.
  • sudo cp: cuDNN ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๊ณผ ํ—ค๋” ํŒŒ์ผ์„ ์ ์ ˆํ•œ CUDA ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋ณต์‚ฌํ•œ๋‹ค. ์ด๋Š” CUDA์™€ ํ•จ๊ป˜ cuDNN์ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•œ๋‹ค.
  • sudo chmod a+r: ๋ณต์‚ฌ๋œ ํŒŒ์ผ๋“ค์— ๋Œ€ํ•ด ์ฝ๊ธฐ ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋„ ์ด ํŒŒ์ผ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

์ด๋ฏธ ํŠน์ • ๋ฒ„์ „์˜ CUDA ๋ฐ cuDNN๊ฐ€ ๊น”๋ ค์žˆ์„ ๋•Œ

1
2
sudo apt-get --purge remove "cuda*"
sudo apt-get --purge remove "cudnn*"
  • sudo apt-get --purge remove: ์‹œ์Šคํ…œ์— ์„ค์น˜๋œ CUDA ๋˜๋Š” cuDNN์˜ ๊ธฐ์กด ๋ฒ„์ „์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•œ๋‹ค. ์ด ๋ช…๋ น์€ ์„ค์ • ํŒŒ์ผ์„ ํฌํ•จํ•˜์—ฌ ๊ด€๋ จ๋œ ๋ชจ๋“  ํŒŒ์ผ์„ ์‚ญ์ œํ•œ๋‹ค.

์„ค์น˜ ์™„๋ฃŒ ํ›„ ๋ฒ„์ „ ํ™•์ธ ์ฝ”๋“œ

์•„๋ž˜ ๋‘ ์ฝ”๋“œ ๋ผ์ธ์œผ๋กœ ๊ฐ๊ฐ ์„ค์น˜๋˜์–ด ์žˆ๋Š” CUDA ๋ฐ CUDNN ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • CUDA ๋ฒ„์ „ ํ™•์ธ
    1
    
    nvcc --version
    
    1
    2
    3
    4
    5
    6
    
    # ๊ฒฐ๊ณผ
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2022 NVIDIA Corporation
    Built on Wed_Sep_21_10:33:58_PDT_2022
    Cuda compilation tools, release 11.8, V11.8.89
    Build cuda_11.8.r11.8/compiler.31833905_0
    
  • CUDNN ๋ฒ„์ „ ํ™•์ธ
    1
    
    cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
    
    1
    2
    3
    4
    5
    6
    
    # ๊ฒฐ๊ณผ
    #define CUDNN_MAJOR 8
    #define CUDNN_MINOR 7
    #define CUDNN_PATCHLEVEL 0
    --
    #define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
    


-->