said eduardo perez poppe

74
UNIVERSIDAD MAYOR REAL Y PONTIFICIA DE SAN FRANCISCO XAVIER DE CHUQUISACA FACULTAD DE TECNOLOGÍA CARRERA DE INGENIERÍA DE SISTEMAS Perfil de Tesis de Grado Estudio y Análisis de Patrones de Paralelismo en Entornos de Clusters Conformados por Nodos Multi-Núcleo Universitario: Said Eduardo Pérez Poppe Perfil de Tesis de Grado Presentado para Optar al Título Académico de LICENCIADO EN INGENIERIA DE SISTEMAS

Upload: reynaldo-quispe

Post on 10-Jul-2016

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Said Eduardo Perez Poppe

UNIVERSIDAD MAYOR REAL Y PONTIFICIA DE

SAN FRANCISCO XAVIER DE CHUQUISACA

FACULTAD DE TECNOLOGÍA

CARRERA DE INGENIERÍA DE SISTEMAS

Perfil de Tesis de Grado

Estudio y Análisis de Patrones de Paralelismo en Entornos de Clusters Conformados por Nodos Multi-Núcleo

Universitario: Said Eduardo Pérez Poppe

Perfil de Tesis de Grado Presentado para Optar al Título Académico de

LICENCIADO EN INGENIERIA DE SISTEMAS

Septiembre, 2013

Sucre – Bolivia

Page 2: Said Eduardo Perez Poppe

CONTENIDOCAPÍTULO I. INTRODUCCIÓN............................................................................................................ 1

1.1. TÍTULO..............................................................................................................................................1

1.2. ANTECEDENTES................................................................................................................................1

1.3. SITUACIÓN PROBLEMÁTICA..............................................................................................................2

1.4. PROBLEMA CIENTÍFICO.....................................................................................................................6

1.5. OBJETIVOS........................................................................................................................................7

1.5.1. Objetivo General.....................................................................................................................7

1.5.2. Objetivos Específicos..............................................................................................................7

1.6. JUSTIFICACIÓN..................................................................................................................................7

CAPÍTULO II. SUSTENTO TEÓRICO..................................................................................................9

2.1. ANTECEDENTES TEÓRICOS................................................................................................................9

2.2. MARCO TEÓRICO............................................................................................................................10

2.2.1. Introducción..........................................................................................................................10

2.2.2. Generalidades de un Sistema Paralelo..................................................................................11

2.2.3. Clasificación de los Sistemas Paralelos................................................................................12

2.2.4. Paradigmas de Aplicaciones de Cómputo Científico.............................................................13

2.2.5. Clusters de Computadoras....................................................................................................14

2.2.6. Redes de Comunicación de Computadores............................................................................16

2.2.7. Procesadores.........................................................................................................................17

2.2.8. Computadoras Multicore.......................................................................................................18

2.2.9. Modelo de Memoria Compartida..........................................................................................18

2.2.10. Programación Paralela en Computadores Multicore............................................................19

2.2.11. Modelo de Memoria Distribuida...........................................................................................20

2.2.12. Programación Paralela en Clusters......................................................................................21

2.2.13. Programación Paralela en Entornos Híbridos......................................................................23

2.2.14. Patrones de Paralelismo y su Estructura..............................................................................24

2.2.15. Métricas de Rendimiento y Eficiencia...................................................................................26

2.3. HIPÓTESIS.......................................................................................................................................31

CAPÍTULO III. DISEÑO METODOLÓGICO.....................................................................................32

3.1. INTRODUCCIÓN...............................................................................................................................32

3.2. NIVEL Y TIPO DE INVESTIGACIÓN...................................................................................................32

Page 3: Said Eduardo Perez Poppe

3.3. VENTANA DE OBSERVACIÓN Y OPERACIONALIZACIÓN DE VARIABLES..........................................33

3.4. ELECCIÓN METODOLÓGICA............................................................................................................34

3.5. ELECCIÓN DE MÉTODOS.................................................................................................................35

3.6. ELECCIÓN DE TÉCNICAS.................................................................................................................36

3.7. DEFINICIÓN DE FUENTES Y DESARROLLO DE INSTRUMENTOS........................................................36

3.8. DISEÑO DE LA INVESTIGACIÓN.......................................................................................................40

3.9. CRONOGRAMA................................................................................................................................42

BIBLIOGRAFÍA................................................................................................................................... 45

Page 4: Said Eduardo Perez Poppe

ÍNDICE DE FIGURASFIGURA 1.1. EVOLUCIÓN EN LA VELOCIDAD DE LOS PROCESADORES................................................................4FIGURA 1.2. DIAGRAMA CAUSA-EFECTO...........................................................................................................5FIGURA 1.3. ÁRBOL DE PROBLEMAS..................................................................................................................6FIGURA 2.1. TAXONOMÍA DE FLYNN................................................................................................................13FIGURA 2.2. COMPONENTES DE UN CLUSTER...................................................................................................15FIGURA 2.3. ARQUITECTURA DE MEMORIA COMPARTIDA...............................................................................19FIGURA 2.4. MODELO DE EJECUCIÓN DE OPENMP..........................................................................................20FIGURA 2.5. ARQUITECTURA DE MEMORIA DISTRIBUIDA................................................................................21FIGURA 2.6. REPRESENTACIÓN ESQUEMÁTICA DE LA PROGRAMACIÓN MIXTA OPENMP/MPI........................24FIGURA 2.7. ESTRUCTURA MÍNIMA DE UN PATRÓN DE PARALELISMO.............................................................26FIGURA 2.8. SPEEDUP LINEAL, SUBLINEAL Y SUPRALINEAL............................................................................29FIGURA 3.1. PROPUESTA DE MODELO DE SOLUCIÓN........................................................................................41

Page 5: Said Eduardo Perez Poppe

ÍNDICE DE TABLASTABLA 3.1. OPERACIONALIZACIÓN DE LA VARIABLE INDEPENDIENTE ............................................................33TABLA 3.2. OPERACIONALIZACIÓN DE LAS VARIABLES DEPENDIENTES .........................................................34TABLA 3.3. LINEAMIENTOS EPISTEMOLÓGICOS-METODOLÓGICOS ..................................................................39TABLA 3.4. CRONOGRAMA DE TRABAJO .........................................................................................................42

Page 6: Said Eduardo Perez Poppe

CAPÍTULO I

INTRODUCCIÓN

1.1. Título

Estudio y Análisis de Patrones de Paralelismo en Entornos de Clusters Conformados

por Nodos Multi-Núcleo.

1.2. Antecedentes

Hoy en día, el fascinante progreso en las distintas áreas de la ciencia y el conocimiento

humano se debe, entre otros aspectos, a la gran capacidad de cómputo, procesamiento y

almacenamiento con los que se cuenta en la actualidad dentro del campo de la informática.

En este entendido, aspectos como el tratamiento de señales, las predicciones

climatológicas, la simulación de circuitos electrónicos, los servicios Web que necesitan

respuestas rápidas a cálculos complejos y extensos, son algunos ejemplos de ramas del

desarrollo científico y de ingeniería que son impulsadas y crecen paralelamente al avance

computacional.

Asimismo, muchas de las facilidades con las que cuentan las sociedades son fruto del

incesante avance de la informática por brindar aplicaciones y resultados cada vez más exactos

en tiempos menos prolongados; entre ellas se pueden citar las videoconferencias, el

diagnóstico médico asistido por computador y hasta los videojuegos que hacen uso de la

realidad virtual.

Sin embargo, la constante demanda por aún mejores prestaciones y la creciente

necesidad de ejecutar procesos cada vez más rápidos y precisos ha dado lugar a la búsqueda de

distintos medios que optimicen los métodos y tecnologías existentes, como la fabricación de

ordenadores multi-núcleo o multicore, el desarrollo de servidores formados por PC´s

interconectadas mediante una red de alta velocidad, denominados clusters, y la evolución de la

programación paralela para optimizar la utilización de todos los recursos disponibles.

1

Page 7: Said Eduardo Perez Poppe

Al mismo tiempo, el bajo costo de los microprocesadores y su gran demanda en el

mercado han permitido la proliferación del uso de clusters en el ámbito académico y la

mayoría de las empresas e industrias que no pueden correr con los altos gastos de adquirir y

mantener una supercomputadora. Este escenario es particularmente aplicable al que vive hoy

en día el proyecto “Biblioteca Digital” de la Carrera de Ingeniería de Sistemas de la

Universidad San Francisco Xavier de Chuquisaca, el cual debe tomar medidas para que el

sistema desarrollado pueda ser capaz de soportar y procesar una gran cantidad de peticiones en

cortos periodos de tiempo.

No obstante, el rendimiento de un cluster puede igualar o superar al de una

supercomputadora, así lo demuestra la selección de las máquinas más poderosas del mundo

realizada por Meuer H., Dongarra J., Strohmaier E. y Simon H. (Noviembre, 2012), en la que

se puede constatar que la mayoría de los ordenadores citados son clusters.

Adicionalmente, las aplicaciones secuenciales son en general ineficientes en áreas

donde se requieren tiempos de respuesta cortos y un mejor aprovechamiento de los medios de

hardware y software disponibles. Así, en la actualidad se cuenta con ordenadores que poseen

procesadores con varios núcleos o cores, donde cada uno de ellos puede ejecutar tareas

simultáneas dentro de un mismo programa, siempre y cuando sean independientes entre sí, por

medio de la utilización de hilos o threads, hecho que optimiza en gran medida el rendimiento

de los sistemas.

En consecuencia, el presente contexto define la importancia de combinar la utilización

de máquinas multi-núcleo como nodos integrantes de clusters que ejecuten aplicaciones bajo

la óptica del paralelismo, para dar solución a problemas donde se requiera un alto nivel de

procesamiento computacional y tiempos óptimos de respuesta, además de seguir patrones que

obedezcan a un mejor rendimiento de los programas.

1.3. Situación Problemática

Sin duda, el permanente desarrollo del conocimiento en las distintas ramas de la

ciencia y el aumento progresivo del tamaño, robustez y complejidad de las aplicaciones que

responden a sistemas cada vez más inteligentes, exigen a su vez un avance y progreso del

poder computacional con el que se cuenta.

2

Page 8: Said Eduardo Perez Poppe

No obstante, si bien hasta hace poco los esfuerzos en este campo estaban concentrados

en construir procesadores cada vez más rápidos, las limitantes físicas y de la propia naturaleza

de construcción de los transistores han frenado paulatinamente la evolución de la velocidad de

los ordenadores, lo que prácticamente ha obligado a la industria a tomar un nuevo rumbo en

esta carrera. Este problema ya fue advertido por Meza (2001) que señala:

“Es posible construir computadores personales cientos de veces más rápidos que los primeros

supercomputadores, también es una realidad que existen limitaciones físicas que impiden un

desarrollo indefinido. Basta con mencionar el límite impuesto por la velocidad de la luz, o el

calentamiento que sufren los componentes debido al alto nivel de integración y

