Получение этого права может быть нетривиальным. Одна из оптимизаций, которая имеет особое значение для больших матриц, - это мозаика умножения для сохранения содержимого в кэше. Однажды я измерил разницу в производительности в 12 раз, но специально выбрал размер матрицы, который потреблял кратные значения моего кеша (около 97 года, поэтому кеш был маленьким).
Есть много литературы по этому вопросу. Начальная точка:
http://en.wikipedia.org/wiki/Loop_tiling
Для более глубокого изучения могут быть полезны следующие ссылки, особенно книги Банерджи:
[Ban93] Banerjee, Utpal, Loop Transformations для реструктуризации компиляторов: фонды, Kluwer Academic Publishers, Norwell, MA, 1993.
[Ban94] Banerjee, Utpal, Loop Parallelization, Kluwer Academic Publishers, Norwell, MA, 1994.
[BGS93] Бэкон, Дэвид Ф., Сьюзен Л. Грэм и Оливер Шарп, Преобразования компиляторов для высокопроизводительных вычислений, Отдел компьютерных наук, Университет Калифорнии, Беркли, Калифорния, Технический отчет № UCB / CSD-93 -781.
[LRW91] Лэм, Моника С., Эдвард Э. Ротберг и Майкл Э. Вольф. Производительность кэша и оптимизация блокированных алгоритмов, в 4-й Международной конференции по архитектурной поддержке языков программирования, состоявшейся в Санта-Кларе, Калифорния, апрель 1991 г., 63-74.
[LW91] Лэм, Моника С. и Майкл Э. Вольф. Теория циклического преобразования и алгоритм максимизации параллелизма, в транзакциях IEEE на параллельных и распределенных системах, 1991, 2 (4): 452-471.
[PW86] Падуя, Дэвид А. и Майкл Дж. Вулф, Усовершенствованная оптимизация компиляторов для суперкомпьютеров, In Communications of ACM, 29 (12): 1184-1201, 1986.
[Wolfe89] Wolfe, Michael J. Оптимизация суперкомпиляторов для суперкомпьютеров, The MIT Press, Cambridge, MA, 1989.
[Wolfe96] Wolfe, Michael J., Высокопроизводительные компиляторы для параллельных вычислений, Addison-Wesley, CA, 1996.