Glosario Programacion Paralela

SECRETARÍA DE EDUCACIÓN PÚBLICA TECNOLÓGICO NACIONAL DE MÉXICO INSTITUTO TECNOLÓGICO DE CIUDAD MADERO Ingeniería en Sis

Views 73 Downloads 4 File size 608KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

SECRETARÍA DE EDUCACIÓN PÚBLICA TECNOLÓGICO NACIONAL DE MÉXICO INSTITUTO TECNOLÓGICO DE CIUDAD MADERO

Ingeniería en Sistemas Computacionales Dra. Claudia Guadalupe Gómez Santillán UNIDAD1. Principios de Programación Paralela Fecha: 30 de Agosto 2017 Nombre del Alumno: ___Del Angel Lara Gustavo_____________________________ Ejercicio 2. Construya un glosario de términos con las secciones: Conceptos y Terminología (Entrega miércoles 30 de agosto) y arquitecturas de memoria de las computadoras compartidas (entrega jueves 31 de agosto). Se hará una participación escrita el viernes 1 Septiembre.

GLOSARIO

“C O N C E P T O S

Y

T E R M I N O L O G I A”

Arquitectura Von Neumann. Diseño básico de una computadora llamado por el genio húngaro John von Neumann .Compuesto de cuatro componentes principales: Memoria, Unidad de control, Unidad aritmética lógica, De entrada y salida. Memoria. Lectura / escritura, la memoria de acceso aleatorio se utiliza para almacenar tanto las instrucciones del programa como los datos Unidad de control. Recupera las instrucciones / datos de la memoria, decodifica las instrucciones y luego coordina secuencialmente las operaciones para realizar la tarea programada. Unidad aritmética lógica. Realiza operaciones aritméticas básicas Entrada / Salida. Es la interfaz para el operador humano. Taxonomía de Flynn. Distingue arquitecturas de procesadores múltiples de acuerdo a cómo se pueden clasificar a lo largo de las dos dimensiones independientes de Secuencia de Instrucción y Secuencia de Datos .Cada una de estas dimensiones puede tener sólo uno de dos posibles estados: Single o Multiple. Instrucción Única, Datos Únicos (SISD): Un ordenador en serie (no paralelo). Instrucción Única: La CPU sólo actúa una secuencia de instrucciones durante cualquier ciclo de reloj. Datos Únicos: Sólo se utiliza un flujo de datos como entrada durante cualquier ciclo de reloj Instrucción única, datos múltiples (SIMD): Un tipo de computadora paralela. Instrucción Única: Todas las unidades de procesamiento ejecutan la misma instrucción en cualquier ciclo de reloj dado. Múltiples Datos: Cada unidad de procesamiento puede operar sobre un elemento de datos diferente Instrucción Múltiple, Datos Únicos (MISD): Un tipo de computadora paralela Instrucción múltiple. Cada unidad de procesamiento opera sobre los datos de forma independiente a través de flujos de instrucciones separados. Datos Únicos: Un solo flujo de datos es alimentado en múltiples unidades de procesamiento.

Instrucciones Múltiples, Múltiples Datos (MIMD): Un tipo de computadora paralela. Instrucción múltiple: Cada procesador puede ejecutar una secuencia de instrucciones diferente. Múltiples datos: Cada procesador puede estar trabajando con un flujo de datos diferente. Supercomputación / Computación de Alto Rendimiento (HPC). Uso de las computadoras más rápidas y más grandes del mundo para resolver grandes problemas. Nodo. Una computadora compuesta de múltiples CPUs / procesadores / núcleos, memoria, interfaces de red, etc. Los nodos están conectados en red para formar un superordenador. CPU / Socket / Procesador / Núcleo. Es un nodo con múltiples CPUs, cada uno con múltiples

