행렬과 벡터의 곱셈 프로그램으로 최적화 기법을 적어보았다

그리고 메모리 사용에 있어 다양한 경우에 효과적인 메모리 사용 방법을 선택할 수 있는 지표를 제시했다

 


메모리 읽기와 쓰기의 참조방식에 있어 프로그램의 유형은 아래와 같이 분류할 수 있다.

 - 다수의 트랜잭션으로 전역메모리 읽기, 쓰기를 하는 프로그램

  * 메모리 접근이 빈번할 때에는 공유 메모리를 사용하여 읽기, 쓰기를 하는것이 좋다.

  * NVIDIA GPU Computing Development Kit의 'transposeNew' 프로그램 참고

 - 소수의 트랜잭션으로 전역메모리 읽기, 쓰기를 하는 프로그램

  * 공유 메모리를 사용하자, 그런데 전역메모리 참조횟수를 줄여 이득을 얻지 못하는 경우에는

    이득을 얻지 못한다.

 - 소수의 트랜잭션으로 전역메모리 읽기, 쓰기를 하고 지연 감춤을 기대할 수 있을 정도로 많은

   계산을 갖는 프로그램

  * 지연 감춤이 기대 될 경우에는 공유메모리를 사용하지 않고 전역메모리 혹은 텍스쳐 메모리를

    직접 사용하는 것이 속도가 더욱 빠를 수 있다.

 

모든 경우에 있어서, 전역메모리 읽기가 많으면, 텍스쳐 메모리의 사용을 권장하며 활성 워프 수가 많도록 한다.

 

결국은 메모리 매니지먼트가 중요하다

Posted by 긍정왕오킹