SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
Programación paralela: implementación de clúster para la
resolución de multiplicación de matrices
1

1

1

Gonzalo R. Zenón & Ricardo G. Apaza & Walter C. Tejerina

(1) Grupo de investigación Clustear, Facultad de Ingeniería, Universidad Nacional de Jujuy.
zenewlight@hotmail.com, linux_perico@hotmail.com & walterct87@hotmail.com

RESUMEN: La multiplicación de matrices es una de las operaciones más representativas para muchas
aplicaciones, ya que involucran un elevado cálculo de datos con complejidad creciente de acuerdo a las
dimensiones de las mismas. En la actualidad, dependiendo de las necesidades de cada aplicación, pueden
encontrarse métodos variados para estos cálculos. En el presente trabajo se mostrará las diferencias entre
un entorno paralelo, mediante una interfaz de paso de mensajes, tanto con un solo computador como con
un arreglo de procesadores interconectados.
1

INTRODUCCIÓN

Casi desde el principio de la aplicación del
procesamiento paralelo a los problemas
numéricos se han estudiado, diseñado,
implementado y experimentado distintas formas
de paralelizar la multiplicación de matrices.
Desde el punto de vista del problema mismo, es
muy útil tener una optimización de esta operación
matricial, ya que siempre es posible encontrarla
en las distintas aplicaciones que se deben resolver
en el ámbito numérico.
Desde un punto de vista más cercano a la
investigación, este problema tiene muchas
características que lo hacen adecuado para su
estudio extensivo e intensivo. Las dos más
importantes son su simplicidad, y la posibilidad
de extender sus resultados a otras operaciones
similares.
La multiplicación de matrices es utilizada
ampliamente en distintas aéreas de computo,
donde la cantidad de cálculos en un corto tiempo
es crucial, ya que esto conlleva un alto costo de
procesamiento, y más si de estos cálculos
dependen otros sistemas por lo que se busca una
respuesta ágil a estas operaciones. En este ámbito
la búsqueda de la mayor eficiencia a partir de la
paralelización, ha sido el centro de un gran
esfuerzo en el tiempo.
El presente documento, fue realizado basándonos
en un algoritmo de cálculo de multiplicación de
matrices, mediante la interfaz de paso de
mensajes entre un proceso padre y los esclavos.

2

ESPECIFICACIÓN DE HARDWARE

Las características de las dos computadoras
utilizadas para la realización de dicho trabajo,
pueden observarse en la Tabla 1.
Tabla 1. Características más resaltantes de las
computadoras utilizadas durante las pruebas
realizadas.
Maquina1
Maquina2
Memoria
2GB
512 MB
Intel DualCore Intel Celeron
Procesador
1.86 Ghz
1.7 Ghz
Disco Duro
250 Gb
10 Gb
Los componentes utilizados para el armado de la
red de trabajo fueron, un router wifi TPLink de 4
salidas y 2 cable utp categoría 5 de 1 metro de
longitud cada uno.
2.1

Métricas utilizadas

Las métrica utilizada para nuestra comparación
de rendimiento en este trabajo fue el tiempo de
ejecución de multiplicación de matrices en cluster
y en una maquina común (notebook)
Para la realización de las pruebas se construyó
una red con dos computadoras, una de escritorio y
una
notebook obviamente
de
distintas
características interconectadas entre sí por medio
de una Lan Ethernet sencilla como se muestra en
la Figura 1. Se hicieron correr distintos procesos
en cada máquina, teniendo de esta manera un
total de 9 procesos para la realización de las
pruebas.
Para llegar a ciertas conclusiones con respecto al
tiempo lo primero que debemos hacer es analizar
los resultados obtenidos en las ejecuciones de los
algoritmos. Sólo de este modo podremos
demostrar la utilidad y potencialidad del
procesamiento paralelo ejecutado en redes. Cabe
resaltar que dicha configuración se realizó bajo el
entorno Linux
El diagrama de conexión utilizado para la
realización del cluster, es el que se muestra en la
Fig. 1.

para ejecutar el compilador de C++ (g++),
Openssh-Server
sirve
para
realizar
comunicaciones cifradas a través de la red entre
nodo maestro y nodos esclavos, usando el
protocolo ssh, Mpich2 es una implementación de
mpi, una norma estándar de paso de mensajes
para aplicaciones de memoria distribuida que
utilizan computación paralela, y Nfs-Common es
un paquete que se instala en los nodos esclavos,
para lograr que estos se conecten con los recursos
nfs del servidor.
4 PRESENTACIÓN DEL PROBLEMA:
MULTIPLICACIÓN DE MATRICES

Figura 1. Diagrama de conexión utilizado para la
comunicación entre las computadoras

3

La multiplicación de matrices no es muy
complicada, por lo que se detalla a continuación.
Dada una matriz A(m x r) de m filas y r columnas,
donde cada uno de sus elementos se define como
aij con 1 i m, y 1 j r; y una matriz B(r x n)
de r filas y n columnas, donde cada uno de sus
elementos se denota bij con 1 i r, y 1 j n;
la matriz C resultante de la operación de
multiplicación de las matrices A y B, C = A B,
es tal que cada uno de sus elementos que se
denota como cij con 1 i m, y 1 j n, y se
calcula a través de la ecuación (1).