miniaturización” (pp. 2).

Sobre la base de las consideraciones anteriores, desde hace un par de años el desarrollo

de la capacidad de procesamiento de los computadores se enfoca en la utilización de dos o más

núcleos en un mismo microprocesador, tal como afirma Wolfmann (2010):

“La tecnología del silicio ha llegado a un punto tal que hace difícil seguir aumentando la

velocidad de los procesadores. Por ello es que en los últimos años la industria ha vuelto a

tomar la línea de avance por el lado de los multiprocesadores, es decir, disponer de varias

unidades de procesamiento en cada computador, de forma tal que la potencia de cómputo

crezca de la mano del paralelismo. El surgimiento de los procesadores multicore de bajo costo

es tal, que en la actualidad es difícil encontrar procesadores sin esta característica” (pp. 2).

En tal sentido, la superación de la informática de la mano de computadores multicore

es claramente muy superior a sus predecesoras, tal como se puede inferir en la Figura 1.1.

3

Page 9: Said Eduardo Perez Poppe

Figura 1.1. Evolución en la Velocidad de los Procesadores 1

Fuente: Vargas-Félix M., 2011, pp.3.

De este modo, los distintos núcleos del procesador pueden realizar diferentes cálculos,

operaciones o rutinas de manera simultánea dentro de una misma instancia de una determinada

aplicación, aumentando la eficiencia y rendimiento computacional. Empero, esta solución es

aún insuficiente para satisfacer el exponencial crecimiento de la demanda de mayor capacidad

de procesamiento y rapidez en aspectos como el cómputo científico, los grandes servidores

Web que necesitan tener la capacidad de atender las solicitudes de todos sus clientes o los

servidores de archivos que deben realizar una alta cantidad de consultas a los datos en un

mismo instante.

Atendiendo a este punto, se ha visto la necesidad de formar clusters conformados por

nodos multicore como respuesta a esta problemática, no obstante, esta es una tarea nueva y

compleja en el área de la ingeniería de sistemas, ya que solamente puede aprovecharse esta

solución si se logra paralelizar de manera óptima las aplicaciones.

Siguiendo esta misma línea, el funcionamiento y modo de trabajo de un sistema

paralelo en una computadora multicore es distinto al de un cluster, lo que define la necesidad

de contar con parámetros y patrones de paralelismo adecuados que brinden pautas y

referencias de cuándo paralelizar un segmento de la aplicación dentro del nodo o caso

contrario, en varias secciones del cluster.

A todo esto se suma la reciente data de este tema, que está siendo estudiado

actualmente en distintos ámbitos académicos y de la industria alrededor de mundo; como

4

Page 10: Said Eduardo Perez Poppe

resultado de estas investigaciones se puede nombrar algunos patrones de paralelismo como

Task Decomposition Pattern, Data Sharing Pattern o Design Evaluation Pattern.Pero aún cuando estos primeros patrones son un gran avance para este nuevo campo de

investigación, los mismos no toman en cuenta aspectos que afectan directamente al

rendimiento de las soluciones, como el protocolo de comunicación entre los nodos y tópicos

relacionados con la lógica del paralelismo, que en algunos casos como los estudiados por

Wolfmann (2010), inciden y perturban de manera crítica a la eficiencia y rendimiento de la

aplicación.

A manera de síntesis, el siguiente diagrama causa-efecto representa el contexto

planteado en los anteriores apartados.

Figura 1.2. Diagrama Causa-Efecto 2

Fuente: Elaboración Propia.

En conclusión, la creciente demanda por aplicaciones y soluciones con mayor

capacidad de procesamiento y menores tiempos de respuesta, junto con la imposibilidad física

5

Page 11: Said Eduardo Perez Poppe

de fabricar procesadores más rápidos, han dado como consecuencia la necesidad de resolver

esta insuficiencia por medio del empleo de sistemas paralelos bajo entornos híbridos de

clusters formados por nodos multicore, lo cual es una tarea compleja y nueva en el ámbito de

la ingeniería de sistemas que carece de patrones de paralelismo que tomen en cuenta los

factores presentes en estos entornos.

Como resultado de estos razonamientos, la problemática que se desea atacar en este

trabajo gira entorno a la demanda insatisfecha de mayores prestaciones de cómputo científico;

asimismo, dada la limitante tecnológica de no poder fabricar mejores procesadores y el

impedimento económico del alto costo que implica el mantenimiento y adquisición de

supercomputadores, la presente tesis se centrará en atender la necesidad de patrones de

paralelismo más completos y robustos. Así, el siguiente árbol resume toda la problemática

proyectada en la investigación.

Figura 1.3. Árbol de Problemas 3

Fuente: Elaboración Propia.

1.4. Problema Científico

¿El uso de un determinado patrón de paralelismo bajo entornos híbridos de clusters

conformados por nodos multicore, así como su implicancia con la red de comunicación, afecta

directamente al rendimiento y la eficiencia de las aplicaciones?

6

Page 12: Said Eduardo Perez Poppe

1.5. Objetivos

1.5.1. Objetivo General

Diseñar un nuevo patrón de paralelismo que tome en cuenta los factores influyentes

en la eficiencia y rendimiento de aplicaciones bajo entornos híbridos de clusters

conformados por nodos multicore, de manera que se convierta en un aporte para el

desarrollo de la ingeniería de sistemas en esta área.

1.5.2. Objetivos Específicos

Presentar, analizar y comprender las características y tendencias actuales de la

programación paralela, los patrones de paralelismo existentes, así como los

conceptos y funcionamiento de los clusters de nodos multi-núcleo.

Seleccionar y establecer los procedimientos metodológicos que permitan recolectar

los datos necesarios para analizar la incidencia del empleo de patrones de

paralelismo en soluciones sobre clusters compuestos por ordenadores con múltiples

núcleos.

Interpretar y valorar los datos, información y resultados provenientes de la

comparación y análisis crítico de los distintos patrones de paralelismo en entornos

heterogéneos, tomando en cuenta los factores relacionados con la red de

comunicación, lógica de paralelismo, rendimiento y eficiencia.

Ajustar y Validar un nuevo patrón de paralelismo en entornos híbridos de clusters

de nodos multicore que mejore las prestaciones de sus predecesores y tome en

cuenta los factores que afectan al rendimiento y eficiencia de las aplicaciones.

1.6. Justificación

El presente trabajo tiene su campo de aplicación en el área de ingeniería de sistemas y

será de importancia para el desarrollo óptimo de soluciones en las cuales sea imprescindible

7

Page 13: Said Eduardo Perez Poppe

paralelizar las operaciones con el fin de obtener un mejor rendimiento y usar clusters de

ordenadores para aumentar la eficiencia de los sistemas de cómputo.

De este modo, en el campo tecnológico, esta tesis contribuirá al progreso y

perfeccionamiento del desarrollo de software destinado a atender los requerimientos de

empresas que dependen de una capacidad de cómputo grande y tiempos de respuesta cortos

para su correcto funcionamiento y éxito en el mercado.

Por su parte, uno de los principales aportes del trabajo radica en el ámbito

metodológico, debido a que se presentará y defenderá un patrón de paralelismo válido y

confiable para el desarrollo de aplicaciones de este tipo; además, todas las nociones expuestas

en la investigación abrirán el camino para la exploración y desarrollo de nuevos trabajos

acerca de esta nueva y compleja área de la ingeniería.

Dentro de este orden de ideas, al presentarse un patrón generalizable que aportará al

saber científico y tendrá como intención llenar los vacíos de conocimiento en el ámbito de la

programación paralela bajo entornos heterogéneos, es innegable el aporte teórico-científico

que lleva consigo la realización de la investigación.

No obstante, es igual de importante resaltar la connotación práctica que tendrá el

trabajo, ya que servirá como base para desarrollar herramientas que permitan atender

necesidades explícitas y latentes que están presentes en la actualidad.

8

Page 14: Said Eduardo Perez Poppe

CAPÍTULO II

SUSTENTO TEÓRICO

2.1. Antecedentes Teóricos

Dentro del campo del paralelismo, los primeros autores que desarrollaron un primer

acercamiento a este tema fueron Singh A., Schaeffer J. y Szafron D. (1996), los cuales

aplicaron un modelo de programación basado en templates dentro de un entorno paralelo.

El mismo año, Siu S., De Simone M., Goswami D. y Singh A. introdujeron en tema de

debate por primera vez en el contexto mundial, el concepto de “diseño de patrones para la

programación paralela”, en la Conferencia Internacional sobre Técnicas y Aplicaciones de

Procesamiento Paralelo y Distribuido, llevada a cabo en California – Estados Unidos.

Este tema, quedó en suspenso y en proceso de investigación hasta que Fayad M.,

Schmidt D., y Johnson R. (1999) desarrollaron un patrón de paralelismo basado en conceptos

de framework; pero no fue hasta el año 2002 que se presentaron resultados tangibles del

estudio de la aplicabilidad de patrones de diseño en el ámbito de la programación paralela, por

parte de Bromling S., MacDonald S., Anvik J., Schaeffer J., Szafron D. y Tan K. en la

Conferencia Internacional de Paralelismo y la 17° Conferencia Internacional de Software

Automatizado de la IEEE efectuada el mismo año.

Sobre la base de estos estudios, a partir del año 2004 se generan muchas más

investigaciones en este campo, donde resaltan Mattson T., Sanders B., y Massingill B. (2004)

que defienden patrones de paralelismo como Group Task Pattern, Order Task Pattern, Task

Decomposition Pattern o Data Decomposition Pattern.

En la actualidad, el grupo de investigación de la Universidad de Berkeley – California,

denominado Parallel Computing Laboratory (Parlab), ha desarrollado el patrón Dense Linear

Algebra Pattern. Dentro de este ambiente, existen otros centros de investigación que se

encargan de mejorar patrones ya establecidos, como es el caso del Universal Parallel

Computing Research Center (UPCRC) perteneciente a la Universidad de Illinois.

Al mismo tiempo, la importancia de este tema se refleja en el interés de las grandes

empresas y compañías de desarrollo de software por los trabajos e investigaciones presentadas

9

Page 15: Said Eduardo Perez Poppe

en los workshops anuales de paralelismo a nivel mundial denominados Para-PLoP, que se

efectúan desde el 2009.

No obstante, Wolfmman (2010) ha demostrado que si bien los patrones de paralelismo

actuales son un gran aporte al área de la informática y el cómputo científico, no se consideran

aspectos que inciden directamente a la eficiencia y el rendimiento de las soluciones, tales

como la lógica del paralelismo y sobre todo, los protocolos y estándares relacionados con la

red de interconexión y comunicación.

De este modo, no se ha presentado oficialmente ningún patrón que tome en cuenta

estas consideraciones hasta la fecha. Asimismo, no se conoce ni se ha hecho pública ninguna

investigación o trabajo en el campo problemático específico en el que se desenvolverá la

presente tesis.

2.2. Marco Teórico

2.2.1. Introducción

La presente sección tiene como propósito exponer de manera sistemática, ordenada y

