capitulo 7 

INTRODUCCIÓN: COMPUTADORES PARALELOS, PROGRAMACIÓN PARALELA Y PRESTACIONES


Integrantes:
- Alejandro Palomino Carlos 
- Araujo Perez Pedro
- Lozano Jara Pedro
- Reyes Aranda Heyller

INTRODUCCIÓN

En esta semana se introduce a la estructura de un computador con múltiples procesadores, distintas facetas dentro de la programación paralela y las medidas que se suelen utilizar para evaluar las prestaciones de computadores y programas paralelos



I. Arquitecturas paralelas y niveles de paralelismo

1.1. Niveles y tipos de paralelismos implementados en la arquitectura

El computador es un sistema complejo tanto en hardware y en software. Para su estudio se realizan diferentes niveles de abstracción.

  • Nivel de componentes
  • Nivel de Circuito Electrónico
  • Nivel de Lógica Digital
  • Nivel de Transferencia de Registros
  • Nivel del Sistema Computador

En cada uno de estos niveles se implementa el paralelismo. Ademas por encima estaría el Nivel de Sistema Operativo, que actúa como interfaz entre el hardware y el software

Cada uno de los componentes visibles en un nivel se puede estudiar aisladamente como un sistema que procesa entradas.

Para incrementar las prestaciones se aprovecha el paralelismo explicito o implícito en las entradas.
Hay dos alternativas:
  • Replicar componentes del sistema
  • Segmentar el uso de los componentes

Los computadores paralelos , son arquitecturas paralelos que implementan paralelismo a nivel de sistema computador, replican para ello los  procesadores.

Niveles y Tipos de paralelismo IMPLÍCITO en una APLICACIÓN

Podemos clasificar los niveles de paralelismo de una aplicación en función del nivel de abstracción dentro del código secuencial de un programa en el que podemos encontrar implícito el paralelismo. 

Observemos la siguiente imagen

 

Cuando hablamos de código secuencial, nos referimos a código escrito en lenguaje imperativo 
Código secuencial es una descripción estructurada 

Dentro del código secuencial se puede encontrar paralelismo implícito en los siguientes niveles de abstracción:

  • Nivel de Programas
  • Nivel de funciones
  • Nivel de bucles (bloques)
  • Nivel de operaciones     
 
A este paralelismo que se puede detectar en distintos niveles de un código secuencial, se le ha denominado paralelismo funcional. Por otra parte, nos encontramos con el paralelismo de datos y  el paralelismo de tareas.

El paralelismo de tareas (task- parallelism)

Se encuentra extrayendo, generalmente de la definición de la aplicación, la estructura lógica de funciones de la aplicación. 

En esta estructura, los bloques son funciones, y las conexiones entre ellos reflejan el flujo de datos entre funciones. Analizando esta estructura se puede encontrar paralelismo ente las funciones. Equivaldría al paralelismo a nivel de función dentro del código de alto nivel.

El paralelismo de datos (data- parallelism)

Por su parte, se encuentra implícito en las operaciones con estructuras de datos (vectores y matrices). Se puede extraer de una representación matemática de las operaciones de la aplicación. Las operaciones vectoriales y matriciales engloban múltiples operaciones con datos escalares, que se puede realizar en paralelo. Las operaciones con vectores y matrices se implementan mediante bucles. Por tanto, el paralelismo de datos está relacionado con el paralelismo a nivel de bucle. 
El paralelismo puede también clasificarse en función  de la granularidad o magnitud de la tarea (número de operaciones) 

3.1. Unidades de ejecución: instrucciones, hebras,procesos

El hardware se encarga de gestionar la ejecución  de las instrucciones. A nivel superior, el sistema operativo se encarga de gestionar la ejecución  de unidades de mayor granularidad, procesos y hebras. 


1.4. Relación entre paralelismo implícito, explicito y arquitecturas paralelas

Se relacionan los distintos niveles en los que se encuentra el paralelismo implícito en el código, con los niveles en los que se puede hacer explícito y con arquitecturas paralelas que aprovechan el paralelismo. 


1.5. Detección, utilización, implementación y extracción del paralelismo

En la siguiente figura se relaciona el agente que extrae el paralelismo implícito en los diferentes niveles del código de la aplicación, con los niveles en los que se hace explícito y las arquitecturas que los aprovechan.


Title

Made with Slides.com