CONFIGURACIÓN DE CLUSTER

Para la configuración del clúster se optó por un
modelo de clúster heterogéneo, debido a que se
disponía de computadores con diferentes
características de hardware, y con sistemas
operativos Linux de diferentes versiones (Ubuntu
12.04 y 11.10).
Además se utilizó el tipo de configuración
beowulf, debido a que este usa una red común
para realizar la comunicación. De esta forma se
obtuvo un clúster económico.
Para lograr la configuración del clúster, se
procedió con la ejecución de una serie de pasos,
como lo muestra la página web configuración de
un cluster y ejecución de aplicaciones paralelas.
Es importante aclara que cada instructivo, se
encontraba incompleto, es por ello que se
procedió con la combinación de algunos pasos de
dichos instructivos, logrando de esta forma
configurar el clúster.
Las herramientas necesarias para configurar el
clúster fueron, según lo muestra la página web
multiprocesamiento: Nfs-kernel-server es un
protocolo de sistemas de ficheros en red que
permite a un usuario en un ordenador cliente
acceder a ficheros en red. En este caso sirve para
que los nodos esclavos tengan acceso al nodo
servidor, Build-Essential es un paquete que sirve

(1)
Analizando, se puede observar que este tipo de
operaciones se adaptan perfectamente a
procesamientos paralelos porque los cálculos
necesarios para multiplicar matrices no son
totalmente dependientes de otros resultados.
En nuestro caso como estamos multiplicando
matrices cuadradas de orden n, podemos calcular
la cantidad de operaciones necesarias para llegar
a la matriz resultante, y es exactamente como lo
muestra Tinetti (2003):
Cantidad de operaciones = 2n3 - n2
Donde n es la dimensión de las matrices
cuadradas en este caso.
Esta cantidad de operaciones es la que
normalmente se conoce como complejidad de la
multiplicación de matrices. Esto es importante ya
que depende de esto el tiempo que un computador
necesitara para resolver esta multiplicación.
Si estas operaciones se realizarían en un
computador que ejecuta programas secuenciales
basados en asignaciones teniendo en cuenta que
la multiplicación se realiza como se indica en la
ecuación (2).
Cij = cij + aik x bkj;

(2)

Cij: Matriz resultante, i: número de fila y j:
número de columna.
Implicaría la ejecución de 2n3 operaciones
aritméticas. Como se observa generalmente no
siempre coinciden con la formula anterior cuando
de ejecuciones de programas se refiere, ya que
esta última tarda más en obtener los resultados.
El presente trabajo trata mejorar los tiempos de
respuestas en este tipo de problemas obteniendo
resultados óptimos en base a la ejecución
concurrente de procesos y computadores.
5

DISEÑO DEL ALGORITMO

Se utilizó la multiplicación de matrices comunes
NxN, una implementación se realizara en una
sola máquina y veremos si es posible agilizarlo
mediante la paralelización de tareas utilizando un
cluster maestro y otras Pcs llamadas nodos
esclavos. En dicho algoritmo definimos en forma
constante el número de filas y columnas de las
matrices, luego en distintas compilaciones le
damos distintos tamaños para obtener distintas
medidas de tiempos. Se realizaron los cálculos
con nueve procesos, a cada uno se reparte una
porción de la matriz y se realiza la multiplicación,
luego los resultados son devueltos al nodo
maestro que realiza la impresión de la matriz final
en un archivo de texto. Las funciones del estándar
Mpi como lo muestra Puerta (2003), para
realizar dichos cálculos fueron:
MPI_Comm_rank: Retorna el identificador de un
proceso dentro de un comunicador.
MPI_Comm_size: Determina el número de
procesos pertenecientes al grupo asociado a un
comunicador.
MPI_Get_processor_name: Retorna el nombre
del procesador donde está ubicado el proceso.
MPI_Isend: Inicializa el envío de un mensaje no
bloqueante a un proceso, esto quiere decir que la
ejecución del programa no se bloquea con la
ejecución de la llamada.
MPI_Recv: Esta función recibe mensajes de tipo
bloqueante, esto quiere decir que la ejecución del
programa se bloquea hasta que el mensaje ha sido
recibido.
En otras palabras, para que el proceso A mande
un mensaje al proceso B el argumento
comunicador que A usa en MPI_Isend() debe ser
idéntico al argumento que B usa en MPI_Recv().
MPI_Bcast: Envía un mismo mensaje desde un
proceso a todos los demás. Es una operación de
comunicación colectiva.
Habrá un proceso maestro con identificador cero,
que enviara las tareas a los esclavos, los cuales
tendrán un identificador distinto de cero.
Este programa utiliza el paradigma de maestroesclavo. En el paradigma maestro-esclavo
tenemos un thread/proceso distinguido, llamado
maestro, que pone en marcha otros procesos,

llamados esclavos, les asigna trabajo y recolecta
las soluciones parciales que generan. Estos
procesos son independientes unos de otros.
6

DISTRIBUCIÓN DEL TRABAJO

