CUDA (CUDA (Compute Unified Device Architecture))
쉽게 풀면
CUDA는 GPU를 그래픽 작업뿐 아니라 일반적인 계산에도 쓸 수 있게 해주는 소프트웨어 도구 모음이다. 원래 개발자가 GPU 코어를 직접 다루려면 매우 복잡한 저수준 코드를 짜야 했지만, CUDA 덕분에 C++과 비슷한 언어로 GPU의 병렬 연산 능력을 활용할 수 있게 되었다. 대부분의 딥러닝 프레임워크는 내부적으로 CUDA를 통해 GPU 연산을 수행한다. 그래서 딥러닝 환경을 구축할 때 CUDA 버전 호환성이 자주 문제가 된다.
왜 중요한가
딥러닝을 비롯한 대규모 수치 연산 연구는 대부분 GPU 병렬 처리에 의존하기 때문에, CUDA는 실험 재현성과 성능 비교의 전제 조건으로 논문에서 자주 언급됩니다. 컴퓨터비전, 자연어처리, 계산과학 등 GPU를 활용하는 거의 모든 하위분야에서 실험 환경을 기술할 때 빠지지 않는 요소입니다.
논문에서는 이렇게 쓰입니다
실험을 재현하려면 특정 버전의 CUDA와 그 위에서 동작하는 딥러닝 연산 라이브러리 cuDNN이 필요하다는 것을 명시한 문장이다.
과학 계산 분야에서 반복적인 수치 연산을 CUDA로 병렬화해 시뮬레이션 속도를 높였다는 뜻이다.
딥러닝 프레임워크가 기본 제공하는 연산이 아니라, 성능을 더 끌어올리기 위해 CUDA 수준에서 직접 연산 코드를 짰다는 뜻이다.
조금 더 깊게 보면
CUDA는 GPU 내 수많은 스레드를 블록과 그리드 단위로 묶어 관리하는 프로그래밍 모델을 제공하며, 연구자가 성능을 더 끌어올리고자 할 때는 프레임워크가 자동 생성하는 연산 대신 직접 CUDA 커널을 작성하기도 합니다. 또한 PyTorch, TensorFlow 같은 프레임워크는 각각 지원하는 CUDA·cuDNN 버전 범위가 정해져 있어, 논문의 재현성을 위해서는 이 버전 조합을 명시하는 것이 일반적인 관행입니다.
주의할 점
CUDA는 엔비디아 GPU 전용 기술이라 AMD나 다른 제조사의 GPU에서는 그대로 쓸 수 없으며, 이 때문에 이식성 문제가 자주 발생한다.