Depende del tamaño de la matriz, si es escasa o no.
Para matrices densas pequeñas a medianas, creo que alguna variación en la O "ingenua" (N^3) algoritmo es una victoria, si se presta atención a la caché de coherencia y el uso de la plataforma de instrucciones vectoriales
La distribución de datos es importante: para los casos en que el diseño de matriz estándar es poco amigable (por ejemplo, column-major * row-major), debe probar la descomposición binaria de la multiplicación de matrices, incluso si no use los algoritmos de Strassen u otros algoritmos "rápidos", este orden de operaciones puede producir un algoritmo "caché ajeno" que automáticamente hace un buen uso de cada nivel de caché.Si tiene el lujo de reorganizar sus matrices, puede intentar combinar esto con un orden intercalado de bits (o "orden Z") de elementos de datos.
Finalmente, recuerde: la optimización prematura es la raíz de todo mal. Y cuando no lo es prematuro más, siempre perfil & referencia antes, durante y después de la optimización ....
¿Cómo multiplicar una matriz a mano? –
¿Desea uno para matrices generales, o tiene alguna restricción útil en las matrices, como triangular superior o diagonal? –
¿Esto es para un programa, o algo así como el trabajo escolar? La multiplicación de matrices es bastante simple; 1) compruebe que las dimensiones coincidan (por ejemplo, 3x3 * 3x1 y no 3x3 * 1x3), 2) multiplique los campos correspondientes y añádalos para llegar al campo final. http://en.wikipedia.org/wiki/Matrix_multiplication – Eaglebird