El proceso maestro es quien organiza el trabajo a
realizar, inicializando los operandos de
multiplicación y lo va distribuyendo entre los
procesos esclavos, es decir lo que realiza el
maestro es calcular la porción para cada uno de
los esclavos, sin incluirse. Si las filas de la matriz
A no son divisibles por la cantidad de esclavos,
el último esclavo recibe las filas excedentes, caso
contrario las filas serán repartidas de igual forma
para todos los procesos esclavos. A continuación
se envían los datos necesarios para calcular la
cantidad de filas en los procesos. Luego se
transmite los datos de la matriz B a todos los
procesos, se procede con la ejecución de los
procesos esclavos, en donde se recibirán los
datos necesarios para calcular la matriz C
resultante, iterando de acuerdo a los datos
recibidos y enviando los datos procesados al
maestro. El proceso maestro es quien reúne los
datos procesados por los esclavos, culminando
de esta forma con la multiplicación de las
matrices en forma paralela.
7

ANALISIS DEL PROBLEMA

Por lo general cuando se resuelve problemas de
multiplicación de matrices se realizan en forma
secuencial, tomando elementos de la primera
matriz y la segunda siguiendo un orden
determinado para obtener la matriz resultante.
Pero en nuestro caso de estudio la cuestión se
complica, cuando las dimensiones de las mismas
aumentan exponencialmente y más si se quiere
resolver mediante un programa computacional
con los paradigmas clásicos secuenciales.
Una solución al problema de ejecución secuencial
de una multiplicación de matrices seria,
aprovechar de la idea de un cierto paralelismo
que ofrecen los hilos, es decir, crear varios
procesos ligeros que comparten un espacio
común de memoria y asignar una porción de
trabajo a cada uno de ellos y de esta forma
resolver con un pequeño aumento en la velocidad
problemas con grandes dimensiones.
La otra solución y la que utilizamos en este
artículo viene planteado desde el punto de vista
del intercambio de mensajes entre procesos para
compartir los datos, realizar los cómputos
necesarios y unir los resultados de nuevamente en
un proceso padre o maestro. Para tal efecto hemos
utilizado la Interfaz de Paso de Mensajes (MPI)
que es una de las más utilizadas hoy en día para el
intercambio de mensajes a la hora de implementar
un algoritmo paralelo.
En el algoritmo propuesto se tiene en cuenta la
cantidad de procesos a distribuir los datos de las
matrices, para que estos calculen su parte
correspondiente y finalmente se unan en el
proceso padre o maestro en la matriz resultante.
Lo interesante de este algoritmo para el cálculo de
multiplicación de matrices, es que de acuerdo a la
cantidad de procesos que se requiera, estos se
ejecutan en las distintas maquinas del clúster
configurado, tratando de balancear la ejecución
entre los distintos procesadores disponibles.
Además, como las salidas son extensas se decidió
guardar en archivos separados a cada matriz.
Todos los datos obtenidos fueron analizados, y se
encuentran reflejados en el presente documento.
8

ANALISIS DE RESULTADOS

Cuando los procesos culminan su tiempo de
procesamiento, envían su resultado local al
proceso cero mediante un mensaje no bloqueante.
El proceso cero recoge dichos resultados locales,
los guarda en una matriz resultante e imprime el
resultado global en archivo de texto. Una vez
realizado esto el programa termina.
Al analizar los distintos tiempos obtenidos como
lo muestra en la Tabla 2, nos percatamos que se
encuentra una mejora en el tiempo de ejecución,
cuando los valores del tamaño de las matrices
empiezan a ser mayores, en el caso de una sola
maquina los valores de rendimiento tienden a
alejarse cada vez más significativamente, con lo
que el costo computacional en un entorno de una
sola maquina se vuelve inapropiado.
Otra observación con respecto al tiempo de
ejecución es que la versión que se ejecutó en
cluster en un principio tarda más como se muestra
en la Fig. 2 y por lo tanto el coste computacional
asociado también. Cuantos más nodos intervienen
en la ejecución menor es el tiempo de ejecución.

Sin embargo el coste aumenta gradualmente, por
lo tanto deberíamos emplear más o menos nodos
esclavos dependiendo de la necesidad que
tengamos de acelerar el procesamiento y de los
recursos que podamos utilizar, intentando llegar a
un compromiso entre rendimiento y coste que sea
óptimo para nuestras necesidades.
Tabla 2. Tiempos de ejecución en milisegundos –
Multiplicación de matrices.
Dimensión
de matrices
(NxN)
100
200
300
400
500
600
700
800
900
1000
1100
1200
1300
1400
1500
1600
1700
1800
1900
2000
2100
2200
2300
2400
2500

Tiempos de ejecución en
milisegundos (Ms)
Cluster
Maquina 1
65.437
11.576
216.238
117.490
660.619
591.061
1175.836
873.057
2832.324
1767.430
3340.276
2605.753
5635.443
4991.344
7060.987
6838.067
11293.440
11129.352
13489.475
13150.818
19382.907
25248.289
20827.049
30278.202
31591.461
33392.365
34233.110
36040.208
46169.254
48574.480
57988.904
68176.690
68686.980
82679.934
70906.676
98964.491
94716.344
120971.949
95382.402
130809.741
128816.283
173628.497
133977.829
204738.963
182178.878
248056.754
301571.432
384512.850
324535.481
391710.398
Figura 2. Tiempos de ejecución de la aplicación de multiplicación de matrices en la maquina 1 y cluster.