núcleos. Tarea. Una sección lógicamente discreta de trabajo computacional. Una tarea es típicamente un programa o un programa de conjunto de instrucciones que es ejecutado por un procesador. Un programa paralelo consiste en varias tareas que se ejecutan en varios procesadores. Pipelining. Romper una tarea en pasos realizados por diferentes unidades de procesador, con entradas que fluyen a través de, al igual que una línea de montaje; Un tipo de computación paralela. Memoria compartida. En hardware describe una arquitectura de computadora donde todos los procesadores tienen acceso directo (normalmente basado en bus) a la memoria física común. En un sentido de programación, describe un modelo en el que las tareas paralelas tienen todas la misma "imagen" de memoria y pueden direccionar y acceder directamente a las mismas ubicaciones de memoria lógica independientemente del lugar donde realmente existe la memoria física. Multi-procesador simétrico (SMP). Arquitectura de hardware de memoria compartida en la que múltiples procesadores comparten un solo espacio de direcciones y tienen igual acceso a todos los recursos. Memoria distribuida. En hardware, se refiere al acceso de memoria basado en la red para la memoria física que no es común. Como modelo de programación, las tareas sólo pueden "ver" la memoria de la máquina local y deben utilizar las comunicaciones para acceder a la memoria en otras máquinas en las que se están ejecutando otras tareas. Comunicaciones. Las tareas paralelas normalmente necesitan intercambiar datos. Hay varias maneras en que esto se puede lograr, por ejemplo a través de un bus de memoria compartida o a través de una red, sin embargo el evento real de intercambio de datos se denomina comúnmente comunicaciones independientemente del método empleado. Sincronización. La coordinación de tareas paralelas en tiempo real, muy a menudo asociadas a las comunicaciones. A menudo se implementa estableciendo un punto de sincronización dentro de una aplicación donde una tarea no puede continuar hasta que otra tarea (s) alcanza el mismo punto o lógicamente equivalente. Granularidad. En el cálculo paralelo, granularidad es una medida cualitativa de la relación de cálculo a comunicación.

 

Coarse: cantidades relativamente grandes de trabajo computacional se realizan entre eventos de comunicación Fine: cantidades relativamente pequeñas de trabajo computacional se realizan entre eventos de comunicación

La aceleración observada La aceleración observada de un código que ha sido paralelizado, definido como: Hora del reloj de pared de ejecución en serie Uno de los indicadores más simples y --------------------------------------------------------------ampliamente utilizados para el desempeño de un programa paralelo. Tiempo de reloj de pared de ejecución paralela

Sobrecarga paralela. La cantidad de tiempo necesario para coordinar las tareas paralelas, en lugar de hacer un trabajo útil. La sobrecarga paralela puede incluir factores tales como:     

Tiempo de inicio de la tarea Sincronizaciones Transmisión de datos Sobrecarga de software impuesta por lenguajes paralelos, bibliotecas, sistema operativo, etc. Tiempo de terminación de la tarea

Masivamente paralelo. Se refiere al hardware que comprende un sistema paralelo dado - que tiene muchos elementos de procesamiento. El significado de "muchos" sigue aumentando, pero en la actualidad, las computadoras paralelas más grandes están formadas por elementos de procesamiento que van de cientos de miles a millones. Embarrassingly Parallel. Resolver muchas tareas similares, pero independientes simultáneamente; Poca o ninguna necesidad de coordinación entre las tareas. Escalabilidad. Se refiere a la habilidad de un sistema paralelo (hardware y / o software) para demostrar un aumento proporcional en la aceleración paralela con la adición de más recursos. Los factores que contribuyen a la escalabilidad incluyen:  Hardware - en particular los anchos de banda de la CPU de memoria y las propiedades de comunicación de red  Algoritmo de aplicación  Sobrecarga paralela relacionada  Características de su aplicación específica Ley de Amdahl. Establece que el potencial de aceleración del programa está definido por la fracción de código (P) que puede ser paralelizada:

speedup

=

1 -------1 - P

   

Si no se puede paralelizar ningún código, P = 0 y la aceleración = 1 (sin aceleración). Si todo el código es paralelizado, P = 1 y la aceleración es infinita (en teoría). Si el 50% del código puede ser paralelizado, speedup máximo = 2, lo que significa que el código se ejecutará dos veces más rápido. Al presentar el número de procesadores que realizan la fracción paralela de trabajo, la relación puede ser modelada por: 1 speedup = -----------P + S --N Donde P = fracción paralela, N = número de procesadores y S = fracción serial.

