Sei sulla pagina 1di 20

PROGRAMACIÓN PARALELA

JUAN CAMILO VELEZ RAMIREZ

CRISTOFER GUZMÁN URREGO

JHORMAN

JORGE ENRIQUE FORIGUA

SISTEMAS DISTRIBUIDOS

INSTITUCIÓN UNIVERSITARIA POLIITÉCNICO GRANCOLOMBIANO

2020

1
INTRODUCCIÓN

En el presente documento explicaremos la programación paralela que es el uso de múltiples

recursos computacionales para resolver un problema. Se distingue de la computación secuencial

en que varias operaciones pueden ocurrir simultáneamente.

Una computadora paralela es un conjunto de procesadores que son capaces de trabajar

cooperativamente para solucionar un problema computacional. Esta definición es muy extensa e

incluye supercomputadoras que tienen cientos o miles de procesadores, redes de estaciones de

trabajo o estaciones de trabajo con múltiples procesadores.

Mediante la historia se ha visto evolucionar esta programación paralela, y diferentes autores han

escrito sobre esto.

2
PROGRAMACIÓN PARALELA

¿QUE ES LA PROGRAMACIÓN PARALELA?

Es un modelo para escribir programas paralelos los cuales pueden ser compilados y ejecutados.

El valor de un modelo de programación puede ser juzgado por su generalidad (Si las soluciones

ofrecidas son óptimas a comparación de diferentes arquitecturas o soluciones existentes), y su

rendimiento (Eficiencia, precisión o velocidad de la ejecución).

En el sentido más simple, la computación paralela es el uso simultáneo de múltiples recursos

computacionales para resolver un problema computacional:

 Un problema se divide en partes discretas que se pueden resolver simultáneamente

 Cada parte se descompone en una serie de instrucciones

 Las instrucciones de cada parte se ejecutan simultáneamente en diferentes procesadores

 Se emplea un mecanismo global de control/coordinación.

La implementación de un modelo de programación puede tomar varias formas, tales como

bibliotecas invocadas desde lenguajes secuenciales tradicionales, extensiones del lenguaje, o

nuevos modelos completos de ejecución.

3
¿POR QUÉ SE HACE LA PROGRAMACIÓN PARALELA?

El hecho de que la programación paralela sea un paradigma da cuenta de que existe una razón

por la cual no ha dejado de ser necesaria o no ha sido totalmente automatizable, igualmente hay

otras razones interesantes detrás para entender la existencia, actualidad y contemporaneidad de la

programación paralela. En la siguiente grafica podemos ver el orden en que sucede la

programación paralela.

Ilustración 1 Orden de la programación paralela

LA LEY DE MOORE

4
La ley que propuso Gordon E. Moore en 1965 dice resumidamente que el número de transistores

en un chip determinado se doblaría cada dos años. Esto quiere decir un aumento del rendimiento

en los procesadores del alrededor del 50%, pero esta ley no es fidenigna desde el 2002 dónde

solo ha habido un 20%, lo cuál sigue siendo un aumento considerable.

La gráfica adjunta dice que el problema principal es que la ley no puede continuar

indeterminadamente porque esto implica un crecimiento exponencial, el cual es imposible de

mantener por espacio pero principalmente por el punto de la temperatura mismo, se puede ver

que si esto fuese cierto llegaría muy pronto el año en que un solo procesador alcanzara la

temperatura de la superficie del sol.

Ilustración 2 Ley de Moore

OVERCLOCKING INFINITO

5
El overclokcing tiene un límite a pesar de que existiera una refrigeración perpetúa y adecuada del

procesador. Esto es debido a las corrientes parásitas que impiden una velocidad teóricamente

infinita a la cual los circuitos pueden cambiar entre estados, o de hecho sus transistores.

AUTOMATIZACIÓN DEL PARALELISMO

Se dice en este paradigma que el éxito es inversamente proporcional al número de cores

precisamente porque existen complejidades en el corazón del paralelismo que implican cosas que

todavía no se pueden predecir ni con inteligencia artificial.

SOLUCIÓN EN EL HARDWARE

Un diseño adecuado del hardware permitiría que la paralelización siempre estuviera presente con

respecto a los procesadores que se están usando de tal modo que alguno los problemas que son

inherentes al paradigma pudieran evitarse.

CARACTERISTICAS PRINCIPALES

6
Las características de los modelos de programación paralela se pueden sub-dividir ampliamente,

pero se puede generalizar en 2 rasgos fundamentales: la interacción de procesos y los problemas

de descomposición:

INTERACCIÓN DE PROCESO

La interacción de proceso se refiere a los mecanismos por los cuales procesos paralelos son

capaces de comunicarse entre sí. Las formas más comunes de interacción son la memoria y el

