¿Por qué el algoritmo ikj es más rápido que el algoritmo ijk para la multiplicación de matrices?

No voy a responder la pregunta original. Cualquier permutación de los índices ijk tiene un cierto comportamiento con respecto a la vectorización, el uso de flujos de prefectch, el número de entradas TLB referenciadas, etc. Entonces, la diferencia depende completamente de la computadora en la que lo ejecute.

Sin embargo, cualquiera de los algoritmos simples de triple bucle son completamente irrelevantes en los procesadores basados ​​en caché, lo que significa cualquier cosa construida en los últimos 20 años. Aquí hay un documento de 1988 que describe los problemas, y en ese momento era relevante. Cinco años después, la arquitectura de la computadora había cambiado bajo sus pies: las formas ijk de los métodos de factorización I. Computadoras vectoriales

En estos días, los algoritmos rápidos de multiplicación matriz-matriz se basan en el bloqueo de los tres bucles, por lo que tiene índices ijk-ii-jj-kk. La permutación precisa y los factores de bloqueo determinan la velocidad. Aquí está la última palabra sobre el tema: Anatomía de la multiplicación de matrices de alto rendimiento