
행렬 곱셈 튜토리얼과 ulmBLAS는 캐시 계층과 SIMD 레지스터 명령어를 활용해 행렬 곱셈을 빠르게 구현하는 방법을 다룬다. CUDA 튜토리얼은 아직 글이 많지 않지만, 단순한 구현에서 성능을 높이는 단계별 접근을 제시한다.
2014년에 작성한 튜토리얼은 세 개의 반복문을 쓰는 단순한 구현에서 시작해 행렬 블록을 버퍼에 복사하고 블록 단위로 계산하는 과정을 설명한다. 블록 복사에는 O(N^2), 계산에는 O(N^3)의 비용이 들지만, 복사해 둔 블록으로 계산을 훨씬 빠르게 수행할 수 있다면 이 방식이 이득이 될 수 있다는 설명이다. 튜토리얼은 스트라센 알고리즘의 변형이 아니라 캐시 친화적 알고리즘과 SIMD 명령어를 통해 높은 성능을 얻는 방법을 다룬다.
대학 웹 서버가 여러 차례 바뀌면서 튜토리얼을 GitHub로 옮겼다: gemm-tutorial. 이 튜토리얼에서 출발해 전체 BLAS 구현인 ulmBLAS도 만들었다. 최근 시작한 CUDA 행렬 곱셈 튜토리얼은 ulmBLAS 저장소의 cuda 하위 디렉터리에 있다: ulmBLAS. CUDA 구현은 NVIDIA의 cuBLAS와 대등한 성능을 목표로 했으며, 현재 글은 단계별 접근의 개요를 제시하는 수준이다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요