server에 필요한 기본 용어

행동하는 개발자·2023년 3월 28일
0

server

목록 보기
1/1

CUDA, CUDNN, DRIVER 의미

많은 연산을 cpu에서만 담당하게 되면 cpu가 해야할 컴퓨터의 프로세스 관리 업무를 효율적으로 수행하지 못할 뿐더러 요구되는 연산 처리에 대한 소요시간이 늘어난다.

따라서 gpu를 활용해야 하고 gpu 활용을 위해 gpu 드라이버를 설치해주어야 한다. 본인의 pc에 장착된 gpu 드라이버가 nvidia사의 것이라면 nvidia 드라이버를 설치해주어야 한다.

CUDA

cuda(Compute Unified Device Architecture): nvidia 사에서 만든 기술로서, 그래픽 처리 장치에서 수행하는 알고리즘을 개발자가 프로그래밍 언어를 활용해 엄청나게 많은 연산을 동시에 할 수 있도록 한다.

cpu와 달리 gpu장치 기반 gpgpu기술을 활용하면 many-core 연산을 하게 된다.

GPU

gpu 상의 범용 계산이라는 뜻으로 일반적으로 컴퓨터 그래픽스를 위한 계산만 맡았던 그래픽 처리 장치(GPU)를 전통적으로 중앙 처리 장치가 맡았던 응용 프로그램들의 계산에 사용하는 기술이다.

gpu는 3차원 그래픽스의 가속에 설계의 목적을 두고 있기 때문에 매우 제한적인 경우에 한하여 일반적인 연산에 gpu를 사용할 수 있다. 대표적으로 gpu는 흐름 처리를 이용하여 풀 수 있는 문제에 효과적이며 최근에는 기술의 발전 덕분에 처리 가능한 문제의 종류가 늘고 있다.

  • 흐름 처리: gpu는 독립적인 꼭짓점들과 프래그먼트만 처리할 수 있지만 다수를 병렬로 처리할 수 있다. 이것은 특히 프로그래머가 같은 방식으로 많은 수의 꼭짓점 또는 프래그먼트를 처리하고자 할 때 유용하다. 병렬로 한 번에 하나의 커널을 흐름 속의 많은 레코드에 실행시키는 것이다. 흐름이란 단순히 유사한 계산을 필요로 하는 레코드의 모음이다. 흐름으로 데이터 병렬성을 구할 수 있다.

CUdnn

딥러닝 기술의 발전으로 인해 다양한 딥러닝 알고리즘들을 쉽게 사용할 수 있도록 오픈소스들이 개발 및 상용화되고 있다. 이 기술의 대부분을 nvidia사의 cuda 딥러닝 라이브러리를 사용하고 있다. 따라서 cuDNN을 설치해 주어야 한다.

컨볼루션 및 풀링 레이어, 활성화 함수 및 정규화 레이어와 같은 딥러닝을 위한 핵심 빌딩 블록의 최적화된 구현을 제공한다. 개발자가 nvidia gpu에서 딥러닝 모델을 가속화할 수 있도록 한다.

그래픽 드라이버

운영 체제와 gpu 하드웨어 간의 통신을 가능하게 하는 소프트웨어 구성요소이다. 운영 체제가 명령과 데이터를 gpu로 보내고 출력을 받는데 필요한 인터페이스를 제공한다. 그래픽 드라이버는 게임, 비디오 편집 소프트웨어 및 기계학습 프레임워크를 포함하여 GPU를 사용해야 하는 모든 응용프로그램을 실행하는 데 필수적이다.

요약

이용자가 딥러닝 프레임워크를 사용하여 코드를 작성할 때

  • 프레임워크는 CUDA 플랫폼을 사용하여 계산 집약적인 작업을 GPU로 오프로드

  • cuDNN은 계산 속도를 높이기 위해 핵심 작업의 최적화된 구현을 제공한다.

  • 그래픽 드라이버는 운영 체제, 프레임워크 및 GPU 하드웨어 간의 통신을 용이하게 함.

오프로드

  1. GPU에 대해 병렬화 및 최적화할 수 있는 코드 부분 식별

  2. CUDA와 같은 프로그래밍 플랫폼을 사용하여 GPU에서 실행되도록 설계된 코드 작성

  3. 코드와 데이터를 GPU 메모리로 전송

  4. GPU 커널을 시작하여 코드를 실행

  5. GPU 메모리에서 결과를 검색하고 CPU 메모리로 다시 전송

profile
끊임없이 뭔가를 남기는 사람

0개의 댓글