objetiva los elementos teóricos necesarios para el desarrollo del modelo de solución al

problema planteado en la investigación, a través de una revisión literaria exhaustiva sobre

temas de importancia relacionados con el trabajo, lo cual dará lugar a la definición sustentada

del diseño metodológico que se seguirá en la tesis con el fin de poder alcanzar los objetivos

propuestos.

En primera instancia, se contextualizarán las características de un sistema paralelo en

general, así como su clasificación y los paradigmas enfocados al cómputo científico que se

aplican actualmente en esta área. De igual manera, se expondrán los principios fundamentales

y los diferentes tipos de clusters de ordenadores para poder elegir el entorno físico y lógico

más adecuado para el desarrollo correcto de la etapa de experimentación de la presente

investigación.

Luego, se tratarán los aspectos relacionados a la redes de comunicación de

computadoras, juntamente con los estándares y protocolos más sobresalientes en la actualidad.

Bajo este orden de ideas, es necesario desarrollar una clasificación de los procesadores con los

10

Page 16: Said Eduardo Perez Poppe

que se cuenta hoy en día, haciendo énfasis en los multicore, junto con los medios y modelos

para implementar aplicaciones paralelas frente al entorno actual.

Posteriormente, se estudiarán las características, evolución y estructura de los patrones

de paralelismo existentes hoy en día, con el propósito de concluir el marco teórico con el

análisis de las métricas de rendimiento y eficiencia más usadas para entornos híbridos de

clusters de nodos multi-núcleo.

2.2.2. Generalidades de un Sistema Paralelo

Los sistemas paralelos en el ámbito de la informática han surgido como consecuencia

de la creciente necesidad de resolver problemas complejos y tratar con grandes volúmenes de

datos en períodos cortos de tiempo, dada la insuficiencia de los sistemas secuenciales.

Dentro del ámbito técnico, no se debe confundir un sistema paralelo con aquellos que

son concurrentes o distribuidos; al respecto, Jorba J. y Suppi R. (2010) especifica:

“En un sistema paralelo existe procesamiento de cómputo simultáneo físicamente, mientras en

concurrencia el cómputo es simultáneo lógicamente, ya que el paralelismo implica la

existencia de múltiples elementos de procesamiento (ya sean CPU, o computadores enteros)…

Mientras que un sistema distribuido se refiere típicamente a aplicaciones, ejecutándose en

múltiples computadoras (normalmente se implica además heterogeneidad de recursos), que no

tienen por qué estar físicamente en un mismo espacio” (pp. 10).

Por su parte, generalmente también se asocia el término “paralelo” a los sistemas con

altas prestaciones de cómputo donde se hallan involucrados supercomputadores o redes de PC

´s optimizadas. Así la definición que se adoptará en el presente trabajo está de acuerdo con los

razonamientos de Ares G. (2012) y Giménez D., Boratto M. y Coelho L. (2009), quienes están

de acuerdo que un sistema paralelo es un conjunto de procesadores que trabajan de manera

conjunta para la resolución de problemas computacionales.

En base a estas consideraciones, un sistema paralelo puede llegar a ser una sola

computadora, un cluster o cualquier estructura que posea múltiples recursos de procesamiento;

sin embargo, éstas se pueden llegar a clasificarse según parámetros relacionados con la

arquitectura del sistema, tal como se detalla a continuación.

11

Page 17: Said Eduardo Perez Poppe

2.2.3. Clasificación de los Sistemas Paralelos

Hoy en día, si bien algunos autores han propuesto muchas clasificaciones de sistemas

paralelos, prácticamente la totalidad de los entendidos en la materia y los organismos

mundiales de estandarización coinciden en adoptar una categorización en base al tipo de

arquitectura, siguiendo los lineamientos de Flynn (1972).

Taxonomía de Flynn

Esta clasificación se basa en la cantidad de flujos de datos que soporta el sistema y el

número de flujos de instrucciones que se pueden aplicar a dichos datos en un instante. Por lo

tanto, de acuerdo a Flynn (1972) se pueden distinguir cuatro categorías:

o Single Instruction- Single Data (SISD): Presenta una arquitectura básica que

corresponde al diseño serial de Von Neumann, donde en cualquier instante se está

ejecutando una sola instrucción con un único flujo de datos.

o Multiple Instruction- Single Data (MISD): Este tipo de sistemas implica múltiples

procesadores, debido a que su característica fundamental es el tratamiento

diferente de un flujo de datos en un mismo instante; empero, no es posible

encontrar máquinas con este tipo de funcionamiento en la actualidad.

o Single Instruction- Multiple Data (SIMD): Donde una sola instrucción se aplica a

muchos flujos de datos al mismo tiempo, lo cual también involucra múltiple

procesadores. Un ejemplo lógico de este tipo de procesamiento es el tratamiento

de matrices y vectores.

o Multiple Instruction- Multiple Data (MIMD): Es el tipo de sistema paralelo más

completo, ya que puede operar con distintas instrucciones sobre diferentes datos al

mismo tiempo, es decir, tiene la capacidad de ejecutar varios programas a la vez.

Estas consideraciones, se pueden ilustrar en la siguiente figura:

12

Page 18: Said Eduardo Perez Poppe

Figura 2.1. Taxonomía de Flynn 4

Fuente: Jorba J. y Suppi R., 2010, pp.17.

2.2.4. Paradigmas de Aplicaciones de Cómputo Científico

En el marco de la situación problemática que se plantea atacar en la presente tesis, las

aplicaciones paralelas se encuentran íntimamente relacionadas con el cómputo científico, ya

que el progreso en las distintas áreas del conocimiento se desarrolla de la mano de la

superación de los sistemas paralelos; en tal sentido, los paradigmas de desarrollo de

aplicaciones científicas se pueden también considerar como arquetipos de redes de

procesamiento de datos de altas prestaciones bajo el enfoque del paralelismo.

En este propósito, según Rosas C. (2009) se pueden considerar dos tipos de paradigmas

en este campo, el High Throughput Computing (HTC) y el High Performance Computing

(HPC), que si bien traducidos al lenguaje español significan prácticamente lo mismo,

“Computación de Alto Rendimiento”, se diferencian particularmente en que los elementos que

constituyen un sistema HTC se interconectan mediante redes de alta latencia y bajo ancho de

banda, que generalmente se encuentran ampliamente distanciados geográficamente y ejecutan

procesos largos que no necesitan mucha comunicación dentro de la red y duran usualmente

días o semanas.

13

Page 19: Said Eduardo Perez Poppe

En oposición, los sistemas HPC están orientados al cómputo intensivo de datos, donde

se trata de optimizar al máximo todos los elementos de la red, que por lo general están

conectados mediante una distribución de alta velocidad y baja latencia.

Siguiendo esta misma línea, como se puede inferir de los planteamientos hechos hasta

el momento, es indispensable caracterizar las estructuras formadas por PC´s interconectadas

mediante una red de alta velocidad, denominadas comúnmente clusters, que se estudian en el

siguiente subtítulo.

2.2.5. Clusters de Computadoras

De acuerdo a Buyya R (1998):

“Un clúster es un tipo de sistema de procesamiento paralelo o distribuido, que consiste en un

conjunto de ordenadores interconectados que trabajan juntos de manera cooperativa como un

único recurso informático integrado” (pp. 28).

Adicionalmente, los ordenadores que componen un cluster pueden ser heterogéneos y

de ninguna forma son nodos especiales o con características distintas a las de una computadora

personal; con respecto a su arquitectura, son sistemas MIMD de memoria distribuida, en

función a la taxonomía de Flynn.

Además, Singh D., Isaila F., Higuero D., García J. y Bergua B. (2012) hacen énfasis en

los componentes de hardware y software mínimos para el funcionamiento un cluster que son:

los nodos o PC´s componentes, la red de comunicación, el cluster middleware y las

aplicaciones paralelas. Atendiendo a este punto, la Figura 2.2 detalla esta estructura.

14

Page 20: Said Eduardo Perez Poppe

Figura 2.2. Componentes de un Cluster 5

Fuente: Singh D., Isaila F., Higuero D., García J. y Bergua B., 2012, pp.9.

Cabe recalcar, que los nodos no necesariamente deben tener el mismo sistema

operativo; pero un cluster no puede funcionar sin un Single System Image (SSI) que es el

middleware que permite que el sistema funcione de manera que simule una única máquina

frente al usuario y sus aplicaciones.

Tipos de Clusters

Con respecto a los tipos de clusters, usualmente se los clasifica según la función que

cumplen, en tal sentido, González R. y Rodríguez S. (2008) catalogan estos sistemas en tres

grupos:

o Clusters de Alto Rendimiento: Utilizan un red privada de alta velocidad, se

dedican a realizar cálculos intensivos, simulaciones científicas, entre otros.

o Clusters de Balanceo de Carga: Este tipo de sistemas permiten que un conjunto

de nodos o servidores compartan la carga de trabajo o tráfico de sus clientes, a

nivel de aplicaciones o de carga IP.

o Clusters de Alta Disponibilidad: Su función principal es mantener un

determinado servicio o aplicación siempre disponible, debe priorizar la

fiabilidad, disponibilidad, tolerancia a fallos y la redundancia de software y

hardware.

15

Page 21: Said Eduardo Perez Poppe

De igual forma, la red que permite la comunicación entre los nodos también cumple un

papel preponderante en un cluster, tal como indica Wolfmann G. (2010):

“La capacidad de procesamiento de los clusters está dada por la cantidad y capacidad

individual de la computadoras (nodos) que la integran y el rendimiento o capacidad de

transferencia de la red que las comunica” (pp.18).

Como consecuencia, es de importancia analizar los distintos protocolos y

configuraciones de red que puede adoptar un cluster.

2.2.6. Redes de Comunicación de Computadores

Dado que el ancho de banda y la latencia son factores decisivos en un cluster de alto

rendimiento, se han desarrollado muchos estándares con el objetivo de mejorar las

prestaciones de las redes de ordenadores, sin embargo, tres esquemas de trasmisión son los

más utilizados hoy en día según Pfister (2010):

Ethernet: Es un estándar de comunicación muy difundido debido a su bajo costo,

utiliza la técnica de Acceso Múltiple por Detección de Portadora con Detección de

Colisiones (CSMA/CD), que tiene como principal desventaja el hecho de tener

totalmente ocupado el medio de transmisión cuando un nodo está haciendo uso del

canal.

Infiniband: Es un medio de comunicación de alta velocidad, que se encuentra

estandarizado por Infiniband Trade Association (IBTA), que posee latencias teóricas de

160 ns. aproximadamente.

Myrinet: La redes de interconexión que utilizan este estándar funcionan con dos cables

de fibra óptica y todos los nodos integrantes del sistema requieren la incorporación de

un circuito integrado en el CPU; ha tenido mucho éxito en el desarrollo de clusters de

altas prestaciones.

En cuanto a los tipos de conexiones punto a punto y colectivas, ambos presentan

