스트라센 행렬곱의 임의 차원 최적 패딩 전략
스트라센 알고리즘은 2의 거듭 제곱 크기의 행렬에만 바로 적용될 수 있다. 임의의 n×n 행렬을 사용하려면 0 행·열을 추가해 m·2^k ≥ n 형태로 만들고, m과 k를 선택한다. 본 논문은 추가되는 0 행·열 수 d와 그에 따른 연산량 변화를 최악, 최선, 평균 경우로 분석한다. 스트라센이 제시한 m, k 선택은 최악 경우에 약 20 %의 추가 연산을
초록
스트라센 알고리즘은 2의 거듭 제곱 크기의 행렬에만 바로 적용될 수 있다. 임의의 n×n 행렬을 사용하려면 0 행·열을 추가해 m·2^k ≥ n 형태로 만들고, m과 k를 선택한다. 본 논문은 추가되는 0 행·열 수 d와 그에 따른 연산량 변화를 최악, 최선, 평균 경우로 분석한다. 스트라센이 제시한 m, k 선택은 최악 경우에 약 20 %의 추가 연산을 초래함을 보이며, 보다 효율적인 파라미터 탐색 필요성을 강조한다.
상세 요약
스트라센 알고리즘은 7개의 부분 행렬 곱을 재귀적으로 수행함으로써 전통적인 O(n³) 알고리즘보다 적은 연산량, 즉 O(n^{log₂7})≈O(n^{2.807})을 달성한다. 그러나 이 이론적 복잡도는 입력 행렬이 정확히 m·2^k 형태일 때만 성립한다. 실제로는 대부분의 문제에서 n이 2의 거듭 제곱이 아니므로, 행렬을 0으로 패딩하여 차원을 늘려야 한다. 패딩 과정에서 추가되는 0 행·열의 개수를 d라고 정의하면, 실제 연산량은 (n+d)^{log₂7}에 비례한다.
스트라센은 임의 n에 대해 m과 k를 선택하는 구체적인 규칙을 제시했는데, 이는 n ≤ m·2^k 를 만족하도록 m을 1~2 사이의 정수, k를 충분히 큰 정수로 잡는 방식이다. 이때 d는 최악 경우에 n/16, 최선 경우에 1, 평균 경우에 약 n/48 정도가 된다. 최악 경우를 수치적으로 살펴보면, d=n/16이면 (n+ n/16)^{log₂7}=n^{log₂7}(1+1/16)^{log₂7}≈1.20·n^{log₂7}가 된다. 즉, 스트라센이 제시한 파라미터는 최적 파라미터(즉, d가 최소인 경우) 대비 약 20 %의 연산 과부하를 일으킨다.
이 과부하는 단순히 상수 계수의 차이로 끝나지 않는다. 재귀 깊이가 깊어질수록 패딩된 부분 행렬이 더 많이 생성되고, 메모리 사용량과 캐시 효율성에도 부정적인 영향을 미친다. 특히 대규모 행렬에 대해 메모리 대역폭이 병목이 되는 현대 컴퓨팅 환경에서는 20 %의 추가 연산이 실행 시간에 비례적으로 반영되지 않을 수 있다. 따라서 최적의 m·2^k 조합을 찾는 것이 실용적인 성능 향상에 핵심이다.
본 논문은 이러한 패딩 비용을 정량적으로 분석하고, 기존 스트라센 파라미터가 최악 경우에 비효율적임을 수학적으로 증명한다. 또한, d를 최소화하는 새로운 파라미터 선택 방법을 제안하거나, 기존 방법을 보완하는 전략(예: 비균등 패딩, 하이브리드 알고리즘) 탐색의 필요성을 강조한다.
📜 논문 원문 (영문)
🚀 1TB 저장소에서 고화질 레이아웃을 불러오는 중입니다...