행렬 곱셈 (2020)
본 기사는 행렬 곱셈의 다양한 루프 순서를 분석하여 캐시 활용도를 개선하는 방법을 다루고 있습니다.
특히, 행렬을 행 우선(row-major) 방식으로 메모리에 저장했을 때, 루프 순서에 따른 메모리 접근 패턴이 캐시 효율에 큰 영향을 미치며, ikj 루프 순서가 캐시 미스가 적어 효율적임을 설명합니다.
또한, 큰 행렬을 작은 블록 단위로 나누어 곱하는 블록 행렬 곱셈 기법을 통해 L1 캐시 내에서 연산을 수행함으로써 캐시 미스와 불필요한 데이터 재로딩을 줄이는 방법을 제시합니다.
마지막으로, 전치 행렬을 미리 계산하지 않고도 (A B^T), (A^T B) 연산을 효율적으로 수행하는 인덱싱 기법과 SIMD 명령어를 활용한 병렬화 구현 방안도 소개합니다.
이 연구는 머신러닝 등 대규모 행렬 연산에서 성능 최적화를 위한 실용적 가이드라인을 제공합니다.