9

CONCLUSIONES

En este trabajo en donde se realizó una
distribución de datos y división de cómputo para
lograr la paralelización, se concluyó que el
tiempo de ejecución de una aplicación paralela
ejecutada en un cluster, no siempre es menor al de
una aplicación ejecutada en una sola máquina,
además esta depende de la complejidad del
problema de la aplicación.
Por lo cual concluimos que una aplicación
paralela no siempre es eficiente, ya que
dependería del número de procesos en que se
ejecuta y también de las dimensiones que tengan
las matrices. Mientras mayor sea el número de
procesos existentes, y menor sea la cantidad de
procesadores, puede tardar más tiempo la
ejecución de una aplicación paralela.
En cuanto al algoritmo utilizado para realizar la
multiplicación de matrices, puede verse de
acuerdo a los resultados obtenidos en la Tabla 2,
que no existe una diferencia demasiada marcada
entre la aplicación ejecutada en el cluster y en una
sola máquina, hasta antes de la dimensión 1600
de cálculo de las matrices. A partir de dicha
dimensión, la aplicación ejecutada en el cluster,
empieza a presentar un mejor desempeño estable,
teniendo en cuenta el tiempo de ejecución, a partir
de este punto en donde se comienza a ver el
rendimiento del cluster.
También, podemos decir que la paralelización
parece ser la tendencia cuando se habla de
cálculos muy complejos a nivel computacional,
los cuales llevarían un gran tiempo si no se
hicieran en un cluster, es por ello importante
identificar aquellas tareas que son independientes
unas de otras, y poder de esta forma obtener un
gran incremento en el rendimiento, lo cual es
fácilmente observable en los resultados obtenidos
en este trabajo.
Como un futuro trabajo, se podría realizar
pruebas en un mayor número de máquinas para
poder obtener resultados aún más significativos.
También sería muy interesante obtener resultados,
utilizando diversas maquinas distribuidas a lo
largo de una Wan, es decir, pruebas utilizando
nodos que se encuentran en Internet.
Por último, la realización de un clúster fue una
gran experiencia, en donde se obtuvo nuevos
conocimientos, despertando en nosotros un
interés en el campo de la investigación

10 REFERENCIAS
Configuración de un cluster y ejecución de
aplicaciones
paralelas,
https://docs.google.com/file/d/0BmQXi4VGfRdZjY3NTA0YWMtOTMwZS00
MmNmLWI1MTItNzAxNzZiZDVjODFj/edit?h
l=en_US&pli=1, 19/07/12.
Multiprocesamiento,
http://www.slideshare.net/rfsolano/programacinparalela, 04/07/12.
Puerta V. F., Procesamiento Paralelo en Redes
Linux Utilizando MPI, página 47, 2004.
Tinetti F. G., Cómputo Paralelo en Redes Locales
de Computadoras, Universidad Autónoma de
Barcelona, página 18, 2003.

Más contenido relacionado

La actualidad más candente

Centro de computo adquicicion de software y hardware
Centro de computo adquicicion de software y hardwareCentro de computo adquicicion de software y hardware
Centro de computo adquicicion de software y hardwareLuis Alberto HeMo
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPUEduardo Suarez
 
Estrategias de búsqueda
Estrategias de búsquedaEstrategias de búsqueda
Estrategias de búsquedaozkar21
 

La actualidad más candente (7)

Partes De Un Ordenador
Partes De Un OrdenadorPartes De Un Ordenador
Partes De Un Ordenador
 
Jerarquia de memorias
Jerarquia de memoriasJerarquia de memorias
Jerarquia de memorias
 
Centro de computo adquicicion de software y hardware
Centro de computo adquicicion de software y hardwareCentro de computo adquicicion de software y hardware
Centro de computo adquicicion de software y hardware
 
Procesador
ProcesadorProcesador
Procesador
 
Ciclo de instrucciones CPU
Ciclo de instrucciones CPUCiclo de instrucciones CPU
Ciclo de instrucciones CPU
 
TIPOS DE MEMORIA
TIPOS DE MEMORIATIPOS DE MEMORIA
TIPOS DE MEMORIA
 
Estrategias de búsqueda
Estrategias de búsquedaEstrategias de búsqueda
Estrategias de búsqueda
 

Similar a Multiplicacion de matrices: Implementacion en cluster

Programacion en ambientes heterogeneos
Programacion en ambientes heterogeneosProgramacion en ambientes heterogeneos
Programacion en ambientes heterogeneositatitat
 
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaPaper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaFcoKraken
 
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaPaper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaFcoKraken
 
Paralelismo
ParalelismoParalelismo
Paralelismoahawhn
 
Incremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-VectorIncremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-VectorSotero Ordones
 
Parallel Programming Plataforms
Parallel Programming PlataformsParallel Programming Plataforms
Parallel Programming PlataformsVeronica Ramirez
 
PROGRAMACIÓN PARALELA
PROGRAMACIÓN PARALELAPROGRAMACIÓN PARALELA
PROGRAMACIÓN PARALELARaquel Solano
 
Exposicion Multi
Exposicion MultiExposicion Multi
Exposicion MultiUniversity
 
