CUDA (CUDA (Compute Unified Device Architecture))

컴퓨터과학·AI
한 줄 정의: 엔비디아가 개발한, GPU에서 범용 병렬 연산을 프로그래밍할 수 있게 해주는 플랫폼이자 프로그래밍 모델.

쉽게 풀면

CUDA는 GPU를 그래픽 작업뿐 아니라 일반적인 계산에도 쓸 수 있게 해주는 소프트웨어 도구 모음이다. 원래 개발자가 GPU 코어를 직접 다루려면 매우 복잡한 저수준 코드를 짜야 했지만, CUDA 덕분에 C++과 비슷한 언어로 GPU의 병렬 연산 능력을 활용할 수 있게 되었다. 대부분의 딥러닝 프레임워크는 내부적으로 CUDA를 통해 GPU 연산을 수행한다. 그래서 딥러닝 환경을 구축할 때 CUDA 버전 호환성이 자주 문제가 된다.

왜 중요한가

딥러닝을 비롯한 대규모 수치 연산 연구는 대부분 GPU 병렬 처리에 의존하기 때문에, CUDA는 실험 재현성과 성능 비교의 전제 조건으로 논문에서 자주 언급됩니다. 컴퓨터비전, 자연어처리, 계산과학 등 GPU를 활용하는 거의 모든 하위분야에서 실험 환경을 기술할 때 빠지지 않는 요소입니다.

논문에서는 이렇게 쓰입니다

"모든 모델은 CUDA 11.8과 cuDNN 8.6 환경에서 학습되었다."

실험을 재현하려면 특정 버전의 CUDA와 그 위에서 동작하는 딥러닝 연산 라이브러리 cuDNN이 필요하다는 것을 명시한 문장이다.

"분자동역학 시뮬레이션의 힘 계산 커널을 CUDA로 재구현하여 CPU 대비 처리 속도를 크게 향상시켰다."

과학 계산 분야에서 반복적인 수치 연산을 CUDA로 병렬화해 시뮬레이션 속도를 높였다는 뜻이다.

"대규모 언어모델의 추론 지연시간을 줄이기 위해 CUDA 커널을 직접 작성하여 어텐션 연산을 최적화하였다."

딥러닝 프레임워크가 기본 제공하는 연산이 아니라, 성능을 더 끌어올리기 위해 CUDA 수준에서 직접 연산 코드를 짰다는 뜻이다.

조금 더 깊게 보면

CUDA는 GPU 내 수많은 스레드를 블록과 그리드 단위로 묶어 관리하는 프로그래밍 모델을 제공하며, 연구자가 성능을 더 끌어올리고자 할 때는 프레임워크가 자동 생성하는 연산 대신 직접 CUDA 커널을 작성하기도 합니다. 또한 PyTorch, TensorFlow 같은 프레임워크는 각각 지원하는 CUDA·cuDNN 버전 범위가 정해져 있어, 논문의 재현성을 위해서는 이 버전 조합을 명시하는 것이 일반적인 관행입니다.

주의할 점

CUDA는 엔비디아 GPU 전용 기술이라 AMD나 다른 제조사의 GPU에서는 그대로 쓸 수 없으며, 이 때문에 이식성 문제가 자주 발생한다.

관련 용어