Aún con estas restricciones, el programa es suficiente para presentar
una implementación de la multiplicación de matrices, así como evaluar
su desempeño. El programa acepta parámetros en su línea de comandos
para definir la dimensión de las matrices, lo cual es importante para
variar la cantidad de trabajo que se debe realizar; así como para
imprimir a pantalla tanto las matrices a multiplicar como su
resultado. Esto es básicamente con fines de verificación de
resultados, y es poco práctico para matrices de dimensiones superiores
a pues es difícil visualizar éstas en una pantalla
común.
Una vez asignando espacio para las matrices y generando dos de ellas aleatoriamente (líneas 62-77), el programa toma una muestra de la hora actual, con precisión hasta microsegundos (línea 80). Posteriormente procede a recorrer cada renglón de la matriz (ciclo que inicia en la línea 89). Para cada renglón, otro ciclo realiza el resultado en cada celda (línea 96), empleando un contador (línea 100) para multiplicar cada elemento del renglón de la primera matriz por su correspondiente en la columna de la segunda matriz y acumulando para finalmente obtener el resultado de la celda correspondiente. Los resultados se almacenan en una tercera matriz. Al finalizar el cálculo se toma otra muestra de la hora actual (línea 116), se calcula el tiempo de operación a partir de las dos muestras tomadas, y se despliega este valor (líneas 124-130).
Una corrida ejemplo de este programa, con una matriz de dimensión 150
(es decir, , o 22,500 elementos) es como sigue:
$ ./unimatrix -d 150 dimension 150 calculado row 0 calculado row 1 calculado row 2 calculado row 3 ... calculado row 148 calculado row 149 wall clock time = 4.462505Obsérvese la especificación del tamaño de la matriz por medio del parámetro -d. En esta corrida ejemplo se aprecia que el tiempo de ejecución es de 4.46 segundos.