Análisis de algoritmo
Análisis de algoritmoAnálisis de algoritmo
Análisis de algoritmoGaston Demundo
 
Actividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos ParalelosActividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos ParalelosCarlosHung9
 
Algoritmo Paralelo
Algoritmo ParaleloAlgoritmo Paralelo
Algoritmo Paralelojccapa99
 
Electrónica digital: Sistemas digitales
Electrónica digital: Sistemas digitales Electrónica digital: Sistemas digitales
Electrónica digital: Sistemas digitales SANTIAGO PABLO ALBERTO
 
Sistemas digitale 2009
Sistemas digitale 2009Sistemas digitale 2009
Sistemas digitale 2009cruzmario
 

Similar a Multiplicacion de matrices: Implementacion en cluster (20)

Programacion en ambientes heterogeneos
Programacion en ambientes heterogeneosProgramacion en ambientes heterogeneos
Programacion en ambientes heterogeneos
 
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaPaper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
 
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaPaper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
 
Paralelismo
ParalelismoParalelismo
Paralelismo
 
3 unidad so2
3 unidad so23 unidad so2
3 unidad so2
 
Incremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-VectorIncremento en el desempeño de la multiplicación Matriz-Vector
Incremento en el desempeño de la multiplicación Matriz-Vector
 
Practica4
Practica4Practica4
Practica4
 
Parallel Programming Plataforms
Parallel Programming PlataformsParallel Programming Plataforms
Parallel Programming Plataforms
 
PROGRAMACIÓN PARALELA
PROGRAMACIÓN PARALELAPROGRAMACIÓN PARALELA
PROGRAMACIÓN PARALELA
 
Intro Mpi
Intro MpiIntro Mpi
Intro Mpi
 
Exposicion Multi
Exposicion MultiExposicion Multi
Exposicion Multi
 
Análisis de algoritmo
Análisis de algoritmoAnálisis de algoritmo
Análisis de algoritmo
 
Actividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos ParalelosActividad 14: Diseño de Algoritmos Paralelos
Actividad 14: Diseño de Algoritmos Paralelos
 
Algoritmo Paralelo
Algoritmo ParaleloAlgoritmo Paralelo
Algoritmo Paralelo
 
Algoritmos paralelos
 Algoritmos paralelos Algoritmos paralelos
Algoritmos paralelos
 
Presentación1.pptx
Presentación1.pptxPresentación1.pptx
Presentación1.pptx
 
Informe laboratorio 1
Informe laboratorio 1Informe laboratorio 1
Informe laboratorio 1
 
Practica1
Practica1Practica1
Practica1
 
Electrónica digital: Sistemas digitales
Electrónica digital: Sistemas digitales Electrónica digital: Sistemas digitales
Electrónica digital: Sistemas digitales
 
Sistemas digitale 2009
Sistemas digitale 2009Sistemas digitale 2009
Sistemas digitale 2009
 

Último

PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptAlberto Rubio
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 

Último (20)

PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
Sesión La luz brilla en la oscuridad.pdf
Sesión  La luz brilla en la oscuridad.pdfSesión  La luz brilla en la oscuridad.pdf
Sesión La luz brilla en la oscuridad.pdf
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 

