Download 1.3. programacion paralela

Document related concepts

Julia (lenguaje de programación) wikipedia , lookup

Programación funcional wikipedia , lookup

Clojure wikipedia , lookup

Erlang wikipedia , lookup

Rust (lenguaje de programación) wikipedia , lookup

Transcript
Tipos de Organización ...
• La organización de máquinas multiprocesadores más
típicas son:
–
–
–
–
–
–
–
Mesh Networks.
Binary Tree Networks.
Hypertree Networks.
Pyramid Networks.
Butterfly Networks.
Hypercube Netwoks.
Cube-Connected Cycles Networks.
III. LENGUAJES Y COMPILADORES.
• Existen 5 modelos de programación para máquinas
multiprocesadores, multicomputadoras y computadoras
vectores/SIMD.
• Estos se basan en diferentes paradigmas de programación para
explotar el paralelismo.
• Modelo I. Modelo de Variables Compartidas. Un programa es
una colección de procesos, el paralelismo depende de cómo los
IPCs son implantados.
• La programación paralela se centra alrededor de la especificación,
creación, suspención, reactivación, migración, terminación y
sincronización de procesos concurrentes que residen en el mismo
o distinto procesador.
• Las variables compartidas se utilizan para la creación del acceso
protegido a recursos, la multiprogramación, multiprocesamiento,
multitarea, multihilo, en la partición, planificación, sincronización
y la duplicidad.
Lenguajes y compiladores ...
• Modelo II. Paso de mensajes:
• Este modelo se basa en el paradigma del paso de mensajes
(parámetros) a través de la red, estos mensajes pueden se
instrucciones, datos, sincronización, señales de interrupción, etc.
• Este modelo de utilizan en máquinas donde no existe memoria
compartida.
• El paso de mensajes puede utilizarse para lograr la computación
paralela, existen tres tipos:
– Paso de mensajes Síncronos. Los procesos se ponen de acuerdo para lograr la
computación paralela.
– Paso de mensajes Asíncronos. No existen ciclos de espera para recibir
información se utilizan grandes buffers para almacenar los mensajes.
– Computación distribuida. Las multicomputadoras principalmente utilizan es
paradigma, no existe memoria compartida pero a través del paso de mensajes
se trata de simular.
• El modelo PRAM débilmente acoplado es utilizado para la
computación distribuida.
Lenguajes y compiladores ...
• Modelo III. Modelo de datos Paralelos:
• El paralelismo es explícitamente controlado por la sincronización
del hardware y el control del flujo.
• Los lenguajes paralelos son modificados utilizando lenguajes
estándares secuenciales (C*, Fortran 90, Ada, etc.).
• Los programas requieren del uso de conjuntos de datos
predistribuidos.
• Generalmente este tipo de lenguajes proveen estructuras de datos
que facilitan el intercambio de datos para realizar operaciones en
paralelo. Los vectores representan a este modelo.
• La sincronización de operaciones en el paralelismo de datos, es
realizada por el compilador. La sincronización del hardware es
forzada por la unidad de control para ejecutar las operaciones.
• Las máquinas SIMD son las que más utilizan este modelo de
programación.
Lenguajes y compiladores ...
• Modelo IV. La Programación Orientada a Objetos:
• Los objetos son creados y manipulados en forma dinámica. El
procesamiento se ejecuta por el envío de mensajes entre objetos.
• Modelos de programación concurrente son construidos sobre objetos
de bajo nivel los cuales son; procesos, colas de mensajes y semáforos
representados por objetos de alto nivel como monitores y módulos de
programas.
• La POO Concurrente es popular debido a la fácil integración de estos
en una GUI, a las facilidades que proveen los sistemas distribuidos y
al creciente poder de computo de máquinas Supercomputadoras.
• El uso de la CPOO para herramientas CAD, CAD/CAM y
CAD/CAE, hacen que este modelo sea muy atractivo.
• La COOP se basa en el modelo de actor; componentes de un sistema
que se comunican con mensajes asíncronos. Pueden ser creados,
enviar mensajes a otros actores y puede cambiar así mismo su
función.
Lenguajes y compiladores ...
• Modelo V. Modelos Funcionales y Lógicos:
• Los lenguajes funcionales se utilizan para computación paralela basada en
el flujo de datos.
• En un lenguaje funcional no existen los conceptos de almacenamiento,
asignación y ramificación. Los resultados de una función se producen sin
importar el orden de procesamiento.
• Esto ayuda al paralelismo basado en el flujo de datos.
• Los lenguajes más utilizados son; Lisp, SISAL y Strand 88.
• Los lenguajes lógicos se basan en el cálculo de predicados (Cláusulas de
Horn). Este modelo permite el paralelismo en el proceso de inferencias
donde se aplican las reglas.
• Las cláusulas de la programación lógica pueden pueden ser transformadas
en diagramas de flujo de datos.
• Los lenguajes paralelos lógicos que existen son; Parlog, Concurrent Prolog
entre otros.
• Ambos lenguajes son utilizados en inteligencia artificial y se consideran
lenguajes de 5a. Generación.
LENGUAJES PARALELOS...
• Chang y Smith (1990) clasificaron los lenguajes paralelos en seis
categorias de acuerdo a sus características.
• 1) Lenguajes con características de Optimización (convertir
programas secuenciales en paralelos):
– Paralelizador Automático. Compilador FX Fortran.
– Paralelizador semiautomático (Directivas de paralelismo). DINO.
– Soporte para reestructuración Interactiva. MIMDizer.
• 2) Características de disponibilidad. Lenguajes que permiten
generar códigos portables para una gran gama de máquinas
paralelas:
– Escalabilidad. Lenguajes que son escalables en el número de procesadores.
– Compatibilidad. El lenguaje paralelo es compatible con un lenguaje
secuencial.
– Portable. El lenguaje es portable a multiprocesadores con memoria
coompartida, con paso de mensajes, o ambos.
• 3) Características de comunicación/sincronización:
– IPCs, mensajes Send/Receive, RPC, Barreras, semáforos, monitores, etc.
Continuación ...
• 4) Control del paralelismo. Características que permiten la
construcción de controles para especificar paralelismo en varias
formas:
–
–
–
–
Grano fino, mediano o burdo. Nivel de paralelismo.
Paralelismo implícito o explícito. Primitivas para indicar paralelismo.
Paralelismo espacial. Paralelismo Global que no permite el independiente.
Paralelismo en iteraciones. Ciclos, condiciones, etc.
• 5) Características del paralelismo de datos. Lenguajes utilizados
para especificar como son accesados y distribuidos los datos en
máquinas SIMD o MIMD:
– Descomposición automática. El usuario no interviene.
– Especificación de distribución.
– Soporte de procesadores virtuales. El compilador distribuye procesadores
virtuales en forma dinámica o estática a procesadores reales.
– Acceso directo a datos compartidos.
• 6) Caracteríticas para el Control de procesos. Creación eficiente
de procesos (Multitarea o multihílo).
Lenguaje de Transputers (OCCAM)..
• OCCAM