본문 바로가기
AI프로그래밍 리뷰/프로그래밍

리눅스 터미널에서 텐서플로가 GPU를 잡고 있는지 확인하는 방법

by 펄서까투리 2021. 8. 19.

# 세줄요약 #

  1. NVIDIA GPU driver와 CUDA가 설치되어있는지 확인 한다. [nvidia-smi, nvcc -V]
  2. 텐서플로 라이브러리에서 device_lib 모듈을 이용하는 방법: >>> [device_lib.list_local_devices()]
  3. 텐서플로 라이브러리에서 config 모듈을 이용하는 방법: [>>> tf.config.list_physical_devices()]

# 상세 리뷰 #

1. 먼저 리눅스에서 NVIDIA GPU driver와 CUDA가 설치되어있는지 확인해야 한다.

nvidia-smi

  • [>>> nivida-smi] 명령어를 사용하면 위 그림과 같이 Driver Version과 CUDA Version을 확인하고 아래에서 해당 리눅스 서버에 설치된 GPU들을 목록으로 확인할 수 있다.
  • 각 GPU별로 제품명, GPU 사용량, GPU 메모리 등을 확인할 수 있다. 

  • GPU 목록들 아래에는 현재 사용중인 GPU를 사용하는 Process들을 확인할 수 있다(예제로 보여준 그림에서는 현재 사용중인 Process가 없으므로 'No running processess found'라는 메시지가 보인다).

 

nvcc -V

  • [>>> nvcc -V] 명령어를 사용하면 해당 리눅스 서버에 설치된 CUDA만 따로 확인가능하다.

 

2. NVIDIA GPU driver와 CUDA가 설치되어 있으므로 이제 텐서플로가 정상적으로 GPU를 잡고 있는지 확인하면 된다.

  • 아래의 두 방법 모두 텐서플로를 사용하기에 파이썬 콘솔에서 명령을 해야한다.
  • 따라서 터미널 상에서 [>>> python] 명령어를 사용하여 파이썬 터미널로 들어가거나, IDE 툴 등을 사용하여 파이썬 콘솔을 켜준다.
python

  • 당연한 이야기지만 Tensorflow는 설치되어 있어야 한다.

 

  • [방법 1] 텐서플로 라이브러리에서 device_lib 모듈을 이용하는 방법
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

  • 위 그림과 같이 'Successfully opened dynamic library lidcudart.so.10.1'과 'Successfully opened dynamic library lidcuda.so.1' 등의 메시지가 나타나면 성공적으로 CUDA를 불러오고 있는 것이다.

  • 메시지를 내리다 보면 위 그림과 같이 설치된 GPU에 자동으로 번호를 매겨(0번부터 시작) "device:GPU:0~" 형태로 보여준다면 텐서플로가 문제없이 GPU를 잡고 있는 것이다.
    • 예제로 보여준 서버는 RTX 5000 GPU가 총 10개 설치된 서버이다.

 

  • [방법 2] 텐서플로 라이브러리에서 config 모듈을 이용하는 방법
import tensorflow as tf
tf.config.list_physical_devices()

  • 방법 1과 마찬가지로 'Successfully opened dynamic library lidcudart.so.10.1'과 'Successfully opened dynamic library lidcuda.so.1' 등의 메시지가 나타나면 성공적으로 CUDA를 불러오고 있는 것이다.
  • 방법 1의 결과와 유사하게 위 그림의 가장 아래를 보면 설치된 GPU에 자동으로 번호를 매겨(0번부터 시작) "PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')" 형태의 메시지가 보인다면 문제없이 GPU를 잡고 있는 것이다.
728x90
728x90

댓글