Multiplicacion de matrices: Implementacion en cluster

  • 1. Programación paralela: implementación de clúster para la resolución de multiplicación de matrices 1 1 1 Gonzalo R. Zenón & Ricardo G. Apaza & Walter C. Tejerina (1) Grupo de investigación Clustear, Facultad de Ingeniería, Universidad Nacional de Jujuy. zenewlight@hotmail.com, linux_perico@hotmail.com & walterct87@hotmail.com RESUMEN: La multiplicación de matrices es una de las operaciones más representativas para muchas aplicaciones, ya que involucran un elevado cálculo de datos con complejidad creciente de acuerdo a las dimensiones de las mismas. En la actualidad, dependiendo de las necesidades de cada aplicación, pueden encontrarse métodos variados para estos cálculos. En el presente trabajo se mostrará las diferencias entre un entorno paralelo, mediante una interfaz de paso de mensajes, tanto con un solo computador como con un arreglo de procesadores interconectados. 1 INTRODUCCIÓN Casi desde el principio de la aplicación del procesamiento paralelo a los problemas numéricos se han estudiado, diseñado, implementado y experimentado distintas formas de paralelizar la multiplicación de matrices. Desde el punto de vista del problema mismo, es muy útil tener una optimización de esta operación matricial, ya que siempre es posible encontrarla en las distintas aplicaciones que se deben resolver en el ámbito numérico. Desde un punto de vista más cercano a la investigación, este problema tiene muchas características que lo hacen adecuado para su estudio extensivo e intensivo. Las dos más importantes son su simplicidad, y la posibilidad de extender sus resultados a otras operaciones similares. La multiplicación de matrices es utilizada ampliamente en distintas aéreas de computo, donde la cantidad de cálculos en un corto tiempo es crucial, ya que esto conlleva un alto costo de procesamiento, y más si de estos cálculos dependen otros sistemas por lo que se busca una respuesta ágil a estas operaciones. En este ámbito la búsqueda de la mayor eficiencia a partir de la paralelización, ha sido el centro de un gran esfuerzo en el tiempo. El presente documento, fue realizado basándonos en un algoritmo de cálculo de multiplicación de matrices, mediante la interfaz de paso de mensajes entre un proceso padre y los esclavos. 2 ESPECIFICACIÓN DE HARDWARE Las características de las dos computadoras utilizadas para la realización de dicho trabajo, pueden observarse en la Tabla 1. Tabla 1. Características más resaltantes de las computadoras utilizadas durante las pruebas realizadas. Maquina1 Maquina2 Memoria 2GB 512 MB Intel DualCore Intel Celeron Procesador 1.86 Ghz 1.7 Ghz Disco Duro 250 Gb 10 Gb Los componentes utilizados para el armado de la red de trabajo fueron, un router wifi TPLink de 4 salidas y 2 cable utp categoría 5 de 1 metro de longitud cada uno. 2.1 Métricas utilizadas Las métrica utilizada para nuestra comparación de rendimiento en este trabajo fue el tiempo de ejecución de multiplicación de matrices en cluster y en una maquina común (notebook) Para la realización de las pruebas se construyó una red con dos computadoras, una de escritorio y una notebook obviamente de distintas características interconectadas entre sí por medio de una Lan Ethernet sencilla como se muestra en la Figura 1. Se hicieron correr distintos procesos en cada máquina, teniendo de esta manera un
  • 2. total de 9 procesos para la realización de las pruebas. Para llegar a ciertas conclusiones con respecto al tiempo lo primero que debemos hacer es analizar los resultados obtenidos en las ejecuciones de los algoritmos. Sólo de este modo podremos demostrar la utilidad y potencialidad del procesamiento paralelo ejecutado en redes. Cabe resaltar que dicha configuración se realizó bajo el entorno Linux El diagrama de conexión utilizado para la realización del cluster, es el que se muestra en la Fig. 1. para ejecutar el compilador de C++ (g++), Openssh-Server sirve para realizar comunicaciones cifradas a través de la red entre nodo maestro y nodos esclavos, usando el protocolo ssh, Mpich2 es una implementación de mpi, una norma estándar de paso de mensajes para aplicaciones de memoria distribuida que utilizan computación paralela, y Nfs-Common es un paquete que se instala en los nodos esclavos, para lograr que estos se conecten con los recursos nfs del servidor. 4 PRESENTACIÓN DEL PROBLEMA: MULTIPLICACIÓN DE MATRICES Figura 1. Diagrama de conexión utilizado para la comunicación entre las computadoras 3 La multiplicación de matrices no es muy complicada, por lo que se detalla a continuación. Dada una matriz A(m x r) de m filas y r columnas, donde cada uno de sus elementos se define como aij con 1 i m, y 1 j r; y una matriz B(r x n) de r filas y n columnas, donde cada uno de sus elementos se denota bij con 1 i r, y 1 j n; la matriz C resultante de la operación de multiplicación de las matrices A y B, C = A B, es tal que cada uno de sus elementos que se denota como cij con 1 i m, y 1 j n, y se calcula a través de la ecuación (1). CONFIGURACIÓN DE CLUSTER Para la configuración del clúster se optó por un modelo de clúster heterogéneo, debido a que se disponía de computadores con diferentes características de hardware, y con sistemas operativos Linux de diferentes versiones (Ubuntu 12.04 y 11.10). Además se utilizó el tipo de configuración beowulf, debido a que este usa una red común para realizar la comunicación. De esta forma se obtuvo un clúster económico. Para lograr la configuración del clúster, se procedió con la ejecución de una serie de pasos, como lo muestra la página web configuración de un cluster y ejecución de aplicaciones paralelas. Es importante aclara que cada instructivo, se encontraba incompleto, es por ello que se procedió con la combinación de algunos pasos de dichos instructivos, logrando de esta forma configurar el clúster. Las herramientas necesarias para configurar el clúster fueron, según lo muestra la página web multiprocesamiento: Nfs-kernel-server es un protocolo de sistemas de ficheros en red que permite a un usuario en un ordenador cliente acceder a ficheros en red. En este caso sirve para que los nodos esclavos tengan acceso al nodo servidor, Build-Essential es un paquete que sirve (1) Analizando, se puede observar que este tipo de operaciones se adaptan perfectamente a procesamientos paralelos porque los cálculos necesarios para multiplicar matrices no son totalmente dependientes de otros resultados. En nuestro caso como estamos multiplicando matrices cuadradas de orden n, podemos calcular la cantidad de operaciones necesarias para llegar a la matriz resultante, y es exactamente como lo muestra Tinetti (2003): Cantidad de operaciones = 2n3 - n2 Donde n es la dimensión de las matrices cuadradas en este caso. Esta cantidad de operaciones es la que normalmente se conoce como complejidad de la multiplicación de matrices. Esto es importante ya que depende de esto el tiempo que un computador necesitara para resolver esta multiplicación. Si estas operaciones se realizarían en un computador que ejecuta programas secuenciales basados en asignaciones teniendo en cuenta que la multiplicación se realiza como se indica en la ecuación (2). Cij = cij + aik x bkj; (2) Cij: Matriz resultante, i: número de fila y j: número de columna.
  • 3. Implicaría la ejecución de 2n3 operaciones aritméticas. Como se observa generalmente no siempre coinciden con la formula anterior cuando de ejecuciones de programas se refiere, ya que esta última tarda más en obtener los resultados. El presente trabajo trata mejorar los tiempos de respuestas en este tipo de problemas obteniendo resultados óptimos en base a la ejecución concurrente de procesos y computadores. 5 DISEÑO DEL ALGORITMO Se utilizó la multiplicación de matrices comunes NxN, una implementación se realizara en una sola máquina y veremos si es posible agilizarlo mediante la paralelización de tareas utilizando un cluster maestro y otras Pcs llamadas nodos esclavos. En dicho algoritmo definimos en forma constante el número de filas y columnas de las matrices, luego en distintas compilaciones le damos distintos tamaños para obtener distintas medidas de tiempos. Se realizaron los cálculos con nueve procesos, a cada uno se reparte una porción de la matriz y se realiza la multiplicación, luego los resultados son devueltos al nodo maestro que realiza la impresión de la matriz final en un archivo de texto. Las funciones del estándar Mpi como lo muestra Puerta (2003), para realizar dichos cálculos fueron: MPI_Comm_rank: Retorna el identificador de un proceso dentro de un comunicador. MPI_Comm_size: Determina el número de procesos pertenecientes al grupo asociado a un comunicador. MPI_Get_processor_name: Retorna el nombre del procesador donde está ubicado el proceso. MPI_Isend: Inicializa el envío de un mensaje no bloqueante a un proceso, esto quiere decir que la ejecución del programa no se bloquea con la ejecución de la llamada. MPI_Recv: Esta función recibe mensajes de tipo bloqueante, esto quiere decir que la ejecución del programa se bloquea hasta que el mensaje ha sido recibido. En otras palabras, para que el proceso A mande un mensaje al proceso B el argumento comunicador que A usa en MPI_Isend() debe ser idéntico al argumento que B usa en MPI_Recv(). MPI_Bcast: Envía un mismo mensaje desde un proceso a todos los demás. Es una operación de comunicación colectiva. Habrá un proceso maestro con identificador cero, que enviara las tareas a los esclavos, los cuales tendrán un identificador distinto de cero. Este programa utiliza el paradigma de maestroesclavo. En el paradigma maestro-esclavo tenemos un thread/proceso distinguido, llamado maestro, que pone en marcha otros procesos, llamados esclavos, les asigna trabajo y recolecta las soluciones parciales que generan. Estos procesos son independientes unos de otros. 6 DISTRIBUCIÓN DEL TRABAJO El proceso maestro es quien organiza el trabajo a realizar, inicializando los operandos de multiplicación y lo va distribuyendo entre los procesos esclavos, es decir lo que realiza el maestro es calcular la porción para cada uno de los esclavos, sin incluirse. Si las filas de la matriz A no son divisibles por la cantidad de esclavos, el último esclavo recibe las filas excedentes, caso contrario las filas serán repartidas de igual forma para todos los procesos esclavos. A continuación se envían los datos necesarios para calcular la cantidad de filas en los procesos. Luego se transmite los datos de la matriz B a todos los procesos, se procede con la ejecución de los procesos esclavos, en donde se recibirán los datos necesarios para calcular la matriz C resultante, iterando de acuerdo a los datos recibidos y enviando los datos procesados al maestro. El proceso maestro es quien reúne los datos procesados por los esclavos, culminando de esta forma con la multiplicación de las matrices en forma paralela. 7 ANALISIS DEL PROBLEMA Por lo general cuando se resuelve problemas de multiplicación de matrices se realizan en forma secuencial, tomando elementos de la primera matriz y la segunda siguiendo un orden determinado para obtener la matriz resultante. Pero en nuestro caso de estudio la cuestión se complica, cuando las dimensiones de las mismas aumentan exponencialmente y más si se quiere resolver mediante un programa computacional con los paradigmas clásicos secuenciales. Una solución al problema de ejecución secuencial de una multiplicación de matrices seria, aprovechar de la idea de un cierto paralelismo que ofrecen los hilos, es decir, crear varios procesos ligeros que comparten un espacio común de memoria y asignar una porción de trabajo a cada uno de ellos y de esta forma resolver con un pequeño aumento en la velocidad problemas con grandes dimensiones. La otra solución y la que utilizamos en este artículo viene planteado desde el punto de vista del intercambio de mensajes entre procesos para compartir los datos, realizar los cómputos necesarios y unir los resultados de nuevamente en un proceso padre o maestro. Para tal efecto hemos utilizado la Interfaz de Paso de Mensajes (MPI)
  • 4. que es una de las más utilizadas hoy en día para el intercambio de mensajes a la hora de implementar un algoritmo paralelo. En el algoritmo propuesto se tiene en cuenta la cantidad de procesos a distribuir los datos de las matrices, para que estos calculen su parte correspondiente y finalmente se unan en el proceso padre o maestro en la matriz resultante. Lo interesante de este algoritmo para el cálculo de multiplicación de matrices, es que de acuerdo a la cantidad de procesos que se requiera, estos se ejecutan en las distintas maquinas del clúster configurado, tratando de balancear la ejecución entre los distintos procesadores disponibles. Además, como las salidas son extensas se decidió guardar en archivos separados a cada matriz. Todos los datos obtenidos fueron analizados, y se encuentran reflejados en el presente documento. 8 ANALISIS DE RESULTADOS Cuando los procesos culminan su tiempo de procesamiento, envían su resultado local al proceso cero mediante un mensaje no bloqueante. El proceso cero recoge dichos resultados locales, los guarda en una matriz resultante e imprime el resultado global en archivo de texto. Una vez realizado esto el programa termina. Al analizar los distintos tiempos obtenidos como lo muestra en la Tabla 2, nos percatamos que se encuentra una mejora en el tiempo de ejecución, cuando los valores del tamaño de las matrices empiezan a ser mayores, en el caso de una sola maquina los valores de rendimiento tienden a alejarse cada vez más significativamente, con lo que el costo computacional en un entorno de una sola maquina se vuelve inapropiado. Otra observación con respecto al tiempo de ejecución es que la versión que se ejecutó en cluster en un principio tarda más como se muestra en la Fig. 2 y por lo tanto el coste computacional asociado también. Cuantos más nodos intervienen en la ejecución menor es el tiempo de ejecución. Sin embargo el coste aumenta gradualmente, por lo tanto deberíamos emplear más o menos nodos esclavos dependiendo de la necesidad que tengamos de acelerar el procesamiento y de los recursos que podamos utilizar, intentando llegar a un compromiso entre rendimiento y coste que sea óptimo para nuestras necesidades. Tabla 2. Tiempos de ejecución en milisegundos – Multiplicación de matrices. Dimensión de matrices (NxN) 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 Tiempos de ejecución en milisegundos (Ms) Cluster Maquina 1 65.437 11.576 216.238 117.490 660.619 591.061 1175.836 873.057 2832.324 1767.430 3340.276 2605.753 5635.443 4991.344 7060.987 6838.067 11293.440 11129.352 13489.475 13150.818 19382.907 25248.289 20827.049 30278.202 31591.461 33392.365 34233.110 36040.208 46169.254 48574.480 57988.904 68176.690 68686.980 82679.934 70906.676 98964.491 94716.344 120971.949 95382.402 130809.741 128816.283 173628.497 133977.829 204738.963 182178.878 248056.754 301571.432 384512.850 324535.481 391710.398
  • 5. Figura 2. Tiempos de ejecución de la aplicación de multiplicación de matrices en la maquina 1 y cluster. 9 CONCLUSIONES En este trabajo en donde se realizó una distribución de datos y división de cómputo para lograr la paralelización, se concluyó que el tiempo de ejecución de una aplicación paralela ejecutada en un cluster, no siempre es menor al de una aplicación ejecutada en una sola máquina, además esta depende de la complejidad del problema de la aplicación. Por lo cual concluimos que una aplicación paralela no siempre es eficiente, ya que dependería del número de procesos en que se ejecuta y también de las dimensiones que tengan las matrices. Mientras mayor sea el número de procesos existentes, y menor sea la cantidad de procesadores, puede tardar más tiempo la ejecución de una aplicación paralela. En cuanto al algoritmo utilizado para realizar la multiplicación de matrices, puede verse de acuerdo a los resultados obtenidos en la Tabla 2, que no existe una diferencia demasiada marcada entre la aplicación ejecutada en el cluster y en una sola máquina, hasta antes de la dimensión 1600 de cálculo de las matrices. A partir de dicha dimensión, la aplicación ejecutada en el cluster, empieza a presentar un mejor desempeño estable, teniendo en cuenta el tiempo de ejecución, a partir de este punto en donde se comienza a ver el rendimiento del cluster. También, podemos decir que la paralelización parece ser la tendencia cuando se habla de cálculos muy complejos a nivel computacional, los cuales llevarían un gran tiempo si no se hicieran en un cluster, es por ello importante identificar aquellas tareas que son independientes unas de otras, y poder de esta forma obtener un gran incremento en el rendimiento, lo cual es fácilmente observable en los resultados obtenidos en este trabajo. Como un futuro trabajo, se podría realizar pruebas en un mayor número de máquinas para poder obtener resultados aún más significativos. También sería muy interesante obtener resultados, utilizando diversas maquinas distribuidas a lo largo de una Wan, es decir, pruebas utilizando nodos que se encuentran en Internet. Por último, la realización de un clúster fue una gran experiencia, en donde se obtuvo nuevos conocimientos, despertando en nosotros un interés en el campo de la investigación 10 REFERENCIAS Configuración de un cluster y ejecución de aplicaciones paralelas, https://docs.google.com/file/d/0BmQXi4VGfRdZjY3NTA0YWMtOTMwZS00 MmNmLWI1MTItNzAxNzZiZDVjODFj/edit?h l=en_US&pli=1, 19/07/12. Multiprocesamiento, http://www.slideshare.net/rfsolano/programacinparalela, 04/07/12. Puerta V. F., Procesamiento Paralelo en Redes Linux Utilizando MPI, página 47, 2004. Tinetti F. G., Cómputo Paralelo en Redes Locales de Computadoras, Universidad Autónoma de Barcelona, página 18, 2003.