ventajas y desventajas según el caso en particular. A manera de ejemplo, en el caso de una red

punto a punto, se deben utilizar varios envíos punto a punto para resolver un mensaje

colectivo; por el contrario, para una arquitectura colectiva, un mensaje punto a punto genera

una captura del canal común de comunicaciones.

16

Page 22: Said Eduardo Perez Poppe

En otro orden de ideas, la comunicación TCP/IP es considerada como “pesada” para

algunos autores como Singh D. y otros (2012), los cuales sugieren la utilización de nuevos y

poderosos protocolos como Active Messages, creado y difundido por la Universidad de

Berkeley o el estándar Xpress Transport Protocol (XTP) de la Universidad de Virginia.

Hechas las observaciones anteriores sobre la red de interconexión, es preciso tener un

panorama claro y formal de los tipos de procesadores con los que puede contar un computador

personal que forma parte de un cluster.

2.2.7. Procesadores

Dada la evolución actual de la tecnología, los autores Montes E, De Giusti L., De

Giusti A. y Naiouf M. (2012) afirman que un procesador es actualmente un circuito integrado

de alta miniaturización que tiene la suficiente capacidad para catalogarse como una unidad

central de procesamiento (CPU).

Desde una perspectiva lógica funcional, Guerrero J. y Francés J. (2011) descomponen

un procesador en registros, una unidad de control, una unidad aritmético lógica y dependiendo

el procesador, una unidad de punto flotante.

La duración de las instrucciones ejecutadas por un procesador depende, además de su

estructura, de un oscilador de cuarzo interno denominado comúnmente “reloj”, que hoy en día

genera miles de MHz.

Clasificación de los Procesadores

La clasificación de los procesadores que más se acomoda a las intenciones de la

presente investigación es defendida por González R. y Rodríguez S. (2008) que tipifican estos

circuitos integrados por medio de dos razonamientos:

o Por su Tamaño de Palabra: Los procesadores que se manejan comercialmente

en el mercado solo manejan dos tamaños de palabra: de 64 y 32 bits.

Obviamente, los procesadores de 64 bits tienen más capacidad de

procesamiento debido a su mayor tamaño.

o Por su Número de Núcleos: Otra forma de catalogar a los procesadores, es por

el número de núcleos o cores que poseen, simulando la presencia de varios

procesadores dentro de uno solo. Con referencia a lo anterior, un procesador

17

Page 23: Said Eduardo Perez Poppe

dual-core posee dos núcleos inmersos en un mismo integrado; de forma

análoga, un cuad-core ostenta cuatro núcleos.

En el orden de las ideas anteriores, ya no es posible encontrar en el mercado actual

ordenadores que solo posean un núcleo, es por eso que se dará particular importancia en este

análisis a las computadoras multicore.

2.2.8. Computadoras Multicore

La principal estrategia en la actualidad para aumentar las prestaciones de los

ordenadores es la de duplicar o incluso multiplicar los procesadores internos que componen un

mismo circuito integrado, a tal punto que resulta difícil conseguir microprocesadores que no

estén compuestos por al menos dos procesadores. Esta arquitectura con más de un núcleo está

ligada al modelo de memoria compartida, en concordancia con el razonamiento de Baldoni F.

y Romano M. (2012):

“La arquitectura de estos microprocesadores es tal que cada uno de estos puede actuar en

forma independiente en cuanto a los procesos que se ejecuten, ya que tienen su propias

unidades de procesamiento, punto flotante, pipelines, etc, incluso cada core dispone

generalmente de su propia memoria cache, pero en lo referido a la memoria principal del

equipo, es de tipo compartida, por lo que toda la RAM es accesible desde cualquiera de los

procesadores integrantes del CPU. Es por esto que este tipo de computadora

multiprocesadora se denomina como de Memoria Compartida” (pp. 22).

2.2.9. Modelo de Memoria Compartida

El modelo de memoria compartida cuadra perfectamente en el funcionamiento de los

ordenadores multicore, debido a que todos sus núcleos comparten la memoria del computador,

la cual es accesible desde cualquier core, como se puede inferir en la Figura 2.3.

18

Page 24: Said Eduardo Perez Poppe

Figura 2.3. Arquitectura de Memoria Compartida 6

Fuente: González R. y Rodríguez S., 2008, pp.13.

2.2.10. Programación Paralela en Computadores Multicore

Dentro del contexto de los ordenadores multi-núcleo, si bien pueden realizarse

aplicaciones secuenciales, éstas no aprovechan la potencialidad de la programación paralela, al

tener más de un recurso físico que puede trabajar al mismo tiempo. En consecuencia, tal como

afirma Buyya (1998), una de las formas de aprovechar esta ventaja es por medio de la utilización de threads o hilos, que tienen la función de ejecutar tareas de manera independiente compartiendo el mismo recurso de memoria.

Cabe agregar, que el hecho de regirse en un modelo de memoria compartida, implica la

necesidad de existencia de mecanismos de control y exclusión para que más de un thread no

afecte al mismo espacio de memoria en un mismo instante, ya que este hecho provocaría

errores no deseados e inconsistencia en los datos.

En tal sentido, los primeros estándares para la utilización de hilos de ejecución se

desarrollaron en la década de 1990, con el estándar Pthread que define una serie de rutinas

internas para la creación de hilos y la inclusión de una biblioteca que funciones que permite

trabajar y manipular a los mismos. Con el tiempo, el estándar Pthread estuvo casi

exclusivamente restringido al lenguaje C/C++.

Debido a que el estándar Pthread implica un dominio detallado de paralelismo, es

relativamente complejo de utilizar en el desarrollo de software; en oposición, surge el estándar

OpenMP que prácticamente se ha constituido en la manera más difundida a nivel mundial para

desarrollar aplicaciones paralelas en entornos de memoria distribuida.

19

Page 25: Said Eduardo Perez Poppe

OpenMP

En base al análisis de Rannou F. (2008):

“OpenMP es un estándar para programación paralela en sistemas de memoria compartida.

Las aplicaciones desarrolladas con OpenMP son portables a todas las arquitecturas de

memoria compartida que cuenten con un compilador capaz de OpenMP” (pp.3).

La principal ventaja de OpenMP es que sus directivas son insertadas directamente al

código secuencial, facilitando en gran medida su uso. Por lo general, un programa con

OpenMP comienza de manera secuencial y se crean hilos de manera dinámica solamente

cuando se los necesita, para luego volver al desarrollo secuencial de la aplicación, como se

puede observar en la Figura 2.4.

Figura 2.4. Modelo de Ejecución de OpenMP 7

Fuente: Rannou F., 2008, pp.7.

Toda esta lógica de programación paralela no es válida para estructuras cluster, donde

el modelo que se usa es de memoria distribuida.

2.2.11. Modelo de Memoria Distribuida

Dado que en un cluster, la memoria de cada nodo no es accesible de forma directa por

cualquier otro, no se puede obviar el mecanismo de comunicación entre ellos, dado que los

procesos son independientes entre sí, pero en algún momento deben intercambiar o dar a

20

Page 26: Said Eduardo Perez Poppe

conocer sus resultados. Una representación de un sistema de memoria distribuida se detalla en

el gráfico a continuación.

Figura 2.5. Arquitectura de Memoria Distribuida 8

Fuente: González R. y Rodríguez S., 2008, pp.57.

Al igual que para los sistemas de memoria compartida, los entornos clusters también

poseen sus propios estándares para el desarrollo de aplicaciones paralelas bajo este tipo de

estructura.

2.2.12. Programación Paralela en Clusters

Todos los estándares hasta ahora desarrollados, concuerdan en que la comunicación

entre los nodos componentes de un cluster debe ser por medio del paso de mensajes, con lo

cual se puede dar lugar al intercambio de resultados de los procesos independientes.

La primera implementación del paso mensajes en estos sistemas, fue por medio del

estándar Parallel Virtual Machine (PVM). Sin embargo, con el transcurso del tiempo, el estándar de paso de mensajes de facto que se utiliza mayoritariamente en la actualidad es el Message Passing Interface (MPI).

MPI

MPI es una interfaz estandarizada para la realización de aplicaciones paralelas basadas

en paso de mensajes. Según Alonso J. (1997):

21

Page 27: Said Eduardo Perez Poppe

“MPI es, como su nombre indica, una interfaz, lo que quiere decir que el estándar no exige

una determinada implementación del mismo. Lo importante es dar al programador una

colección de funciones para que éste diseñe su aplicación, sin que tenga necesariamente que

conocer el hardware concreto sobre el que se va a ejecutar, ni la forma en la que se han

implementado las funciones que emplea” (pp. 1).

Siguiendo el razonamiento de Andrade X. (2010), los objetivos fundamentales de MPI

son:

o Definir un entorno de programación único que garantice la portabilidad de las

aplicaciones paralelas.

o Definir totalmente el interfaz de programación, sin especificar cómo debe ser la

implementación del mismo.

o Ofrecer implementaciones de calidad, de dominio público, para favorecer la

extensión del estándar.

Lo que ha dado como resultado, el uso de este estándar de manera ámplia alrededor del

mundo, hecho que también ha convencido a los fabricantes de computadores paralelos, como

IBM y Silicon Graphics, a ofrecer versiones de MPI optimizadas para sus máquinas.

De este modo, el MIP implementa numerosas primitivas para manejar los diferentes

tipos de mensajes que pueden necesitarse en la comunicación entre nodos de un cluster, así

como si sincronización y control.

En oposición, una de las desventajas de MPI es que siempre existe la necesidad de que

específicamente esté programado en el proceso que actúa como emisor, una invocación a un

procedimiento de envío; y en los procesos receptores, la respectiva invocación a un

procedimiento de recepción. En el caso de que no exista esta simetría, el proceso global no

avanza o se genera un error.

Sobre la base de todas las consideraciones anteriores, el escenario actual donde radica

el desarrollo de la situación problemática que se plantea en la investigación, se halla tanto en

el ámbito del modelo de memoria compartida como en entornos de memoria distribuida. Es

importante entonces, el análisis de la programación paralela en entornos híbridos de cluster

conformados por nodos multicore, de acuerdo a las exigencias del contexto actual que

22

Page 28: Said Eduardo Perez Poppe

demanda el uso de los mejores recursos disponibles, velando por brindar las mejores

prestaciones de cómputo.

2.2.13. Programación Paralela en Entornos Híbridos

Dado el hecho de que ya no se encuentran en el mercado ordenadores con un solo

núcleo, la forma de programación paralela en clusters debe obedecer un modelo combinado de

memoria compartida – distribuida.

Según Wolfmann (2010), en un principio se pueden pensar en dos posibilidades que no

son para nada las más factibles:

o Aplicar un modelo de memoria distribuida a la totalidad del sistema, lo que

dará lugar a la utilización de cada uno de los cores de los nodos como

computadoras independientes entre sí, donde se deberá usar el paso de mensajes

para la comunicación en todo momento.

Si bien esta opción es posible de ser realizada, y muchos programas preparados

