실험으로 Strassen Matrix Multiplication Algorithm을 구현하여 큰 n에 대해 더 빠른 코드로 이끌어 낼 수 있는지 확인했습니다. 놀랍게도Strassen 매트릭스 배율이 왜 그렇게 빠른가요?
https://github.com/wcochran/strassen_multiplier/blob/master/mm.c
는 더 빨리 큰 N에 대한 방법이었다. 예를 들어 n = 1024 인 경우 은 기존 방법을 사용하여 17.20 초가 걸리는 반면 Strassen 메서드 (2x2.66 GHz Xeon)를 사용하는 경우에만 1.13 초인 이 필요했습니다. 무엇 - 15x 속도 향상!? 조금 더 빨라야합니다. 사실, 작은 32x32 매트릭스에서도 좋은 것처럼 보였습니다!
내가 설명하는 유일한 방법은 알고리즘이 캐시 친화적 인 것입니다. 즉, 매트릭스의 작은 부분에 초점을 맞추고 데이터가보다 현지화되어 있습니다. 어쩌면 나는 가능하면 모든 매트릭스 계산을 단편적으로 수행해야한다.
다른 이유에 대한 다른 이론은 왜 그렇게 빠른가요?
놀랍게도, 버전 1은 낙하산에서 바로 작동했습니다. 나는 정확함에 대해 높은 확신을 가지고 있습니다. 표준 알고리즘을 세분화하라는 제안은 테스트 할 다음 문제입니다.나는 표준 algo를 더 캐시 친화적으로 만들기 위해 조 변경 트릭을 시도 할 것이다. 감사. – wcochran