Requerimientos de recursos: La principal intención de la programación paralela es disminuir el tiempo de ejecución del reloj de pared, sin embargo, para lograr esto, se requiere más tiempo de CPU. Por ejemplo, un código paralelo que se ejecuta en 1 hora en 8 procesadores en realidad utiliza 8 horas de tiempo de CPU. La cantidad de memoria requerida puede ser mayor para los códigos paralelos que para los códigos serie, debido a la necesidad de replicar datos y para los gastos generales asociados con bibliotecas y subsistemas de soporte paralelo. Para los programas paralelos de corta duración, puede haber una disminución en el rendimiento en comparación con una implementación en serie similar. Los costes generales asociados con la configuración del entorno paralelo, la creación de tareas, las comunicaciones y la terminación de tareas pueden comprender una parte significativa del tiempo de ejecución total para ejecuciones cortas. Escalabilidad: Dos tipos de escalado basado en el tiempo hasta la solución: escalado fuerte y escalamiento débil. Escala fuerte:  El tamaño total del problema permanece fijo a medida que se agregan más procesadores.  El objetivo es correr el mismo tamaño de problema más rápido  La escala perfecta significa que el problema se resuelve en tiempo 1 / P (comparado con el serial) Escala débil:  El tamaño del problema por procesador permanece fijo a medida que se agregan más procesadores.  El objetivo es correr un problema mayor en la misma cantidad de tiempo  La escala perfecta significa que el problema Px se ejecuta en el mismo tiempo que la ejecución de un único procesador

GLOSARIO

“ARQUITECTURAS DE MEMORIA DE LAS COMPUTADORAS COMPARTIDAS”

Memoria compartida:  Capacidad de todos los procesadores de acceder a toda la memoria como espacio de direcciones global.  Procesadores pueden funcionar independientemente pero comparten los mismos recursos

de memoria.  Los cambios en una ubicación de memoria efectuados por un procesador son visibles para todos los demás procesadores. Se clasifican basándose en los tiempos de acceso a la memoria como: UMA y NUMA

Acceso a memoria uniforme (UMA):    

Representado hoy por las máquinas Symmetric Multiprocessor (SMP) Procesadores idénticos Igual acceso y tiempos de acceso a la memoria A veces llamado CC-UMA - Cache Coherente UMA

Cache Coherente (CC-UMA): Significa que si un procesador actualiza una ubicación en memoria compartida, todos los demás procesadores conocen la actualización.

Acceso a memoria no uniforme (NUMA):     

Físicamente enlazando dos o más SMPs. Un SMP puede acceder directamente a la memoria de otro SMP. No todos los procesadores tienen igual tiempo de acceso a todas las memorias. El acceso a la memoria a través del enlace es más lento Si se mantiene la coherencia de la caché, entonces también se puede llamar CC-NUMA Cache Coherente NUMA.

Ventajas: El espacio de direcciones global proporciona una perspectiva de programación fácil de usar a la memoria. El intercambio de datos entre tareas es rápido y uniforme. Desventaja: La principal desventaja es la falta de escalabilidad entre la memoria y las CPU.

Memoria distribuida:    

Los sistemas de memoria distribuida requieren una red de comunicación para conectar la memoria entre procesadores. Los procesadores tienen su propia memoria local. Los cambios que realiza en su memoria local no tienen ningún efecto en la memoria de otros procesadores. Por lo tanto, el concepto de coherencia de caché no se aplica. Cuando un procesador necesita acceso a datos en otro procesador, suele ser la tarea del programador definir explícitamente cómo y cuándo se comunican los datos.

Ventajas:   

La memoria es escalable con el número de procesadores. Aumentar el número de procesadores y el tamaño de la memoria aumenta proporcionalmente. Cada procesador puede acceder rápidamente a su propia memoria sin interferencias. Rentabilidad: puede utilizar productos básicos, procesadores estándar y redes.

Desventajas:   

El programador es responsable de muchos de los detalles asociados con la comunicación de datos entre procesadores. Puede ser difícil asignar estructuras de datos existentes, basadas en la memoria global, a esta organización de memoria. Tiempos de acceso a la memoria no uniformes - los datos que residen en un nodo remoto tardan más en tener acceso que los datos locales del nodo.

Memoria compartida distribuida híbrida   

Las computadoras más grandes y más rápidas del mundo emplean arquitecturas de memoria compartida y distribuida. El componente de memoria compartida puede ser una máquina de memoria compartida y / o unidades de procesamiento gráfico (GPU). El componente de memoria distribuida es la conexión en red de múltiples máquinas de memoria compartida / GPU, que sólo conocen su propia memoria, no la memoria en otra máquina. Por lo tanto, las comunicaciones de red se requieren para mover datos de una máquina a otra.

Ventajas y desventajas:  Mayor escalabilidad es una ventaja importante  El aumento de la complejidad del programador es una desventaja importante