행렬과 벡터의 곱셈 프로그램으로 최적화 기법을 적어보았다
그리고 메모리 사용에 있어 다양한 경우에 효과적인 메모리 사용 방법을 선택할 수 있는 지표를 제시했다
메모리 읽기와 쓰기의 참조방식에 있어 프로그램의 유형은 아래와 같이 분류할 수 있다.
- 다수의 트랜잭션으로 전역메모리 읽기, 쓰기를 하는 프로그램
* 메모리 접근이 빈번할 때에는 공유 메모리를 사용하여 읽기, 쓰기를 하는것이 좋다.
* NVIDIA GPU Computing Development Kit의 'transposeNew' 프로그램 참고
- 소수의 트랜잭션으로 전역메모리 읽기, 쓰기를 하는 프로그램
* 공유 메모리를 사용하자, 그런데 전역메모리 참조횟수를 줄여 이득을 얻지 못하는 경우에는
이득을 얻지 못한다.
- 소수의 트랜잭션으로 전역메모리 읽기, 쓰기를 하고 지연 감춤을 기대할 수 있을 정도로 많은
계산을 갖는 프로그램
* 지연 감춤이 기대 될 경우에는 공유메모리를 사용하지 않고 전역메모리 혹은 텍스쳐 메모리를
직접 사용하는 것이 속도가 더욱 빠를 수 있다.
모든 경우에 있어서, 전역메모리 읽기가 많으면, 텍스쳐 메모리의 사용을 권장하며 활성 워프 수가 많도록 한다.
결국은 메모리 매니지먼트가 중요하다
'Graphics > GPU' 카테고리의 다른 글
GPU 최적화 기초 - 분기문과 __syncthreads() 제거 (0) | 2014.06.09 |
---|---|
GPU 최적화 기초 - 활성 블록 최적화, 메모리 최적화 (0) | 2014.06.09 |
GPU 최적화 기초 - 알고리즘 최적화 (0) | 2014.06.09 |
GPU 최적화 기초 - 지연 감춤과 __syncthreads() (0) | 2014.06.09 |
GPU 최적화 기초 - 전역메모리 참조시간, 지연감춤 (0) | 2014.06.09 |