para correr en paralelo solo utilizan esta estrategia de paralelismo; es fácil notar

un desperdicio de recursos si se trabaja de esta manera, ya que el envío de

mensajes entre procesos dentro de una misma computadora implica el uso de un

mecanismo más complejo que el hecho de compartir un área de memoria.

o Simular un escenario de memoria compartida en la totalidad del sistema, que

se basa en la premisa de que “programar con memoria compartida es más

simple que programar con memoria distribuida”, lo cual se logra haciendo una

réplica de todos los datos usados en los diferentes nodos del cluster.

Co-Array Fortran es el intento más sobresaliente por implantar este método de

programación paralela en entornos híbridos; pero a pesar de estos esfuerzos, es

innegable que la duplicación de los datos en cada computador con el fin de

simular un modelo de memoria compartida implica un desperdicio de recursos.

Por estas razones, la mejor opción, pero a la vez la más compleja, para construir

aplicaciones paralelas en entornos híbridos es utilizar una combinación de OpenMP y MPI en

el desarrollo de las soluciones. Siguiendo los lineamientos de Quinn M. (2004) y Smith L.

(2000), se puede inferir que la programación paralela se complica aún más con un modelo

23

Page 29: Said Eduardo Perez Poppe

mixto OpenMP/MPI, ya que se deben entremezclar tanto las instrucciones y las directivas

propias de dichos estándares, así como la lógica particular de funcionamiento de cada uno.

En este entendido, Smith L. (2000) hace una abstracción de las aplicaciones

OpenMP/MPI para dividirlas en dos niveles de paralelismo y combinar sus funcionamientos,

como se pretende representar en siguiente esquema.

Figura 2.6. Representación Esquemática de la Programación Mixta OpenMP/MPI 9

Fuente: Smith L., 2000, pp.86.

Por su parte, si bien el uso de esta forma de programación paralela mixta obedece a la

utilización óptima de todos los recursos y la obtención de las mejores prestaciones de

cómputo, esta idea solo es válida si se realiza un análisis correcto de la lógica y la forma de

cuándo y cómo paralelizar la aplicación dentro de un nodo o fuera del mismo, además de

tomar en cuenta los aspectos relacionados con el protocolo y el estándar de comunicación de

la red que permite la interconexión de los nodos del cluster. En este propósito, los patrones de

paralelismo juegan un papel importante como instrumentos que ayudan a la solución de este

tipo dilemas.

2.2.14. Patrones de Paralelismo y su Estructura

Se considera, que el surgimiento de los patrones como herramientas de solución a

problemas en los distintos campos del conocimiento humano ha surgido de la mano de

24

Page 30: Said Eduardo Perez Poppe

Alexander C., Ishikawa S. y Silverstein M. (1977), que introdujeron por primera vez este

concepto en el ámbito de la arquitectura. Estos autores consideran que:

“Cada patrón describe un problema que ocurre una y otra vez en nuestro entorno y, a

continuación se describe el núcleo de la solución a ese problema, de tal manera que se puede

utilizar la solución de un millón de veces sin tener que hacerlo de la misma manera dos veces”

(pp. 33).

Con respecto al área de la presente investigación, fue recién el año 1995, que se

introdujo el manejo de patrones en el campo de la ingeniería de software de la mano de

Gamma E., Helm R., Johnson R. y Vlissides J. con su publicación titulada “Design Patterns:

Elements of Reusable Object-Oriented Software”.

Actualmente, se puede contar con muchos patrones en el campo de la informática, que

van desde patrones de seguridad y patrones de redes, hasta los nuevos patrones de paralelismo

que se originaron fruto de la reciente data de este campo.

Si bien no existe una estándar para la estructuración o presentación de los patrones en

el área de la informática, Keutzer K. y Mattson T. presentaron en el workshop mundial de

paralelismo (Para-PLoP) en el año 2009, un formato mínimo que ha tenido mucha aceptación

hasta el momento por organismos de investigación y académicos que se dedican a esta área de

la ciencia, el cual se representa en el siguiente diagrama:

25

Page 31: Said Eduardo Perez Poppe

Figura 2.7. Estructura Mínima de un Patrón de Paralelismo 10

Fuente: Elaboración Propia, en base a Keutzer K. y Mattson T. (2009).

Cabe mencionar, que todos los patrones citados en el apartado de antecedentes teóricos

cumplen con la estructura representada por la Figura 2.7. Como último punto, se deben definir

los parámetros que permiten valorar este tipo de patrones en función a su rendimiento y

eficiencia, con el fin de poder contar con las herramientas de evaluación necesarias para

realizar un análisis crítico de los patrones existentes y poder validar la propuesta de uno nuevo

que será el resultado del presente trabajo.

2.2.15. Métricas de Rendimiento y Eficiencia

Hasta este punto, una vez analizados todos los elementos teóricos que intervienen en el

problema, se debe caracterizar los sistemas paralelos en función a su rendimiento y eficiencia,

lo cual se logra por medio del análisis matemático de los entornos paralelos. Hechas estas

consideraciones, los siguientes parámetros, análisis y deducciones que se detallan en este

apartado son una síntesis de los razonamientos alcanzados Ares G. (2012), Singh D., Isaila F.,

Higuero D., García J. y Bergua B. (2012) y González R., Rodríguez S. (2008).

26

Page 32: Said Eduardo Perez Poppe

Tiempo de Ejecución

El tiempo de ejecución es el factor más intuitivo para valorar la eficiencia

computacional de un programa corriendo en un determinado sistema. Asimismo, el

almacenamiento y la transmisión de los datos en un sistema paralelo afectarán directamente a

su tiempo de ejecución (T).

Además de ser un parámetro fácil de medir, también puede brindar una pauta rápida

del esfuerzo computacional al que se está sometiendo el sistema. En el caso particular de una

plataforma paralela, el tiempo de ejecución será función principalmente de tres elementos: el

tamaño del problema (n), los procesadores disponibles (p) y el número de procesos (U), es

decir:

T=f (n , p ,U )

No obstante, en un cluster de nodos multicore, durante el tiempo que transcurre entre el

inicio de la ejecución del primer proceso hasta la realización del último, se pueden inferir tres

estados diferentes: tiempos de procesamiento efectivo (T PROC), tiempos invertidos en la

comunicación (T COM) y tiempos inactivos (T IDLE); por tanto, es válida también la ecuación:

T=T PROC +TCOM+T IDLE

Donde T PROC depende de la complejidad y dimensión del problema; T COM es un

parámetro que depende del número de comunicaciones dentro y fuera de cada nodo, además

del tipo de red de interconexión. El tiempo invertido en la comunicación se encuentra

íntimamente relacionado con el tiempo necesario para el establecimiento de la conexión,

denominado latencia, y el tiempo de trasferencia de información.

De la misma manera, el tiempo de transferencia viene dado por el ancho de banda del

canal, que depende de la tecnología y estándar de red usado; lo que da lugar a la afirmación:

Tiempo Necesario para Transmitir L bits=T L=Latencia+L∗T R

Donde T R es el tiempo necesario para transmitir un bit.

Por su parte, la latencia obedece en parte al protocolo de comunicación que se usa, ya

que en ellos se especifican tiempos necesario para iniciar la operación de envío/recepción de

27

Page 33: Said Eduardo Perez Poppe

un mensaje (overhead), como ilustración, en nuestro medio, el protocolo TCP/IP es el más

difundido.

Cabe agregar, que los tiempos inactivos son fruto de los instantes donde un procesador

se encuentra sin realizar ningún trabajo por la ausencia de datos con los cuales operar o la

ausencia de recursos de cómputo disponibles. Así, uno de los objetivos de diseño de los

patrones de paralelismo es disminuir los tiempos inactivos.

Speedup o Aceleración

La aceleración (S) es una medida que expresa el beneficio relativo de resolver un

problema de forma paralela con multiprocesadores. Si se tiene en cuenta que T s es el tiempo

de ejecución del mejor algoritmo secuencial que resuelve el problema y T P es el tiempo que

ejecución de algoritmo paralelo para P procesadores que resuelve el mismo problema; se

puede definir la aceleración como:

S=T s

T P

Speedup Algorítmico

En ocasiones, no es fácil encontrar el mejor algoritmo secuencial que resuelve un

problema, por lo que no se puede calcular la aceleración de manera clara. Entonces, se valora

el tiempo de ejecución de un algoritmo por medio de un procesador (T 1), frente al tiempo de

ejecución del mismo en P procesadores; lo que se conoce como speedup algorítmico (SN).

SN=T 1

T P

Sin embargo, para una valoración más precisa de los tiempos de ejecución, se debe

considerar la configuración de la red de comunicación del sistema paralelo; en el caso de que

se tenga una gran cantidad de nodos involucrados en red, se debe recurrir al análisis por medio

del algebra de grafos. De la misma manera, se debe tomar en cuenta el asincronismo de los

equipos por medio de ratios estadísticos.

En cuanto a la situación deseada, lo esperado es que al usar P procesadores se obtenga

una mejora de factor P en el speedup, que se denomina speedup lineal; empero, el incremento

28

Page 34: Said Eduardo Perez Poppe

de los tiempos de comunicación y la latencia, entre otros factores, dan como resultado que el

speedup esté debajo del ideal (speedup sublineal) y solamente en contadas ocasiones se

obtenga una respuesta del sistema superlineal o mejor a la esperada.

Figura 2.8. Speedup Lineal, Sublineal y Supralineal 11

Fuente: Ares G., 2012, pp. 70.

Eficiencia

La eficiencia (E) en sistemas paralelos parte del tiempo en el que los procesadores

están realizando trabajo útil; desde el punto de vista matemático, corresponde a un valor

normalizado del speedup algorítmico (entre 0 y 1), respecto a la cantidad de procesadores

utilizados.

E=T 1

T P∗P=

SN

P

En efecto, valores de eficiencia cercanos a la unidad identifican sistemas paralelos con

características cercanas a las ideales en cuanto a rendimiento.

Paralelicibilidad

En principio, se puede confundir con el concepto de paralelicibilidad (PAR) con

speedup (SN), pero se debe tener en cuenta que el primero da una pauta de cuán paralelizable o

29

Page 35: Said Eduardo Perez Poppe

escalable resulta el algoritmo paralelo utilizado, mientras que el último evalúa la mejora del

desempeño al utilizar técnicas de programación paralela.

La definición matemática de paraleliciblidad se resume en el cociente de la división del

tiempo que toma a un computador paralelo ejecutar un algoritmo paralelo en un único

procesador (TP1) entre el tiempo que toma al mismo computador paralelo ejecutar el mismo

algoritmo paralelo en P procesadores (TPN).

PAR=TP1

TPN

Cabe recalcar, que otra diferencia fundamental entre estos dos conceptos es que el

speedup considera el tiempo de un algoritmo secuencial (el mejor existente o conocido) para la

comparación, en oposición con la paralelicibilidad que toma en cuenta el tiempo de ejecución

de un algoritmo paralelo en un único procesador.

Escalabilidad

