본문 바로가기
논문

GPU 공유 메모리 크기에 따른 최적화 기법

by Lizardee 2023. 8. 31.
요약

GPU는 코어 수를 비약적으로 증가시키고, 병렬 처리를 강화하는 등 발전하였다.

  • Problem: 하지만 GPU를 효율적으로 활용하는 것에 대해서는 단순히 쓰레드 개수만 증가시킬 뿐, GPU에 관한 연구는 진행이 더딘 편이다.
  • Solution: GPU의 장점인 공유 메모리 크기에 따른 분석과 실험 결과를 통해 본 논문에서 제시하는 방법이 효율적임을 확인한다.

 


1. 서론

그래픽 카드의 성능 중에서 병렬 처리를 하는데 필요한 공유 메모리 크기에 따른 최적화 기법을 연구하고, 향후 효율적인 GPU 활용에 대한 기준점을 제시한다.
 
 

2. 관련 연구

2.1 CPU와 GPU
CPU와 GPU는 트랜지스터를 집적시켜 연산을 처리하는 반도체라는 점에서 유사하지만, 근본적으로 하는 일이 다르다.

  • CPU: 순차 코드의 성능을 최적화하기 위해, 복잡한 제어 로직과 큰 캐시 메모리를 사용한다.
  • GPU: 다수의 ALU를 탑재하고 메모리의 대역폭을 늘려서 많은 쓰레드 사용에 적합하고 동일 데이터 메모리를 사용하는 각 쓰레드의 원활한 접근을 위해서 여러 개의 작은 캐시 메모리를 제공한다.
CPU와 GPU의 구조

 
2.2 GPGPU
GPGPU(General Purpose Graphics Processing Unit)은 강력해진 GPU의 성능을 그래픽 처리뿐만 아니라, 일반적인 데이터를 처리하는 데도 사용하는 것을 의미한다.
GPGPU를 효율적으로 사용할 수 있도록 지원하기 위해 나온 것이 CUDA이다.
 
2.3 CUDA
CUDA는 Nvidia 사에서 생산하는 GPU에서 사용할 수 있는 GPGPU 언어로, 기존의 그래픽 전용 처리를 위한 구조에서 유연성을 향상시켜 범용적인 프로그램을 처리할 수 있도록 변경한 것이다.

CUDA 메모리 계층 구조
  • 쓰레드 블록: 병렬 알고리즘에 필요한 쓰레드 사이의 통신, 데이터 공유, 결과의 공유에 사용하는 공유 메모리 공간을 사용한다.
  • 디바이스(그리드): 커널 전체를 커버하는 글로벌 동기를 실시한 후, 글로벌 메모리 공간에서 결과를 공유한다.

 
 

3. GPU 공유 메모리 크기에 따른 최적화 기법
  • Problem: 기존에 GPU의 성능 향상을 위해 다수의 쓰레드를 활용하여 병렬 처리를 이용하는 실험을 여러 가지로 시도해 보았지만, 특정 쓰레드 개수에서 효율이 떨어지는 것을 발견하였다.
  • Solution: GPU의 쓰레드 개수 뿐만 아니라 블록 개수, 코어 개수, 공유 메모리의 크기 등 그 밖에 GPU의 성능을 보여주는 지표들을 활용한 연구를 진행한다.

3.3 실험 결과

실험 결과

▷ 실험에 사용된 그래픽 카드의 최대 공유 메모리: 48KB

  • 33.8KB의 공유 메모리를 사용하는 32x32 블록 개수의 수행 시간이 가장 짧다.
  • 32x64 블록 개수의 속도가 오히려 떨어진 것은 공유 메모리의 크기와 최대 쓰레드 개수 모두를 넘어서기 때문에, GPU가 프로그램 작업을 나눠서 수행하는 것으로 예측된다.

 
 

4. 결론

CUDA에서 공유 메모리는 힙, 스택 메모리처럼 자유롭게 할당하고 사용할 수 있는 것이 장점이다. 이러한 장점을 활용하기 위해 본 논문에서는 분석 방법을 통해 블록 개수, 쓰레드 개수, 공유 메모리 크기를 설정하여 GPU 최적화 기법을 찾는 것이 목적이었다.
실험 결과, 사용하게 되는 공유 메모리 크기가 GPU의 최대 공유 메모리 크기보다 작거나 같은 경우 좋은 효율을 볼 수 있었다.
향후 GPU 연구에서는 단순히 쓰레드 개수만 늘려서 효율을 높이는 것보다는, 현재 GPU의 성능에 맞는 처리를 할 수 있도록 접목시켜야 할 것이다.
 
 
 
 
https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE02323300 

GPU 공유 메모리 크기에 따른 최적화 기법 | DBpia

이세연, 허의남 | 한국정보과학회 학술발표논문집 | 2013.11

www.dbpia.co.kr