Vous êtes sur la page 1sur 4

INFORME LABORATORIO 2: OPTIMIZACION PROGRAMA: PRODCUTO DE MATRICES

JUAN FELIPE PEREZ RAMIREZ C.C 1035859872 MAURICIO VASQUEZ BERNAL C.C NO TIENE

LABORAOTORIO DIGITALES II

Profesor: Felipe Cabarcas

UNIVERSIDAD DE ANTIOQUIA

8 de junio de 2012

Optimizacin del cdigo

Marco terico: Para pode llevar a cabo la optimizacin del cdigo propuesto por el profesor debimos haber tenido en consideracin el funcionamiento de la memoria RAM, cmo accede el procesador a la informacin, cmo y cuando el programa recurre a la memoria para leer o escribir datos, y analizar si esta forma era la mas conveniente, para luego idearse un camino que implicara menos tiempo de acceso a memoria. La memoria RAM, guarda la informacin que necesita la CPU para realizar operaciones. Podemos compara esta con un mueble de cajones numerados. En estos el procesador puede guardar informacin y acceder a ella. La accin de guardar comnmente se llama escribir en memoria y la accin de acceso se le denomina leer en memoria. La informacin guardada puede ser localizada por medio del nmero del cajn que ocupa, se accede de forma aleatoria a la posicin deseada, la cual se conoce como direccin de memoria. En cada direccin de memoria se puede almacenar informacin del tamao de 1 byte. Cmo se optimizo el cdigo: A continuacin se habla del cambio mas significativo. El programa enviado por el profesor realiza el producto de dos matrices aleatoria de tamao n*n, el tamao es ingresado por el usuario. El programa realizaba el producto de la siguiente manera:

En la grafica se observa un producto de una matriz 4*2 y una 2*3, se aclara que el programa realiza el producto de matrices cuadradas, el objetivo de la imagen es mostrar la ubicacin del resultado luego de haber realizado el producto de fila y columna.

Las filas de las matrices son ubicadas en una direccin de memoria, cada posicin ocupa 4 bytes (esto es lo que ocupa un dato de tipo entero en memoria), los datos de una fila dentro de la memoria aparecern cada 4 bytes.

Cada una de las filas ocupa un espacio de memoria diferente.

La matriz B tambin tiene sus propias direcciones de memoria, diferentes a las de A.

Entonces para hallar el resultado del producto que corresponde a la posicin i=1 , j=1 tendramos: Para haber obtenido este valor, la memoria se tuvo que haber ubicado en F0000-FFFFF, y luego ir a la direccin de la fila en la cual esta ubicado el termino b11, realizar el producto, guardarlo, luego ir a la direccin de la siguiente fila donde esta b21 que es diferente a la de b11 y multiplicar, y as sucesivamente hasta llegar a bn1, y sumar todos estos factores. Observemos que la RAM tiene que ir, buscar direccin, devolver el numero deseado, el procesador operar y luego guardar en la memoria cach que es de rpido acceso y es en la cual se guarda la informacin que mas usaremos (para el caso el computador identifica gracias al programa que se usara varias veces los clculos que se van a llevar a cabo). Luego volver, buscar de nuevo, llevar al procesador y sumarle lo que tena antes en la cach del primer producto que realic, es un camino bastante largo. Un camino mas corto es usar la transpuesta de la matriz B y hacer el producto. Observemos que la nueva matriz B seria:

B tiene diferentes direcciones que B. Luego, observamos que al realizar el producto A*B, obtendremos el mismo resultado pero de una forma mas rpida. El porqu se debe a que ya no tenemos que hacer tantos recorridos, pues nos situamos en dos filas, la primera de A y la de B, no vamos a cambiar esas dos direcciones de memoria (F0000-FFFFF, A0000-AFFFF), vamos a recorrerlas cada 4 bytes multiplicando posicin a posicin y realizamos una sumatoria de las mismas. (Un nmero entero ocupa 4 bytes). La solucin propuesta es bastante razonable.

Vous aimerez peut-être aussi