La escalabilidad constituye una de las características más deseadas para las

aplicaciones paralelas en el ámbito del cómputo científico. Se dice que un sistema es escalable

cuando mantiene su eficiencia al aumentar simultánea y proporcionalmente el número de

procesadores y la complejidad y magnitud de la aplicación.

Utilización de los Recursos Disponibles

Lo óptimo en un sistema paralelo es mantener una exigencia equitativa a todos los

procesadores de un sistema paralelo, es decir, se utilice de manera equilibrada todos los

recursos disponibles.

Este parámetro mide el porcentaje de tiempo que un procesador es utilizado durante la

ejecución de una aplicación paralela.

USO=tiempoOCUPADO

tiempoINACTIVO+tiempoOCUPADO

Finalmente, expuestos los antecedentes teóricos y planteados todos los elementos teóricos

necesarios, se pueden presentar un primer acercamiento a la hipótesis de la investigación.

30

Page 36: Said Eduardo Perez Poppe

2.3. Hipótesis

El uso de un determinado patrón de paralelismo bajo entornos híbridos de clusters

conformados por nodos multicore, así como su implicancia con la red de comunicación, afecta

directamente al rendimiento y la eficiencia de las aplicaciones.

31

Page 37: Said Eduardo Perez Poppe

CAPÍTULO III

DISEÑO METODOLÓGICO

3.1. Introducción

El modelo metodológico del presente trabajo responde al desarrollo de una idea

conceptual y organizada que tiene el fin de proponer una solución a la problemática descrita

en el capítulo 1.

En este mismo sentido, todos los razonamientos que se describen en la presente sección

están de acuerdo con un juicio epistemológico-metodológico que pretende ser congruente y

consistente, además de estar orientado a atender la hipótesis y pregunta científica de la

investigación.

De este modo, en primera instancia es necesario recalcar que todas las consideraciones

del capítulo están enmarcadas asumiendo el postulado de que la realidad y el objeto de estudio

son objetivos, causales, observables y medibles; en igual forma, el interés por la generación de

conocimiento se centra en predecir y controlar el funcionamiento de las aplicaciones paralelas

en entornos híbridos por medio de la inducción de principios y patrones que lo sustenten. Por

lo tanto, esta postura encaja perfectamente en el paradigma epistemológico positivista que a su

vez es coherente con la naturaleza del conocimiento que se desea estudiar.

3.2. Nivel y Tipo de Investigación

Dentro del marco de la presente tesis y siguiendo los niveles de investigaciones

descritas por Grajales (1998), el trabajo a realizarse se encuadra dentro de los lineamientos de

una investigación experimental, ya que se propondrá un nuevo patrón de paralelismo por

medio de la manipulación de variables en condiciones controladas, con el fin de mejorar el

rendimiento y eficiencia de las aplicaciones diseñadas para funcionar bajo estructuras de

clusters de nodos multicore con redes de interconexión definidas.

Asimismo, de acuerdo con Zorrilla (1993) y en concordancia con los propósitos y

objetivos que se pretende alcanzar en la investigación, el trabajo puede ser catalogado dentro

32

Page 38: Said Eduardo Perez Poppe

las investigaciones de tipo tecnológica debido a que está encauzada a generar un patrón que

implique un enfoque más apropiado a los requerimientos que la realidad actual exige a las

aplicaciones paralelas.

Así, el nivel y tipo de investigación en los que se delimita el trabajo guardan

coherencia metodológica, debido a que ambos buscan ocasionar cambios en la realidad

estudiada por medio de la aplicación de nuevos modelos y sistemas que ostenten nuevas

prestaciones e impliquen un progreso y superación del área de estudio.

3.3. Ventana de Observación y Operacionalización de Variables

A fin de dar continuidad al diseño metodológico, es importante delimitar lo que se

desea observar y cuál el escenario y las fuentes que permitirán que se obtenga dicha

información. Siguiendo esta misma línea, los observables de la tesis se limitarán a las

variables establecidas en la hipótesis planteada, que en correspondencia con los juicios

presentados hasta ahora a lo largo del trabajo, se pueden identificar:

Una variable independiente: Uso de un determinado patrón de paralelismo.

Tabla 3.1. Operacionalización de la Variable Independiente 1

VARIABLES INDICADORES INDICES ITEMS

Vi = V1; Patrón de

Paralelismo

1.1 Balanceo de la Carga

Utilización de Recursos Disponibles

ExperimentaciónSpeedup Algorítmico

1.2 SincronizaciónGrado de Granularidad

ExperimentaciónOverheadTiempos de Bloqueo

1.3 Red de Comunicación e Interconexión

Ancho de banda

Experimentación

Tiempo de Comunicación entre Nodos

Eficiencia del Protocolo de Red

Eficiencia del Estándar de Red

1.4 Técnicas Involucradas a la Lógica del Paralelismo

ParalelicibilidadExperimentación

EscalabilidadFuente: Elaboración Propia.

33

Page 39: Said Eduardo Perez Poppe

Dos variables dependientes: Eficiencia de las aplicaciones paralelas y rendimiento de

las aplicaciones paralelas.

Tabla 3.2. Operacionalización de las Variables Dependientes 2

VARIABLES INDICADORES INDICES ITEMS

Vd = V1; Eficiencia de

las Aplicaciones

Paralelas

1.1 Trabajo extra generadoTiempo de comunicación

ExperimentaciónCantidad de procesos auxiliares

1.2 Tiempo de Ejecución

Aceleración

ExperimentaciónTiempos de transmisión

Tiempos de lecturaLatencia

1.3 Tiempo de trabajo de los procesadores

Eficiencia computacionalExperimentaciónTiempos idle

Granularidad

Vd = V2; Rendimiento

de la Aplicaciones

Paralelas

1.1 Tiempos inactivosSpeedud

ExperimentaciónTiempos de transmisión

1.3 Uso de las capacidades individuales de los procesadores

Speedud logarítmicoExperimentación

Tiempos inactivos

1.4 Prestaciones de la comunicación

Teoría de grafosExperimentaciónVelocidad de transmisión

Parámetros de bloqueosFuente: Elaboración Propia.

En este entendido y en correspondencia con la naturaleza de la investigación, las

fuentes que permitirán la observación y valoración de estas variables serán empíricas y

desarrolladas en un ambiente controlado de laboratorio. No obstante, es innegable que

paralelamente al trabajo experimental y de forma complementaria, se utilizarán fuentes

teóricas que provean información relevante y útil para el desarrollo de la tesis.

3.4. Elección Metodológica

La elección adecuada de la metodología a usar a lo largo del trabajo constituye un pilar

fundamental del cual depende en gran medida la validez y confiabilidad del nuevo

conocimiento que habrá de emerger.

Sobre esta misma línea, dada la naturaleza de las variables estudiadas y el interés

concreto de medir, calificar, pesar y valorar lo más objetivamente la porción de la realidad en

análisis, se utilizará la metodología cuantitativa en toda la investigación.

34

Page 40: Said Eduardo Perez Poppe

Cabe recalcar que esta elección es coherente con la postura epistemológica positivista

que ha tomado como propia para el desarrollo de la tesis; además, la relación correlacional

entre las variables presentes en la hipótesis son ideales para ser estudiadas sobre la base de una

metodología cuantitativa.

3.5. Elección de Métodos

En este punto, los caminos de indagación para llegar al desarrollo de un nuevo patrón

de paralelismo y los marcos conceptuales ligados a la teoría adecuada desde donde se valorará

el objeto de estudio corresponden a métodos fundamentalmente positivistas bajo un enfoque

cuantitativo.

En primera instancia, el método experimental de laboratorio será el más empleado,

debido a que se trabajará en un laboratorio donde tanto las variables dependientes como

independientes serán controladas escrupulosamente, a fin de que los resultados base de la

caracterización causal del comportamiento de los mismos y diseño del nuevo patrón de

paralelismo sean lo más confiables posibles.

Adicionalmente, debido a que los resultados del trabajo serán fruto de varias

mediciones y ejecuciones de aplicaciones tomadas como testbeds, se mantendrá siempre una

percepción lógica única de la realidad por medio del método estadístico. Por su parte, para

describir los hechos y mediciones obtenidas simplemente se empleará el método estadístico

descriptivo; sin embargo, para establecer las relaciones entre la eficiencia de las aplicaciones y

el comportamiento de la red de interconexión, se utilizará el método estadístico inferencial,

para luego proyectar todo el análisis en conclusiones generales apoyadas en el análisis

estocástico del comportamiento de las aplicaciones paralelas en entornos híbridos.

En otro orden de ideas, será importante también brindar un panorama completo de las

condiciones cualitativas del cluster y el entorno de trabajo en general que afecten directamente

a los experimentos, para lo cual se usará el método descriptivo.

Aunque parezca contrario a todos los razonamientos hechos hasta ahora, si bien la

experimentación será el eje fundamental del trabajo, la presente tesis no podría dar resultados

serios y válidos si no se fortalecen conocimientos por medio de la revisión bibliográfica

exhaustiva acerca de la programación paralela en entornos heterogéneos, haciendo uso del

método conceptual deductivo.

35

Page 41: Said Eduardo Perez Poppe

3.6. Elección de Técnicas

Una vez elegidos los métodos y definida la ventana de observación, la adopción de

técnicas de recolección de datos debe tener relación directa con el paradigma epistemológico

escogido y el diseño de la investigación.

En congruencia con los métodos, las técnicas que se seguirán serán principalmente:

experimentales de laboratorio, estadísticas, registro descriptivo de hechos, deducción y

observación directa del objeto de estudio.

Al mismo tiempo, la técnica de indagación documental para el estudio de libros, tesis y

publicaciones digitales y textuales será un factor importante para el correcto y óptimo

desarrollo de la investigación.

3.7. Definición de Fuentes y Desarrollo de Instrumentos

En este mismo sentido, para poder alcanzar los objetivos deseados, se debe especificar

los criterios para seleccionar las fuentes de información e instrumentos, con el cuidado de que

dicha elección esté de acuerdo con lo que se desea investigar.

En primera instancia, se necesita identificar el ambiente de experimentación adecuado

que se enmarque dentro de los recursos disponibles y las limitantes de la Carrera de Ingeniería

de Sistemas de la Universidad San Francisco Xavier de Chuquisaca.

De este modo, la labor de experimentación práctica se realizará en instalaciones del

Instituto de Investigación de la Carrera de Ingeniería de Sistemas, donde se realizó un análisis

de los ordenadores existentes, para luego identificar los siguientes computadores como

instrumentos de hardware esenciales para la investigación:

o Dos servidores HP ProLiant, modelo ML370 de sexta generación, los cuales

presentan un procesador Intel Xeon E5620 de 2.64 GHz y 4 núcleos;

adicionalmente, ambos servidores presentan una memoria RAM DDR3-1333

SDRAM de 12 GB y 4 discos duros de 500 GB cada uno, haciendo un total

aproximado de 1 TB de capacidad de almacenamiento.