paso de mensajes compartidos, pero también puede ser implícita.

 MEMORIA COMPARTIDA: La memoria compartida es un medio eficaz de pasar

datos entre programas. Dependiendo del contexto, los programas pueden ejecutarse en un

procesador único o en varios procesadores separados. Esto requiere mecanismos de

protección, tales como cerraduras, semáforos y monitores para controlar el acceso

concurrente, La memoria compartida puede ser emulada en sistemas de memoria

distribuida pero los tiempos de NUMA (acceso a memoria no uniforme, Non-Uniform

Memory Access) pueden entrar en juego.

 PASO DE MENSAJE: El paso de mensajes es un concepto de la informática que se

utiliza ampliamente en el diseño e implementación de modernas aplicaciones de software;

es clave para algunos modelos de concurrencia y la programación orientada a objetos.

7
Estas comunicaciones pueden ser asíncronas o síncronas. La formalización de la

Comunicación de procesos secuenciales (CSP) del paso de mensaje emplea canales de

comunicación para conectar procesos.

 IMPLICITO: En un modelo implícito, ninguna interacción del proceso es visible al

programador, en cambio el compilador y/o tiempo de ejecución es responsable de realizar

la misma. Esto es más común con los lenguajes con especificidad de dominio en el que la

concurrencia de un problema puede ser más prescrita.

DESCOMPOSICIÓN DE PROBLEMA

Un programa paralelo está compuesto de procesos que están ejecutándose simultáneamente. La

descomposición del problema se refiere a la forma en que se formula estos procesos. Esta

clasificación también puede ser referida como esqueletos algorítmicos o paradigmas de

programación paralela.

 PARALELISMO DE TAREA: Un modelo de tarea paralela se centra en los procesos o

hilos de ejecución. Estos procesos suelen tener conductas distintas, que hace hincapié en

la necesidad de comunicación. El paralelismo de tareas es una forma natural de expresar

la comunicación de paso de mensajes. Por lo general se clasifica como MIMD/MPMD o

MISD.

 PARALELISMO DE DATO: Un modelo de datos en paralelo se centra en realizar

operaciones en un conjunto de datos que por lo general está estructurado en una matriz,

en un sistema de memoria compartida, los datos serán accesibles para todos, pero en un

sistema de memoria distribuida estos serán divididos entre las memorias y trabajados de

8
forma local, el paralelismo de datos por lo general se clasifica como MIMD/SPMD o

SIMD.

 SISTEMAS PARALELOS IDEALIZADOS: Los sistemas idealizados son divididos en

dos categorías. Los sistemas analizados en la primera categoría, se caracterizan por el

aislamiento del espacio de diseño abstracto visto por el programador. En esta, todos los

procesos son presentados con el mismo acceso a algún tipo de espacio de memoria

compartida. . La segunda categoría considera máquinas en las que los dos niveles están

más cerca entre sí y, en particular, aquellos en los que el mundo del programador incluye

paralelismo explícito. Esta categoría descarta la memoria compartida y trabaja con base

en cooperación con alguna forma de paso de mensaje explícito.

HISTORIA

En 1958 Luigi Federico Menabrea habló sobre programación paralela y la necesidad de

“branching” y “waiting”. Para este mismo año investigadores de la empresa IBM discutieron el

uso de paralelismo en cálculos numéricos por primera vez, a mediado de 1962 Burroughs

Corporation creó un computador de 4 procesadores que accedía a 16 módulos de memoria. En

1964 La fuerza aérea estadounidense financió el diseño del primer computador paralelo masivo

ILLIAC IV. (256 procesadores). En 1967 Amdahl y Slotnick debatieron sobre la viabilidad del

procesamiento en paralelo, allí surgió la ley de Amdahl. Primera aplicación corriendo en ILLIAC

IV(1976). Por esta razón este computador fue llamado “the most infamous of the

supercomputers”, ya que solo fue completado en un 25%, tomó 11 años y 4 veces más al costo

9
estimado. El software ha sido una parte activa en la evolución de la programación paralela. Los

programas paralelos son más difíciles de escribir que los programas secuenciales, ya que se

requiere que haya una comunicación y sincronización entre las tareas que se han paralelizado.

VENTAJAS

 Resuelve problemas que no se podrían realizar en una sola CPU

 Resuelve problemas que no se pueden resolver en un tiempo razonable

 Permite ejecutar código de manera más rápida (aceleración)

 Obtención de resultados en menos tiempo

 Permite ejecutar en general más problemas

DESVENTAJAS

 Mayor consumo de energía

 Mayor dificultad a la hora de escribir programas

 Múltiples procesos se encuentran en condición de carrera si el resultado de los mismos

depende del orden de su llegada

 Retardos ocasionados por comunicación ente tareas

ARQUITECTURA DE VON NEUMANN

