1. ACTIVIDAD 4
Equipo 2
1465105 Carlos Santiago Serrano Ramírez
1441938 Alfonso Manuel Aguilar Leyva
1447717 Ricardo Joan Garza Reyna
1488566 David Stefano muñoz Benavides
1423807Virgilio Ángel de la Garza Quijano
2. MULTIPLICACION DE MATRIZ
Por simplicidad, todo el tiempo trabajaremos
con matrices cuadradas de tamaño n x n.
Consideramos que el número de
procesadores de los que disponen las
máquinas paralelas es p.
Las matrices a multiplicar serán A * B y A * C
para visualizar con mayor facilidad el
funcionamiento de un sistema paralelo.
3. Para llenar las matrices se utilizo el siguiente
algoritmo:
for(int a = 0; a < 100; a++){
for(int b = 0; b < 100; b++){
A[a][b] =
(int)Math.floor(Math.random()*9+1);
B[a][b] =
(int)Math.floor(Math.random()*9+1);
C[a][b] =
(int)Math.floor(Math.random()*9+1);
}
}
4. En la siguiente línea de código se muestra la
creación delThreadPool:
ExecutorService tarea = Executors.newFixedThreadPool(2);
En este caso se utilizaron 2 hilos para resolver
2 tareas la multiplicación de la matriz A * B y
A * C.
A continuación se muestra la parte de código
encargada de llamar a la clase Hilo para que
realice las tareas (en este caso 2 tareas):
for(int i = 0; i < 2; i++){
tarea.submit(new Hilo(i));}
5. La clase que realiza la tarea principal:
class Hilo implements Runnable
Dentro de esta clase se encuentra el
algoritmo para resolver las matrices lo mas
relevante del código es:
for(int i = 0; i < 100; i++){
for(int j = 0; j < 100; j++){
for(int k = 0; k < 100; k++){
Matriz.Res1[i][j] += Matriz.A[i][k] * Matriz.B[k][j];}}}
6.
7.
8. AlgunasTécnicas básicas en las que nos
basaremos para la creación de
un algoritmo paralelo.
Divide and Conquer(Divide yVencerás):
1. Dividir.- Dividir el problema original en sub
problemas mas pequeñas que serán mas fáciles de
realizar.
2.Vencerás.- Resolver los sub problemas
3. Unir.- Combinar las soluciones
9. Conclusiones
El tiempo de ejecución se disminuye según la
cantidad de hilos que se manejen y aumenta
con la cantidad de tareas, también aumenta
con la cantidad de datos a procesar, sin
embargo no es tan relevante como con la
cantidad de tareas a manejar.