o Cinco computadoras de escritorio, cada una equipada con un procesador Intel

Core i7-2600k de 3.4 GHz, 4 núcleos y de tercera generación; memoria RAM

de 8 GB y disco duro de 1TB.

36

Page 42: Said Eduardo Perez Poppe

En este orden de ideas, el trabajo se circunscribirá en ensayos y experimentos sólo con

redes de interconexión bajo el estándar Ethernet, debido a la imposibilidad de contar con redes

Infiniband y Myrinet dentro la Universidad San Francisco Xavier a causa de su alto costo.

Bajo este mismo juicio y por las mismas razones, el protocolo de comunicación entre

ordenadores usado se limitará únicamente a TCP/IP, excluyendo otros como Active Messages

y Xpress Transport Protocol (XTP).

En lo tocante a las herramientas de software que se utilizarán, existen algunas

aplicaciones de cómputo científico paralelas implementadas en Java y Python, como el

proyecto desarrollado por Hernández A. y Moreira D. (2006); pero en oposición a ellas, los

lenguajes de programación más recomendables y con mejores prestaciones para entornos de

clusters de nodos multi-núcleo son FORTRAN y C/C++, tal como se observa plasmado en la

investigación de Wolfmann G. (2010):

“Las aplicaciones de cómputo científico están en su mayoría desarrolladas por programas

escritos en lenguaje FORTRAN o C/C++, existiendo muy pocos desarrollos que utilicen otros

lenguajes. Esto es debido a que son aplicaciones de cálculo numérico que requieren de un alto

nivel de procesamiento, dado el gran volumen de cómputo que se necesita realizar; dichos

lenguajes de programación son los que mejores rendimientos alcanzan... De esta manera, la

programación de aplicaciones que se quiera ejecutar en un cluster con nodos multicore está

casi circunscrita a programas FORTRAN o C/C++” (pp.11).

Por lo tanto, el lenguaje de programación usado para todas las pruebas será C/C++, que

se empleará juntamente con una combinación de directivas MPI y OpenMP por ser la forma

más óptima de realizar soluciones en entornos mixtos en concordancia con lo expuesto en el

capítulo 2.

Asimismo, hasta la mitad de la década de los años 2000, el procesamiento científico y

el cómputo de alto rendimiento estaban casi circunscritos a entornos que usaban sistemas

operativos y middleware de clusters basados en Linux. En oposición a estas ideas, desde el

año 2008, Microsoft ha invertido gran esfuerzo para desarrollar software referente a sistemas

High Performance Computing (HPC); lo cual ha dado lugar que a la fecha de desarrollo de la

presente investigación se pueda afirmar que los clusters HPC Windows o Linux son

prácticamente iguales en cuando a rendimiento y eficiencia se refiere.

37

Page 43: Said Eduardo Perez Poppe

La última afirmación se encuentra en concordancia con las investigaciones de Crimson

Consulting Group (Abril, 2010) y Henschel R., Teige S., Li H., Doleschal J.y Mueller M.

(Octubre, 2010). Con respecto a este punto, en el siguiente capítulo se presenta un estudio

mucho más detallado acerca de las razones de la elección del sistema operativo y el

middleware del cluster a implementar.

En la tabla a continuación se resumen todos los lineamientos a tomar en cuenta durante

la realización de la investigación; sobre la base de estas consideraciones, es posible ahora

definir de manera clara el diseño troncal de la tesis que se detalla en el subtítulo posterior.

Tabla 3.3. Lineamientos Epistemológicos-Metodológicos 3

38

Page 44: Said Eduardo Perez Poppe

Postura Epistemológica

Postulados Metodología Nivel de la Investigación

Tipo de Investigación

Observables Métodos Técnicas Ambiente de Experimentación

Instrumentos

Método Experimental

Técnica Experimental de Laboratorio

Dos servidores HP ProLiant ML370 G. 6; procesador Intel Xeon E5620, 2.64 GHz, 4 núcleos; memoria RAM de 12 Gb; 4 discos duros de 500GB

Método Estadístico Descriptivo, Inferecial, Estocático

Técnica Estadística Plataforma Windows

Método Descriptivo Registro Descriptivo de Hechos

Lenguaje de Programación C/C++

Método Conceptual Deductivo

Deducción

Cinco computadoras de escritorio; procesador Intel Core i7-2600k, 3.4 GHz, 4 núcleos; memoria RAM de 12 GB; disco duro de 1 TB

Observación Directa del objeto de Estudio

Indagación Documental

La realidad y el objeto de estudio son objetivos, causales, observables y medibles.

El interés por la generación de conocimiento se centra en predecir y controlar el funcionamiento de las aplicaciones paralelas en entornos híbridos por medio de la inducción de principios y patrones que lo sustenten.

Variable Independiente: Uso de un determinado patrón de paralelismo.

Variables Dependientes: Eficiencia de las aplicaciones paralelas y rendimiento de las aplicaciones paralelas.

Estudio y Análisis de Patrones de Paralelismo en Entornos de Clusters Conformados por Nodos Multi-Núcleo

Positivista Cuantitativa Experimental

Instituto de Investigación de la

Carrera de Ingeniería de Sistemas de la

Universidad San Francisco Xavier de

Chuquisaca

Tecnológica

Fuente: Elaboración Propia.

39

Page 45: Said Eduardo Perez Poppe

3.8. Diseño de la Investigación

La labor de la experimentación práctica estará centrada de manera inicial en la elección

del tipo de cluster a utilizar, sus características y configuración en función a las herramientas

de hardware disponibles y al software elegido; para luego someter el diseño del arreglo de

ordenadores a una prueba de rendimiento que valide su correcta implementación.

Posteriormente, se diseñará una plataforma de pruebas, denominada comúnmente

testbed, que responda a ensayos rigurosos, replicables y válidos en el ámbito científico, que

posibiliten la valoración de los distintos patrones de paralelismo tomando en cuenta su

influencia en el rendimiento y eficiencia de las aplicaciones.

Así, se emplearán los métodos y técnicas definidas en anteriores apartados para valorar

los resultados fruto de la experiencia en laboratorio, con el fin de caracterizar de manera

completa el comportamiento de los patrones de paralelismo, en aspectos como la latencia de la

red, la probabilidad de que el canal se encuentre colapsado o el balance de la carga cómputo

en los distintos procesadores.

Como resultado de todo este estudio, se planteará un nuevo patrón de paralelismo que

también será validado por medio del uso de un determinado testbed y la experimentación

práctica. Todo este acápite, queda plasmado en la Figura 3.2.

40

Page 46: Said Eduardo Perez Poppe

Figura 3.1. Propuesta de Modelo de Solución 12

Fuente: Elaboración Propia.

41

Page 47: Said Eduardo Perez Poppe

3.9. Cronograma

Tabla 3.4. Cronograma de Trabajo 4

Objetivo General: Diseñar un nuevo patrón de paralelismo que tome en cuenta los factores influyentes en la eficiencia y rendimiento de aplicaciones bajo entornos híbridos de clusters conformados por nodos multicore, de manera que se convierta en un aporte para el desarrollo de la ingeniería de sistemas en esta área.

Objetivo Específico 1: Presentar, analizar y comprender las características y tendencias actuales de la programación paralela, los patrones de paralelismo existentes, así como los conceptos y funcionamiento de los clusters de nodos multi-núcleo.

Indicadores de Resultado: Grado de conocimiento y manejo del tema.

Fuente de Verificación:

Aprobación tutor.

Supuesto: Se puede contar con

bibliografia y distintos materiales para la descripción

teórica a profundidad de los

elementos intervinientes en los sistemas de cómputo

paralelo.

Cronograma: Del 23/05/2013 al 13/06/2013

Actividad 1.1. Estudio a detalle de los tipos, taxonomía y características de los sistemas de cómputo paralelo.

Insumos: Material bibliográfico, virtual y todas las posibles fuentes valederas.

Actividad 1.2. Comprensión a detalle del funcionamiento, arquitectura, clasificación y factores intervinientes en los clusters de computadoras.

Insumos: Material bibliográfico, virtual y todas las posibles fuentes valederas.

Actividad 1.3. Estudio de los diferentes estándares y protocolos para la programación de aplicaciones paralelas en entornos híbridos.

Insumos: Material bibliográfico, virtual y todas las posibles fuentes valederas.

Actividad 1.4. Recopilación y análisis de los progresos y tendencias actuales en el ámbito de los patrones de paralelismo. Insumos:

Actividad 1.5. Análisis de las métricas y parámetros de valoración de los sistemas paralelos en entornos mixtos de clusters conformados por nodos multicore.

Insumos: Material bibliográfico, virtual y todas las posibles fuentes valederas.

Objetivo Específico 2: Seleccionar y establecer los procedimientos metodológicos que permitan recolectar los datos necesarios para analizar la incidencia del empleo de patrones de paralelismo en soluciones sobre clusters compuestos por ordenadores con múltiples núcleos.

Indicadores de Resultado: Alcance de datos que concuerden con el análisis matemático, estadístico y estocástico de los patrones de paralelismo.

Fuente de Verificación:

Experimentación.

Supuesto: Se tiene un dominio y conocimiento

aceptable de los elementos teóricos pertenecientes al

área de la clusterización y la

Cronograma: Del 14/06/2013 al 18/07/2013

Actividad 2.1. Evaluación de los recursos disponibles dentro de la Carrera de Ingeniería de Sistemas. Insumos: Entrevistas, observación.

42

Page 48: Said Eduardo Perez Poppe

paralelización de aplicaciones,

cumpliendo con el objetivo específico

1.

Actividad 2.2. Determinación y diseño del ambiente de experimentación.

Insumos: Estándares aceptados por organismos reconocidos, recomendaciones de centros de investigación importantes en este ámbito.

Actividad 2.3. Diseño y construcción de la plataforma de pruebas.

Insumos: Estándares aceptados por organismos reconocidos, recomendaciones de centros de investigación importantes en este ámbito.

Actividad 2.4. Obtención de datos que permitan la valoración objetivas de los distintos patrones de paralelismo.

Insumos: Instalaciones adecuadas, software y harware propio del área.

Objetivo Específico 3: Interpretar y valorar los datos, información y resultados provenientes de la comparación y análisis crítico de los distintos patrones de paralelismo en entornos heterogéneos, tomando en cuenta los factores relacionados con la red de comunicación, lógica de paralelismo, rendimiento y eficiencia.

Indicadores de Resultado: Concordancia entre los datos obtenidos fruto de la experimentación con los resultados obtenidos por medio de análisis matemático, estadístico y estocástico.

Fuente de Verificación:

Experimentación.

Supuesto: Se ha logrado obtener

datos confiables por medio del uso del un testbed adecuado y

se tienen los conocimientos suficientes para comprender las prestaciones,

ventajas y desventajas de los diferentes patrones

de paralelismo, través del objetivo

específico 1.

Cronograma: Del 18/07/2013 al 22/08/2013

