본문 바로가기
기술

CUDA 기본

by 이름 있음1 2024. 11. 12.

안녕하세요, 이번 포스트는 흥미로운 주제인 CUDA에 대해 알아보려고 합니다.
CUDA는 컴퓨터 프로그램을 더 빠르게 실행할 수 있도록 도와주는 강력한 소프트웨어 플랫폼으로,
암호화폐 채굴, 비디오 렌더링, 머신 러닝과 같은 다양한 고성능 작업에 사용됩니다.
하지만 CUDA는 단순한 소프트웨어가 아닙니다—특정 하드웨어에도 통합되어 있습니다.
특히 NVIDIA 그래픽 카드를 가지고 있다면, 그 성능을 활용할 준비가 된 것입니다.
그런데 프로그램 실행은 CPU가 담당하는 거 아닌가요? 그래픽 카드가 그것을 어떻게 더 잘 할 수 있을까요?

CPU와 GPU의 역할

CUDA에 대해 더 깊이 들어가기 전에, CPU와 GPU가 어떻게 작동하는지 빠르게 살펴봅시다. CPU, 즉 중앙처리장치(Central Processing Unit)는 컴퓨터의 두뇌입니다. 파일을 열고 프로그램과 상호작용하는 등 모든 수학적, 논리적 계산을 담당하며, 컴퓨터의 모든 구성 요소 간의 통신을 조정하는 역할도 합니다. 예를 들어, 키보드가 하드 드라이브의 파일 이름을 변경하도록 도울 수 있는 것도 CPU 덕분입니다. CPU는 멀티태스킹에 뛰어나서 웹을 탐색하면서 음악을 스트리밍하고, 동시에 악성 코드를 검사할 수 있도록 해줍니다.

CPU와 멀티태스킹의 한계

하지만 여기에는 함정이 있습니다: CPU는 우리가 생각하는 만큼 멀티태스킹을 잘하지 않습니다. CPU의 각 코어는 한 번에 하나의 작업만 처리할 수 있습니다. 대부분의 최신 CPU는 모델에 따라 2개에서 16개 사이의 코어를 가지고 있습니다. 이는 다소 제한적으로 들릴 수 있지만, CPU는 엄청난 속도로 작업을 전환하여 모든 것이 동시에 실행되는 것처럼 보이게 만듭니다.

GPU의 병렬 처리 능력

반면에 GPU는 병렬 처리에 특화된 다른 종류의 성능을 위해 설계되었습니다. GPU, 즉 그래픽 처리 장치(Graphics Processing Unit)는 주로 화면에 이미지를 표시하는 역할을 하지만, 현대의 GPU는 자체 메모리와 강력한 프로세서를 갖춘 강력한 장치로 발전했습니다. 게임을 할 때 매 프레임을 CPU에 보내서 계산을 한 다음 GPU로 다시 보내는 대신, GPU가 직접 처리하여 더 부드러운 게임 경험을 제공합니다.

CPU와 GPU의 차이점

CPU와 GPU의 주요 차이점은 코어의 수에 있습니다. 최상위 CPU가 최대 16개의 코어를 가지고 있을 때, NVIDIA의 RTX 3090과 같은 강력한 GPU는 무려 10,496개의 코어를 가지고 있습니다. 이는 일반적인 고급 CPU보다 650배 이상 많습니다. 이러한 이유로 GPU는 복잡한 그래픽을 렌더링하거나 머신 러닝 모델을 훈련시키는 등 수천 개의 작업을 동시에 실행하는 데 이상적입니다.

CPU와 GPU의 상호 보완적 역할

그렇다면 GPU가 이렇게 강력하다면 왜 아직도 CPU가 필요한 걸까요? 그 답은 수행하는 작업의 종류에 있습니다. 어떤 작업에서는 순차적으로 실행하는 것이 병렬 처리보다 더 효율적입니다. 이럴 때 CUDA가 유용합니다. CUDA는 CPU의 강점을 활용할지, GPU의 병렬 처리 능력을 사용할지를 선택할 수 있게 해줍니다.

CUDA 설치하기

CUDA는 이미 Adobe Creative Suite와 같은 인기 소프트웨어에서 더 빠르고 효율적으로 작동하도록 사용되고 있습니다. 하지만 여러분이 직접 CUDA를 프로젝트에 사용하고 싶다면 어떻게 해야 할까요? CUDA와 Python을 시작하는 방법을 알아봅시다.

먼저, GPU가 CUDA를 지원하는지 확인해야 합니다. 터미널에서 nvidia-smi list gpus 명령어를 실행하여 확인할 수 있습니다. 만약 여러분의 GPU가 CUDA 지원 목록에 있다면 준비가 된 것입니다!

Anaconda로 CUDA 설정하기

CUDA를 설정하기 위해 우리는 Anaconda를 사용할 것입니다. 새로운 작업 환경을 만들면서 시작해 봅시다:

conda create -n ml python=3.9
conda activate ml

많은 사람들이 CUDA를 직접 설치하려고 하지만, 보통 PyTorch를 먼저 설치하는 것이 더 쉽고 호환성이 좋습니다. PyTorch를 설치하면 적절한 버전의 CUDA도 자동으로 설치되기 때문입니다:

conda install -c pytorch pytorch

설치가 완료되면, Python 환경에서 CUDA가 사용 가능한지 확인할 수 있습니다:

import torch
print(torch.cuda.is_available())

만약 True가 출력되면, 준비 완료입니다!

CPU와 GPU 성능 비교

이제 CPU와 GPU 성능을 비교하는 간단한 속도 테스트를 해 봅시다. 두 개의 큰 행렬을 만들어 각 장치가 얼마나 빠르게 곱셈을 수행하는지 확인해 보겠습니다. 테스트 기본 설정은 다음과 같습니다:

  1. PyTorch를 사용해 두 개의 무작위 행렬을 생성합니다.
  2. 먼저 CPU로, 그 다음 GPU로 곱셈을 수행합니다.
  3. 각 장치에 소요된 시간을 측정합니다.

이 테스트를 실행하면 복잡한 계산에서 GPU가 얼마나 더 빠른지 알 수 있습니다. 제 설정에서는 CPU가 약 8.46초 걸린 반면, GPU는 단 0.26초 만에 처리했습니다—정말 큰 차이입니다!

마무리

이번 글은 CUDA와 그 기능에 대한 기본적인 소개였습니다. 앞으로의 글에서는 CUDA를 사용해 신경망을 훈련시키고 머신 러닝 작업을 가속화하는 방법을 탐구할 것입니다. 속도 테스트를 시도해 보셨다면, 댓글로 여러분의 하드웨어 설정과 함께 결과를 공유해 주세요. 다양한 시스템들이 어떻게 성능을 발휘하는지 보는 것도 정말 재미있을 것 같습니다!

'기술' 카테고리의 다른 글

MOSFET이란  (0) 2024.11.21
트랜지스터 Transistor  (0) 2024.11.20
반도체 패키징 - CoWoS  (0) 2024.11.11
DRAM - 1Bit (1T1C) 동작 설명  (0) 2024.11.08
HBM과 HBM4 예비스펙  (0) 2024.11.04