CUDA 란?
Compute Unified Device Architecture의 준말로,
NVIDIA에서 개발한 병렬 컴퓨팅 플랫폼 및 프로그래밍 모델이다.
쉽게 말하면, 엔비디아의 GPU 개발 툴이다.
그래픽 처리 장치(GPU)에서 수행하는 (병렬처리) 알고리즘을 C 언어를 비롯한 상업 표준 언어를 사용하여 작설할 수 있도록 하는 GPGPU 기술이다.
CUDA를 통해 개발자들은 쿠다 GPU 안 병렬 계산 요소 고유 명령어 집합과 메모리에 접근할 수 있다.
CUDA (Computed Unified Device Architecture)는 NVIDIA에서 개발한 GPU 개발 툴이다. 사실 CUDA는 c, c++기반으로 짜여진 완전 기초적 H/W 접근을 해야하는데, 많은 연구자들이 딥러닝에 사용할 수 있도록, 쉽게 설치할 수 있도록 오픈하였다. 현재는 nvidia-driver, CUDA, CUDNN만 설치하면 딥러닝을 쉽게 사용할 수 있다.
CUDA를 사용하는 이유는 매우 간단한데, 많은 양의 연산을 동시에 처리하는 것이 목표이다. 그러므로 딥러닝, 채굴과 같은 수학적 계산에 많이 쓰인다. 미분은 컴퓨터로 가능하기 때문이다.
기존의 컴퓨터 연산은 CPU를 사용하고, RAM에 의존하여 연산을 진행하였다. CPU를 이용한 연산은 대부분 Single-Core(Human-Brain)를 사용하고 MultiProcessing, Multi-Threading 등을 이용하여 CPU가 보유한 코어 갯수 만큼의 Multi-Core를 이용하여 연산을 할 수 있다. 일반적으로 딥러닝에서 사용하는, 특히 pytorch나 tensorflow 에서, data loader 파트에서, core 갯수를 주고 데이터 loading 하는 부분이 여기에 속한다.
이에 반해 GPU는 Core 갯수가 엄청나다. CPU는 8~16개인데 비해 GPU는 몇 천개 이상이다. 즉 이를 이용한 Many-Core dependent 연산을 진행하고, Video RAM에 있는 데이터를 연산한다.
각 각의 Core 별 속도는 CPU가 GPU보다 훨신 빠르다. CPU의 코어 당 속도가 3.0 GHz 정도이다. GPU 같은 경우, 16년 하반기에 등장한 Pascal Architecture 의 경우 1.8 GHz 로 많이 증가했으나 이전 Maxwell 2th Architecture에서의 속도는 0.9GHz 정도였다. 그렇지만 코어의 숫자는 이 때 당시의 CPU의 경우 집에서 게임하거나 사무용으로 쓰이는 평균의 개수는 4코어, GPU는 1500 코어 이상이었다.
인용 : https://kaen2891.tistory.com/20
CUDA (쿠다) 란, 왜 사용하는 것인가.
CUDA (Computed Unified Device Architecture)는 NVIDIA에서 개발한 GPU 개발 툴이다. 사실 CUDA는 c, c++기반으로 짜여진 완전 기초적 H/W 접근을 해야하는데, 많은 연구자들이 딥러닝에 사용할 수 있도록, 쉽게 설
kaen2891.tistory.com
엔비디아에서 발표한 CPU와 GPU의 차이
CUDA Toolkit
엔비디아 CUDA 툴킷은 GPU 가속화 애플리케이션 개발에 필요한 모든 것을 제공한다.
툴킷에는 GPU 가속화 라이브러리, 디버깅 및 최적화 툴, 컴파일러, 그리고 애플리케이션을 배포하기 위한 CUDA 런타임이 포함되어 있다.
개발자들은 CUDA 툴킷을 사용해서 연산 집약적인 코드 부분을 GPU에서 실행되도록 업데이트하여 C 또는 C ++ 애플리케이션을 가속화할 수 있다. 개발자들은 애플리케이션을 가속화하기 위해 C, C ++, Fortran 및 Python을 포함한 널리 사용되는 언어로 사용자 정의 애플리케이션을 개발할 뿐만 아니라 드롭 인 라이브러리에서 함수를 호출할 수도 있다.
예를 들어,
cuDNN, TensorRT, Deepstream SDK, cuDNN 가속화 프레임 워크 등 GPU 기반 가속화된 딥러닝 애플리케이션 설계 및 배포를 위한 딥러닝 라이브러리를 사용할 수 있다.
cuDNN(CUDA® Deep Neural Network library) : cuDNN은 엔비디아 CUDA 딥 뉴럴 네트워크 라이브러리, 즉 딥 뉴럴 네트워크를 위한 GPU 가속화 라이브러리의 기초 요소로 컨볼루션(Convolution), 풀링(Pooling), 표준화(Nomarlization), 활성화(Activation)와 같은 일반적인 루틴을 빠르게 이행할 수 있도록 하는 라이브러리입니다.
딥 러닝 추론 엔진(TensorRT) : TensorRT는 딥 러닝 애플리케이션의 배포를 위한 고성능 뉴럴 네트워크 추론 엔진입니다. 주로 하이퍼스케일 데이터센터, 임베디드, 자율주행 플랫폼의 추론에 쓰이는 훈련된 뉴럴 네트워크를 빠르게 최적화하고, 검증, 배포하는데 사용합니다.
딥스트림 SDK(DeepStream SDK) : 딥 러닝을 활용한 동영상 분석 애플리케이션의 고 성능 개발을 손쉽게 할 수 있도록 만든 라이브러리. 높은 수준의 C++ API와 고성능 런타임 (High Performance Runtime)을 통해 GPU 가속 트랜스코딩(Transcoding) 과 딥너링 추론(Inference)기능을 빠르게 통합해서 보다 반응이 빠른 AI 기반 서비스를 제공할 수 있도록 합니다.
cuDNN 가속화 프레임워크: cuDNN의 최적화된 루틴은 딥 러닝 개발자들이 뉴럴 네트워크 모델의 디자인과 훈련에 집중할 수 있도록 돕습니다. cuDNN은 TensorFlow, Theano 및 PyTorch를 포함해서 대중적으로 널리 사용되는 딥 러닝 프레임워크를 가속화합니다.
인용: https://blogs.nvidia.co.kr/blog/cuda-toolkit/
CUDA 툴킷 다운로드하고, GPU를 자유자재로 활용해보자! - NVIDIA Blog Korea
우리가 언어를 매개로 의사소통을 하듯이 기계와 커뮤니케이션을 하기 위해서는 프로그래밍 언어가 필요합니다. 개발자들이 프로그래밍 언어로 컴퓨터에 지시를 내리면, 지시문을 명령어로 번
blogs.nvidia.co.kr
cuDNN
cuDNN (CUDA Deep Neural Network library)는 최첨단 성능으로 딥러닝 기본요소를 가속화하기 위한 GPU 가속 라이브러리이다. cuDNN은 PyTorch, TensorFlow 및 XLA(가속 선형 대수)와 같은 인기있는 딥러닝 프레임워크와 통합된다.
이러한 프레임워크는 직접 GPU 프로그래밍의 복잡성을 추상화하므로 기본 하드웨어에 신경을 쓰는 대신 모델을 설계하고 트레이닝하는 데 집중할 수 있다!
따라서 cuDNN은 내부에서 성능 엔진 역할을 하여 이러한 프레임워크에서 작업을 최대한 효율적으로 실행할 수 있게 해준다.
인용 : https://developer.nvidia.com/ko-kr/blog/accelerating-transformers-with-nvidia-cudnn-9/
NVIDIA cuDNN 9로 트랜스포머 가속화
NVIDIA CUDA 딥 뉴럴 네트워크 라이브러리(cuDNN)는 최첨단 성능으로 딥 러닝 기본 요소를 가속화하기 위한 GPU 가속 라이브러리입니다. cuDNN은 PyTorch, TensorFlow 및 XLA(가속 선형 대수)와 같은 인기 있는
developer.nvidia.com
'기타' 카테고리의 다른 글
[통신] MQTT (0) | 2025.03.03 |
---|---|
[Trend] 미국의 대규모 데이터 센터 '스타게이트' (0) | 2025.02.23 |
[Trend] Deepseek의 영향 (1) | 2025.02.14 |
[Trend] DeepSeek의 R1 (2) | 2025.02.07 |
[스킬업] Docker 기반 CI/CD 파이프라인 구축하기 3주차 (0) | 2024.12.22 |