Actividad 3.1. Comparación de los patrones de paralelismo, en cuanto a prestaciones referentes a la lógica del paralelismo. Insumos: Plataforma de pruebas.

Actividad 3.2. Comparación de los patrones de paralelismo, en cuanto a prestaciones referentes a la eficiencia de las aplicaciones. Insumos: Plataforma de pruebas.

Actividad 3.3. Comparación de los patrones de paralelismo, en cuanto a prestaciones referentes al rendimiento de las aplicaciones. Insumos: Plataforma de pruebas.

Actividad 3.4. Análisis de los resultados obtenidos en función a los factores intervinientes en la red de comunicación e interconexión. Insumos: Plataforma de pruebas.

Actividad 3.5. Interpretación y análisis de los resultados obtenidos. Insumos: Plataforma de pruebas.

Actividad 3.6. Valoración crítica de las ventajas y desventajas de cada patrón de paralelismo estudiado. Insumos: Plataforma de pruebas.

Objetivo Específico 4: Ajustar y Validar un nuevo patrón de paralelismo en entornos híbridos de clusters de nodos multicore que mejore las prestaciones de sus predecesores y tome en cuenta los factores que afectan al rendimiento y eficiencia de las aplicaciones.

Indicadores de Resultado: Mejora sustancial del nuevo patrón de paralelismo defendido, en términos de la lógica del paralelismo y la red de comunicación entre nodos.

Fuente de Verificación:

Experimentación.

Supuestos: Hasta este punto, se tiene

un vasto conocimiento

teórico del tema. Se han analizado los

datos obtenidos de manera sistemática y

Cronograma: Del 22/08/2013 al 03/10/2013

Actividad 4.1. Análisis de las ventajas más rescatables de cada patrón de paralelismo estudiado.

Insumos: Datos obtenidos por medio de la experimentación.

43

Page 49: Said Eduardo Perez Poppe

ordenada, sacando conclusiones

valederas.

Actividad 4.2. Determinación de las mejores soluciones para las desventajas más críticas de cada patrón.

Insumos: Datos obtenidos por medio de la experimentación.

Actividad 4.3. Determinación de las mejores prácticas en la lógica del paralelismo y la red de comunicación de los nodos.

Insumos: Datos obtenidos por medio de la experimentación.

Actividad 4.4. Validación y valoración del nuevo patrón de paralelismo presentado. Insumos: Plataforma de pruebas.

Fuente: Elaboración Propia.

44

Page 50: Said Eduardo Perez Poppe

Bibliografía

Alexander C, Ishikawa S., Silverstein M. (1977). A Pattern Language: Towns, Buildings,

Construction (Center for Environmental Structure Series). Oxford University.

Alonso J. (1997). Programación de aplicaciones paralelas con MPI (Message Passing

Interface). Ediciones UPV/EHU.

Álvarez J., Herrea J. (2010). Construcción y Diseño de un Cluster Tipo HPC Virtualizado.

Instituto Politécnico Nacional de México.

Andrade X. (2010). Programación Paralela en MPI. Departamento de Informática y Sistemas,

Universidad de Murcia-España.

Arellano G., Hoet L. (2010). Cluster Modular Autocontenido. Departamento Ingeniería en

Sistemas de Información - Universidad Tecnológica Nacional del Uruguay.

Ares G. (2012). Programación Multithreading. Escuela de Computación de Alto Rendimiento-

Universidad de la República de Uruguay.

Baldoni F., Romano M. (2012). Simulación de Procesadores Multicore para Sincronizar

Múltiples Procesos Utilizando Redes de Petri. Universidad Nacional de Córdoba.

Bromling S., MacDonald S., Anvik J., Schaeffer J., Szafron D., Tan K. (2002). Pattern-Based

Parallel Programming. International Conference on Parallel Processing.

Buyya R. (1998). High Performance Cluster Computing Vol. 1. Ed. Prentice Hall.

Carrillo A. (2013). Métodos de Descomposición de Dominio en el Espacio de Vectores

Derivados y su Implementación Computacional en Paralelo. Universidad Nacional

Autónoma De México.

Crimson Consulting Group (Abril, 2010). Evaluating the Lifecycle Costs of High Performance

Computing Solutions: Windows HPC Server and Linux-based Solutions. Crimson

Consulting Group.

Czarnecki K y Eisenecker U. (2000). Generative Programming: Methods, Tools, and

Applications. Ed. Addison-Wesley.

De la Cruz W., Altamiro L., González R., González A. (Diciembre, 2005). Programación

Paralela y Concurrente en C++. Revista de Ciencias Básicas UJAT, volumen 4.

45

Page 51: Said Eduardo Perez Poppe

Díaz G, Hoeger H., Nuñez L. (2002). Clusters de PC´s. Centro Nacional de Cálculo

Científico- Universidad de los Andes de Venezuela.

Fayad M., Schmidt D., Johnson R. (1999). Building Application Frameworks: Object-Oriented

Foundations of Framework Design. John Wiley & Sons.

Flynn M. (1972). Some Computer Organizations and Their Effectiveness. IEEE transactions

on Computers. Vol. c-21.

Gamma E., Helm R., Johnson R., Vlissides J. (1995). Design Patterns: Elements of Reusable

Object-Oriented Software. Ed. Addison-Wesley.

Gil M. (1999) Caracterización de las Aplicaciones Paralelas en Cuanto a la Petición de

Recursos. Universidad Politécnica de Cataluña.

Giménez D., Boratto M., Coelho L. (2009). Programación Paralela y Distribuida.

Departamento de Informática y Sistemas, Universidad de Murcia-España.

González C., Fraguela B. (2010). Una Plantilla Genérica para el Patrón de Paralelismo de

Divide y Vencerás en Sistemas Multi-Núcleo. Universidad de Coruña.

González R., Rodríguez S. (2008). Diseño e Implementación de un Cluster Tipo Beowulf para

el Desarrollo de Cómputo Científico Avanzado. Instituto politécnico Nacional de

México.

Guerrero J., Francés J. (2011). Procesadores Superescalares: Paralelismo Implícito a Nivel de

Instrucción. Universidad de Valencia.

Henschel R, Teige S., Li H., Doleschal J., Mueller M. (Octubre, 2010). A Performance

Comparison Using HPC Benchmarks: Windows HPC Server 2008 and Red Hat

Enterprise Linux 5. Universidad de Indiana.

Hernández A., Moreira D. (2006). Desarrollo de Aplicaciones Paralelas en Java y su

Evaluación en una Plataforma GRID. Universidad Simón Bolívar-Venezuela.

Jorba J., Suppi R. (2010). Programación concurrente. Universidad Oberta de Cataluña.

Keutzer K., Mattson T. (2009). Our Pattern Language (opl): A Design Pattern Language For

Engineering (Parallel) Software. ParaPLop 2009.

Macdonald S., Szafron D., Schaeffer J., Anvik J., Bromling S., Tan K. (2002). Generative

Design Patterns. International Conference on Automated Software Engineering.

Mattson T., Sanders B., Massingill B. (2004). Patterns for Parallel Programming. Ed.

Addison-Wesley Professional.

46

Page 52: Said Eduardo Perez Poppe

Mejía N., Fernández A., Bernal C. (2005). Desarrollo de Aplicaciones Paralelas para Clusters

utilizando MPI (Message Passing Interface). Escuela Politécnica Nacional del

Ecuador.

Meza A. (2012). Análisis de Tráfico de Datos en Sistemas Distribuidos. Instituto Tecnológico

de La Paz-México.

Meza F. (2001). Memoria Compartida Distribuida en Ambientes de Bajo Costo.

Departamento de Computación-Instituto Tecnológico de Costa Rica.

Montes E, De Giusti L., De Giusti A., Naiouf M. (2012). Comparación del Uso de GPU y

Cluster de Multicore en Problemas con Alta Demanda Computacional. Instituto de

Investigación en Informática LIDI- Universidad Nacional de La Plata.

Murilo B. (2007). Parametrización en Esquemas Paralelos Divide y Vencerás. Universidad

Politécnica de Valencia.

Pedemonte M., Nesmachnow S. (2010). Metaheurísticas Paralelas. Centro de Cálculo,

Instituto de Computación-Universidad de la República de Uruguay.

Pfister G. (2010). An Introduction to the Infiniband Architecture. IEEE Press and Wiley

Press.

Quinn M. (2004). Parallel Programming in C with MPI and OpenMP. McGraw-Hill Higher

Education.

Ramiro C. (2010). Algoritmos Paralelos para la Resolución de Problemas de Mínimos

Cuadrados Basados en Transformaciones Ortogonales sobre GPUs y

Multiprocesadores. Universidad Politécnica de Valencia.

Rannou F. (2008). Taller de Programación Paralela. Departamento de Ingeniería Informática-

Universidad de Santiago de Chile.

Rodríguez-Meza. (2009). Cómputo Paralelo Usando MPI: Simulaciones de N-Cuerpos en la

Física. Instituto Nacional de Investigaciones Nucleares de México.

Rosas C. (2009). Análisis y Sintonización de Aplicaciones Paralelas/Distribuidas de

Bioinformática: Caso de Estudio mpiBLAST. Departamento Arquitectura de

Computadores y Sistemas Operativos-Universidad Autónoma de Barcelona.

Ruvalcaba P. 2002. Investigación Teórica, Investigación Empírica, Investigación Documental.

Universidad Nacional de Colombia.

47

Page 53: Said Eduardo Perez Poppe

Santander-Jiménez S., Vega-Rodríguez M., Gómez-Pulido J., Sánchez-Pérez J. (2010).

Evaluando el Rendimiento Multicore de una Aproximación Multiobjetivo de

Inteligencia de Enjambre para la Inferencia Filogenética. Universidad de Extremadura,

Dept. Tecnología de los Computadores y de las Comunicaciones.

Singh A., Schaeffer J., Szafron D. (1996). Views on Template-Based Parallel Programming.

Centre for Advanced Studies on Collaborative Research, IBM.

Singh D., Isaila F., Higuero D., García J., Bergua B. (2012). Computación Cluster.

Departamento de Informática-Universidad Carlos III de Madrid.

Smith L. (2000). Mixed Mode MPI / OpenMP programming. Technical report, Edimburgh

Parallel Computing Centre.

Siu S., De Simone M., Goswami D., Singh A. (1996). Design Patterns for Parallel

Programming. International Conference on Parallel and Distributed Processing

Techniques and Applications.

Vargas-Félix M. (2011). Cómputo en paralelo con OpenMP. Centro de Investigación en

Matemáticas CIMAT-México.

Vargas X. (2011). Investigación ¿Qué es eso?. Ed. Iteso.

Willcock J., Lumsdaine A., Robison A. (2012). Using MPI with C# and the Common

Language Infrastructure. Pervasive Technology Laboratories of Indiana University-

Intel Corporation.

Wolfmann G. (2010). Análisis de Patrones de Paralelismo bajo la Óptica de las Aplicaciones

de Cómputo Científico sobre Clusters de Nodos Multicore. Universidad Nacional de

La Plata-Argentina.

48