본문 바로가기

Research

GPU Hardware에 관한 연구

1. GPU 시뮬레이터 동향

GPU 구조에 대한 학술연구들은 Fermi를 기초로 시뮬레이션을 한다. 일단 널리 알려진 gpgpu-sim이라는 시뮬레이터가 Fermi 구조를 기반으로 구성되었고, 이후 Kepler부터 Pascal까지도 많은 변화들이 있지만 NVIDIA에서 상세한 아키텍처 정보를 제공하지 않기 때문에(제공할 이유도 없고..) 완벽한 시뮬레이션은 어렵다. 실제로 설계한 칩을 만들려면 시간과 돈이 많이 소모되므로, 실제 하드웨어와 결과적인 오차가 매우 적은 simulator를 활용하여 설계된 architecture를 평가한다. 다만 최근 들어 딥러닝을 위한 Tensor core와 같은 특별한 코어들이 추가되면서 일반적인 코어를 사용해서 처리하기보다 Tensor core 지원 여부를 확인하고 명령어가 다르게 실행되는 경우가 있어, 시뮬레이션은 더 어려워졌다고 할 수 있다.

Simulator는 Core들과 메모리, 내부연결망(inter-connect network) 등을 코드 로직으로 구성하여 명령어가 실행될 때 access 수, 충돌 수, stall 수, power와 같은 것들을 측정하지만 기본적으로 CUDA로 작성된 애플리케이션으로부터 명령어를 받아들여 수행하므로 CUDA버전 그리고 이를 기반으로 컴파일된 애플리케이션(binary file)과의 호환성도 고려해야 한다. (Simulator들은 시뮬레이션 방식에 따라 다르지만 gpgpu-sim의 경우 사이클 단위로 모든 유닛들을 동작하도록 구성한다)

하드웨어적인 발전도 발전이지만 소프트웨어 수준의 병렬화 방식도 나날이 발전해가면서, 이를 지원하는 CUDA 버전과 cuDNN과 같은 라이브러리도 고려해야 한다. 요즘 병렬 처리는 CUDA로 작성된 단순 matrix 연산 알고리즘보다는 이미 NVIDIA에 의해 최적화된 cuDNN이나 tensorRT 등 프레임워크들이 많이 활용되기 때문에 이를 고려한 연구도 필요하다.

gpgpu-sim 시뮬레이터의 경우 최근 큰 업데이트가 이루어졌다. 이 후 확인해보진 않았다.

그 외 gem5가 heterogeneous architecture라던지 CPU/GPU 에 대한 상세한 modeling이 잘 되어있다. 좀 사용해봤는데 너무 과한 면이 있다...

 

 

2. GPU Hardware 연구 주제

GPU 연구는 대부분 메모리와 관련된게 주를 이룬다. GPU라는 것 자체가 수많은 작은 코어들이 동시에 연산되도록 구성되어 엄청난 처리량을 보여주지만, CPU와 마찬가지로 메모리 접근은 여전히 상대적으로 느리기 때문에 performance bottleneck이 되기 때문이다. 사칙 연산과 같은 경우 상대적으로 매우 낮은 latency만 필요한 반면 메모리로부터 데이터를 가져오는 데는 상당한 시간이 소모된다.

따라서,

1) 글로벌 메모리로부터 데이터를 가져올 때 어떻게 하면 빨리 가져올 수 있을까에 대한 고민(주로 thread scheduling)

2) 가져온 메모리를 캐싱하는 L1, L2 캐시에서 hit를 최대한 이끌어 낼 수 있을까에 대한 고민(cache management나 prefetching)

3) Register File 과 pipeline 개선

에 대한 연구가 주를 이룬다.

 

그 외에도 성능을 저하시키는 문제점들이 있지만 워낙 전체 performance에 미치는 영향이 적기 때문에 대부분이 memory와 연관된 연구가 많다. 데이터를 fech 할 때 가장 상위이면서도 파이프라인과 연관성이 높은 'Register File' 또한 좋은 연구 주제이다.

다만, Register는 명령어에 포함된 레지스터 번호와 같은 것들을 함께 고려해야하기 때문에 좀 더 컴파일러쪽과도 친하면 좋고, Instruction-cache, 전체적인 파이프라인에 관한 내용도 연구 내용에 포함될 확률이 높다. Cache와 Memory 부분은 load/store 에 관한 부분과 캐시 구조, 메모리 구조 및 지역성과 같은 특성에 관한 것이 워낙 중요하기 때문에 하드웨어의 다른 부분에 대한 이해가 필요하다. (물론, 이 또한 명령어 레벨에서 접근하면서 데이터 지역성을 함께 고려하는 경우도 있기 때문에 무조건 타겟 유닛이나 범위를 한정할 순 없다.)

발열이나 전력소모에 관한 기법을 제외하고, 오직 처리량(Throughput)/성능(Instruction per Cycle) 관점에서 연구분야를 보자면 워프 내부에서의 분기 문제, 데이터 압축 등이 있다.