본문 바로가기
공부

[CS] GPGPU

by MY블로그 2023. 7. 11.

GPGPU ?

GPGPU는 "General Purpose Computing on Graphics Processing Unit" 의 약어 이며,

그래픽 처리 장치(GPU)를 일반 목적(연산)의 작업에 사용하는 기술을 의미합니다.

(즉, CPU에서 하던 작업의 일부를 GPU에서 처리하도록 하는 것)

기본적으로 GPGPU는 그래픽 카드의 병렬 처리 능력을 활용하여 일반적인 연산 작업의 효율성을 높혀줄 수 있습니다.

 

그래픽 처리 장치가 가지고 있는 대량의 병렬 처리 유닛을 활용하여 계산을 수행합니다.

그래픽 처리장치는 3D 그래픽 작업을 수행하기 위해 많은 수의 작은 계산코어를 가지고 있는데, 이러한 작은 코어들은 병렬처리 작업에 특화 되어 있습니다.

이것을 통하여 그래픽 카드는 대량의 데이터나 계산 작업을 동시에 처리할 수 있게 됩니다.

 

GPGPU를 사용하면 컴퓨터의 일반적인 응용 프로그램에서 그래픽 카드의 처리 능력을 활용하여 성능의 향상을 기대할 수 있습니다.

예시로 과학 및 공학 분야의 복잡한 계산, 기계 학습, 데이터 마이닝, 암호 해독, 음성 및 영상 처리, 코인 채굴등에 GPGPU를 사용하여 더 빠른 실행 시간을 달성할 수 있습니다.

 

NVIDIA의 CUDA"Computer Unified Device Architectur), AMD의 OpenCL"Open Computing Language"과 같은 프레임워크를 통하여 구현될 수 있습니다.

프레임워크는 개발자들이 그래픽 카드의 병렬처리 능력을 활용하여 프로그래밍 할 수 있는 API 그리고 라이브러리를 제공합니다.

 


 

GPGPU의 장단점

장점

1. 높은 병렬 처리 능력

그래픽 카드는 많은 수의 작은 코어들을 가지고 있기 떄문에 병렬처리에 특화 되어져 있습니다.

따라서 GPGPU를 사용하면 대량의 데이터나 계산 작업을 한번에 동시 실행이 가능합니다.

그로 인하여 작업 시간의 큰 단축이 가능합니다.

 

2. 높은 성능과 처리량

일반적인 CPU보다 더 높은 성능과 처리량을 얻을 수 있습니다.

대규모 데이터 집합, 복잡한계산에 효과적 입니다.

 

3. 비용 효율성

CPU보다 비용적으로 효율적 입니다. (단, 최신 고성능 그래픽 카드는 비용이 높습니다.)

 

4. 에너지 효율성

일반적으로 GPU는 CPU보다 전력 소비가 비교적 낮습니다.

 

단점

1. 병렬화에 적합한 작업에만 한정

병렬처리에 특화되어있기 때문에 작업 속도는 빠를 수 있으나 순차적인 작업이나 간단한 계산 작업에 있어서는 CPU보다 효율적이지 않을 수 있습니다.

즉, 모든 종류의 응용 프로그램에 대해서 GPGPU를 사용하는것이 효율적이지 않을 수 있습니다.

 

2. 메모리 관리의 복잡성

CPU와는 다른 별도의 메모리 공간을 사용합니다,

때문에 데이터를 CPU와 GPGPU간에 효율적으로 전달하는것이 매우 중요합니다.

메모리 복사 및 데이터 전송에 따른 오버헤드가 쉽게 발생할 수 있으며, 메모리 관리에 대한 복잡성이 증가합니다.

 

3. 프로그래밍의 어려움

그래픽 카드의 병렬 처리를 활용하기 위한 별도의 프로그래밍 모델 및 API를 이해하고 사용해야 합니다.

이는 기존의 CPU기반 프로그래밍과는 다른 접근 방식이 요구되기 떄문에 초기 프로그래밍이 어려울 수 있습니다.

 

4. 메모리의 제약

일부 그래픽 카드에서는 CPU와 비교하여 상대적으로 작은 메모리 용량을 가지게 됩니다.

따라서 대규모 데이터 집합을 처리해야 하는 경우 메모리 제약으로 인하여 문제가 발생할 수 있습니다.

 


GPGPU의 사용 분야

GPGPU는 다양한 분야에서 활용될 수 있습니다. 몇 가지의 예시를 보도록 하겠습니다.

1. 과학 및 공학의 연구

대규모 데이터간의 처리, 복잡한 계산 작업 및 시뮬레이션등에 활용 됩니다.

예시로 천문학에서는 전체 모델링 및 시뮬레이션에 사용되며, 물리학에서는 입자 모델링 및 시뮬레이션, 생명 과학에서는 단백질의 구조 예측 등에 GPGPU를 사용하여 계산 속도를 향상 시킵니다.

 

2. 기계 학습 및 인공지능

대용량 데이터 세트에서 머신러닝 알고리즘 학습 및 추론에 유용합니다.

이미지의 인식, 음성의 처리, 자연어의 처리, 데이터 마이닝과 같은 인공지능의 작업에서 보다 빠른 속도와 효율적인 처리를 할 수 있습니다.

 

3. 의료 영상 처리

CT스캔, MRI, 초음파 등의 영상 데이터를 처리하고 분석합니다.

의료 영상 분석, 영상 복원, 종양 감지, 신경망 연구 등에서 활용하여 정확성과 속도를 향상시킬 수 있습니다.

 

4. 암호의 해독

암호화와 관련된 작업에서는 복잡한 암호 해독 알고리즘을 가속화 할 수 있습니다.

예시로 비트코인과 같은 암호화폐의 채굴 작업은 GPGPU를 통하여 수행하고 있습니다.

 

5. 게임 개발

게임 개발에서 그래픽 및 물리 시뮬레이션, 입자 효과, 그림자 처리 등에 활용 됩니다.

그래픽 카드의 병렬 처리 능력을 이용하여 게임의 시각적인 품질을 향상시키고 게임의 성능을 향상시킬 수 있습니다.

 

댓글