10
Se caracterizaba por guardar las instrucciones de los procesos y los datos en una memoria

electrónica, a diferencia de cómo se modelaban los computadores de la época a través de una

conexión de cables.

COMPONENTES PRINCIPALES

Como se muestra en la siguiente figura, estas son los componentes que utiliza la arquitectura de

Von Neumann.

 Memoria

 Unidad de control

 Unidad Aritmética Lógica

 Entradas/Salidas

Ilustración 3 Arquitectura de Von Neumann

11
METODOLOGIAS DE DISEÑO

Cuando se diseña un algoritmo paralelo es necesario tener en cuenta:

 Los tiempos de las comunicaciones.

 Maximizar el procesamiento en cada nodo o unidad de procesamiento.

 Los costes de implementar el algoritmo.

 Tiempos de planificación (scheduler).

METODOLOGIA FOSTER

Como se muestra en la siguiente figura la metodología Foster tiene cuatro etapas.

 Particionalmente

 Comunicaciones

 Aglomeración

 Mapeo

12
Ilustración 4 Metodología Foster

TAXONOMIA DE FLYNN

Single Instruction, Single Data (SISD): Hay un elemento de procesamiento, que tiene acceso a

un único programa y a un almacenamiento de datos. En cada paso, el elemento de procesamiento

carga una instrucción y la información correspondiente y ejecuta esta instrucción.

13
Ilustración 5 Single Instruction, Single Data (SISD)

Multiple Instruction, Single Data (MISD): Hay múltiples elementos de procesamiento, en el

que cada cual tiene memoria privada del programa, pero se tiene acceso común a una memoria

global de información. En cada paso, cada elemento de procesamiento de obtiene la misma

información de la memoria y carga una instrucción de la memoria privada del programa.

Ilustración 6 Multiple Instruction, Single Data (MISD)

14
Single Instruction, Multiple Data (SIMD): Hay múltiples elementos de procesamiento, en el

que cada cual tiene acceso privado a la memoria de información (compartida o distribuida). Sin

embargo, hay una sola memoria de programa, desde la cual una unidad de procesamiento

especial obtiene y despacha instrucciones.

Ilustración 7 Single Instruction, Multiple Data (SIMD)

Multiple Instruction, Multiple Data (MIMD): Hay múltiples unidades de procesamiento, en la

cual cada una tiene tanto instrucciones como información separada. Cada elemento ejecuta una

instrucción distinta en un elemento de información distinto.

15
Ilustración 8 Multiple Instruction, Multiple Data (MIMD)

MAESTRO/ESCLAVO

Es usada cuando se tienen dos o más procesos que necesitan ejecutarse simultánea y

continuamente, pero a diferentes velocidades. Si estos procesos corren en un único ciclo, pueden

suceder problemas de temporización graves.

El patrón Maestro/Esclavo consiste en múltiples ciclos en paralelo. Un ciclo actúa como el

maestro y los otros como esclavos. El ciclo maestro controla a todos los demás.

16
ARQUITECTURAS DE MEMORIA DE COMPUTACIÓN PARALELA

MEMORIA COMPARTIDA

 Los procesos comparten un espacio de memoria común

 Escriben y leen de manera asíncrona

UNIFORM MEMORY ACCESS (UMA)

 Lo más comúnmente representado hoy por las máquinas Symmetric Multiprocessor

(SMP).

 Procesadores idénticos

 Si un procesador actualiza una ubicación en memoria compartida, todos los demás

procesadores saben sobre la actualización, esto es llamado coherencia del caché.

Ilustración 9 Uniform Memory Access (UMA)

17
NON-UNIFORM MEMORY ACCESS (NUMA)

 Hecho mediante la vinculación física de dos o más SMP

 Un SMP puede acceder directamente a la memoria de otro SMP

 El acceso a la memoria es más lento

Ilustración 10 Non-Uniform Memory Access (NUMA)

MEMORIA DISTRIBUIDA

Esta arquitectura se basa en múltiples procesadores con su propia memoria física privada, las

tareas pueden operar solo con información local y se necesita de la comunicación para obtener

información remota, a través también de procesadores remotos.

18
EJEMPLO

 Clusters: Colección de computadores que se encuentran interconectados mediante redes

de alta velocidad (Ethernet, SCI, Myrinet, Infiniband) Existe una categorización hecha

por la organización TOP500 que lleva cuenta de los clusteres más poderosos de la tierra

con capacidad de procesamiento del órden de gigaflops.

 Grids: Computadores de múltiples dominios administrativos conectados para solucionar

una tarea determinada.

19
REFERENCIAS

http://ferestrepoca.github.io/paradigmas-de-programacion/paralela/paralela_teoria/index.html

https://es.wikipedia.org/wiki/Modelo_de_programaci%C3%B3n_paralela

20

Potrebbero piacerti anche