Nvidia CUDA로 병렬 컴퓨팅을 쉽게 이해해 보세요!

Find AI Tools
No difficulty
No complicated process
Find ai tools

Nvidia CUDA로 병렬 컴퓨팅을 쉽게 이해해 보세요!

목차

  1. 그래픽 카드란?
  2. 그래픽 카드의 발전
  3. 그래픽 카드의 병렬 컴퓨팅 기능
  4. CUDA API 소개
  5. CUDA 프로그래밍을 위한 사전 지식
  6. CUDA 프로그래밍 구조
  7. CUDA 메모리 및 데이터 이동
  8. CUDA 커널 함수 작성하기
  9. CUDA 프로그래밍의 동기화
  10. CUDA로 가속화된 작업 예시

그래픽 카드의 병렬 컴퓨팅 기능 ✨

그래픽 카드는 PC의 가장 비싼 부품 중 하나입니다. 게임을하는 것이든 단순한 워드 프로세싱을 하는 것이든 매 초마다 수백만 개 또는 수조 개의 그래픽 계산을 수행합니다. 하지만 최근 10년 동안 그래픽 카드는 지원하는 작업의 범위를 확대하여 병렬 연산을 가속화하는 일반적인 용도 계산 장치로 사용될 수 있게 되었습니다.

이 모든 것이 무엇을 의미하고, 이런 비싼 하드웨어에 대해 어떻게 프로그래밍할 수 있는지 알아보겠습니다.

병렬화란 무엇인가?

먼저 "병렬화"라는 용어가 무엇을 의미하는지 알아보겠습니다. 병렬화는 "특정 프로그램이 병렬 처리 시스템에서 실행되도록 적응시키는" 공식적인 정의입니다. 개인적으로 이 정의는 "병렬화"라는 용어를 사용할 때 "병렬"이란 용어를 설명하는 데 사용하는 것은 좋아하지 않습니다.

수학적 의미에서 "병렬"이라는 용어는 다른 선과 일정한 거리를 유지하며 그 선과 평행한 선을 설명하는 데 사용됩니다. 유사하게, 계산적 의미에서 "병렬"은 동시에 발생한다는 의미입니다. 다시 말해, 서로 다른 회로에서 동시에 실행되는 것입니다.

병렬 컴퓨팅 시스템을 설명할 때 이는 병렬 회로에 적용되는 것과 유사한 의미를 지니며, 병렬 회로란 그림일 뿐만 아니라 기타 계산에 사용되는 장치도 포함됩니다. 우리는 이 비디오에서 회로 설계에 대한 내용은 다루지 않겠지만 병렬 계산 시스템에 대한 이야기를 할 때 병렬이라는 용어가 텍스트북적인 수학적 정의보다는 전기적인 의미와 연관되기 때문입니다.

예를 들어 두 개의 파이프 라인이 있다고 가정해 보겠습니다. 하나는 메모리 조작을 수행하고, 다른 하나는 산술 연산을 수행할 수 있습니다. 이는 파이프 라인이 같은 입력 전압을 가지고 있지만 각 분기는 해당 분기의 저항에 따라 다른 전류를 실행합니다. 우리는 이를 "복수회로(Parallel circuit)"라고 일컫거나, 단순히 두 개의 분기점이 동일한 두 전기 노드에 연결된 병렬 회로로 생각할 수 있습니다. 이 회로에서 각 분기는 해당 분기의 저항에 따라 서로 다른 전류를 실행하지만, 입력 전압은 동일합니다.

일반적으로 CPU는 직렬 계산 장치의 가장 쉬운 예입니다. 기술적으로는 CPU가 멀티코어 구조를 이용하여 병렬로 계산을 수행할 수 있지만, 일반적인 프로그램에서는 스칼라 실행을 사용합니다. CPU는 매우 빠른 속도로 명령어를 병렬로 처리할 수 있지만, 병렬 처리를 활용하기 위해서는 하드웨어 추가 도움 없이 프로그램을 명시적으로 작성해야 합니다.

한편, 병렬 장치인 GPU는 여러 종류로 나뉩니다. CPU도 병렬 계산을 수행할 수 있는 몇 가지 명령어를 지원하지만, GPU가 가장 대표적인 고도로 병렬화된 하드웨어 예입니다. GPU는 단일 명령어 다중 데이터(SIMD) 또는 다중 명령어 다중 데이터(MIMD) 작업을 수행할 수 있습니다. 현재의 GPU는 MIMD 유형의 실행을 위해 구성된 거대한 SIMD 엔진입니다.

NVIDIA GPU에서는 MIMD 타입의 실행을 위해 simd 블록인 warp가 있습니다. 각 warp에는 32x4와이드 FPU 및 ALU가 있으며, Ampere와 Ada의 경우에는 64 FPU와 32 ALU가 있습니다. CUDA 코어는 SIMD 블록 내의 단일 4바이트 넓이 데이터 경로입니다. Ampere warp 내에서 64개 또는 32개의 부동 소수점 또는 정수를 처리할 수 있습니다. 이와 비교하여 현대의 CPU는 1~16개의 부동 소수점 또는 정수를 처리할 수 있으며, 사용하는 명령어 세트에 따라 다릅니다.

AMD GPU도 거의 동일한 방법으로 작동하지만, 사용된 SIMD는 약간 더 넓으며, 컴퓨팅 유닛 수준에서 작업을 수행합니다. 이것은 더 세분화된 CMD 작업 제어를 가능하게 하여 더 효율적인 MIMD 유형의 실행 경로를 허용합니다.

실제로 모던 GPU의 병렬 실행은 MIMD 데이터 흐름을 가능하게 하는 안에 있는 것일 뿐입니다. 그러나 병렬화가 되어있는 작업을 실행하고자 할 때의 장점은 명백합니다. 지난 10년 동안 하드웨어 시장 변화에 주목하면 그래픽 카드는 이미지 처리 작업 외에도 다양한 작업에 사용될 수 있다는 것을 알 수 있습니다.

그래픽 카드는 기본적으로 그래픽 작업을 수행하기 위한 것이지만, 그래픽 작업에서는 if 문을 자주 사용하지 않고, 프레셔 처리와 같은 간단한 반복 작업이 더 일반적입니다.

이외에도 래스터화 및 3D 텍스처 등을 위해 그래픽 처리에 필요한 다양한 하드웨어가 있지만, 이 비디오에서는 그런 내용을 다루기보다 일반적인 목적의 GPU로 집중하겠습니다. 더 많은 하드웨어 관련 내용을 다루지 않기 때문에, CUDA 프로그래밍의 구문과 CUDA의 작동 방식을 알아보겠습니다.

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.