SlideShare una empresa de Scribd logo
Universidad de Cuenca
Sistemas Distribuidos
José Moyano
 Arquitectura de von Neumann
 La arquitectura de von Neumann consiste de una memoria principal, una
unidad central de proceso (CPU) y una interconexión entre la memoria y el
CPU
 La memoria principal esta compuesta por múltiples ranuras, donde cada
uno almacena instrucciones y datos
 EL CPU esta dividido en la unidad de control y la unidad lógica.
 La unidad de control decide que instrucción debería ejecutarse en un
programa y la unidad aritmética lógica ejecuta la instrucción elegida.
 Las instrucciones y los datos son transmitidos entre el CPU y la memoria
vía interconexión.
 La separación de la memoria y el CPU es conocido como el cuello de
botella de von Neumann
Algunos Antecedentes
Procesos, multitareas e hilos
 Cuando se ejecuta un programa, el sistema operativo crea una proceso
que será una instancia del programa que esta siendo ejecutado
 Un proceso consiste de varias entidades:
 El programa de lenguaje de máquina ejecutable
 Un bloque de memoria
 La descripción de recursos que ocupa el proceso en el sistema
operativo
 Información de seguridad
 Información de estado del proceso
Modificaciones del Modelo de von
Neumann
 Los fundamentos del caching
 La memoria caché es una colección de posiciones de memoria a las
cuales se puede acceder en menos tiempo
 Un problema en la cache es decidir qué datos y que instrucciones
deben ser almacenadas en la caché
 Cuando la CPU escribe datos en una memoria caché, el valor en la
memoria caché y el valor en la memoria principal son diferentes.
Asignaciones de Cache
 En un extremo hay una caché
totalmente asociativa, en el que una
nueva línea se puede colocar en
cualquier ubicación en la memoria
caché.
 El otro extremo hay una caché de
asignación directa, en la que cada
línea tiene una ubicación única en
la caché al que se le asignará.
Memoria Virtual
 La cache hace que el CPU pueda acceder rápidamente a instrucciones y
datos que se encuentran en la memoria principal.
 La memoria virtual fue desarrollada para que la memoria principal puede
funcionar como una memoria caché para el almacenamiento secundario
 Podemos tener problemas si tratamos de asignar direcciones de memoria
física a páginas cuando compilamos un programa.
 Numero de paginas virtuales
 Un inconveniente con el uso de una tabla de páginas es que puede
duplicar el tiempo necesario para acceder a una ubicación en la memoria
principal
Paralelismo a nivel de instrucción (ILP)
 Pipelining (Canalización)
 Similar a la fabricación de un vehículo: mientras que un equipo atornilla el
motor, otro equipo se puede conectar a la transmisión del motor, y el
tercer equipo puede atornillar el motor al chasis.
 Multiple issue (Problema múltiple)
 Canales que mejoran el rendimiento mediante la adopción de las piezas
individuales de hardware o unidades funcionales y conectándolos en
secuencia.
 En la especulación, el compilador o el procesador realiza una suposición
acerca de una instrucción y, a continuación, ejecuta la instrucción sobre la
base de la suposición.
Hardware multihilos
 ILP puede ser muy difícil de explotar porque tiene una larga secuencia de
estados dependientes y ofrece pocas oportunidades.
 Paralelismo a nivel de hilo (TLP)
 Proporcionar paralelismo a través de la ejecución simultánea de
diferentes hilos, por lo que proporciona un paralelismo de más grueso
que ILP.
Hardware multihilos
 Hardware multihilos
 proporciona un medio para que los sistemas sigan haciendo un trabajo
útil, cuando la tarea que se está ejecutando actualmente ha sido
llamada.
 Multihilos fine-grained
 el procesador cambia entre las discusiones después de cada
instrucción, saltándose las discusiones que se estancaron.
 Multihilos simultáneos (SMT)
 Intenta explotar procesadores superescalares al permitir que múltiples
hilos para hacer uso de las múltiples unidades funcionales
Hardware Paralelo
 Sistemas Single instruction, multiple data, o SIMD
 En la computación paralela, la taxonomía de Flynn se utiliza con
frecuencia para clasificar arquitecturas de computadora.
 Operan en múltiples flujos de datos mediante la aplicación de un
elemento a múltiples elementos de datos, considerándolo un sistema
abstracto por tener una sola unidad de control
Sistemas SIMD
 Procesadores vectoriales
 Pueden operar sobre matrices o vectores de datos.
 Registros vectoriales: son registros capaces de almacenar un vector de
operandos y operaciones simultáneamente en sus contenidos.
 Vector y unidades funcionales canalizados: se aplica la misma
operación para cada par de elementos en los dos vectores
correspondientes.
 Instrucciones vectoriales: Estas son las instrucciones que operan sobre
vectores en lugar de escalares.
Sistemas SIMD
 Procesadores vectoriales
 Memoria intercalada: El sistema de memoria consiste en múltiples
"bancos" de la memoria, que se puede acceder independiente.
 Acceso a la memoria strided y hardware scatter/gater: el programa
accede a los elementos de un vector situado a intervalos fijos.
 Unidades de procesos gráficos
 Convierten la representación interna, en una matriz de píxeles que
puede ser enviado a una pantalla de ordenador.
 Mantienen altas tasas de movimiento de datos con el fin de evitar los
puestos de acceso a memoria.
Unidades de procesamiento de Gráficos
(GPU)
 Usan una canalización de procesamiento de gráficos para convertir la
representación interna en una matriz de píxeles que puede ser enviado a
una pantalla de ordenador.
 El comportamiento de las etapas programables se especifica mediante
funciones llamadas funciones de sombreado.
 Funciones de sombreado son paralelos implícitamente, ya que se pueden
aplicar a varios elementos en el flujo de gráficos.
Unidades de procesamiento de Gráficos
(GPU)
 El procesamiento de una sola imagen puede requerir grandes cantidades
de datos, cientos de megabytes de datos para una sola imagen no es
inusual.
 Los GPU necesitan mantener altas tasas de movimiento de datos, y con el
fin de evitar los puestos de acceso a memoria, dependen en gran medida
de multithreading de hardware; algunos sistemas son capaces de
almacenar el estado de más de un centenar de hilos suspendidos por cada
hilo de ejecución.
 Los GPU no son sistemas SIMD puros. Aunque la ALU en un núcleo
determinado hacer paralelismo utilizado SIMD
Sistemas MIMD
 Multiple instruction, multiple data o MIMD
 Soportan múltiples flujos de instrucción simultáneas que operan en
múltiples flujos de datos.
 Sistemas de memoria compartida:
Utilizan uno o más procesadores multinúcleo.
En los sistemas de memoria compartida con varios procesadores
multi-núcleo, la interconexión puede o bien conectar todos los
procesadores directamente a la memoria principal o cada
procesador puede tener una conexión directa a un bloque de
memoria principal
Sistemas MIMD
 Sistemas de memoria distribuida
 Los sistemas de memoria distribuida más ampliamente disponibles son
llamados clusters.
 La red proporciona la infraestructura necesaria para convertir grandes
redes de ordenadores distribuidos geográficamente en un sistema de
memoria distribuida unificada
Sistemas de memoria Compartida
 Los sistemas de memoria compartida utilizan uno o más procesadores multinúcleo.
Sistemas de memoria Compartida
 En los sistemas de memoria compartida puede conectar todos los procesadores
directamente a la memoria principal
 Cada procesador puede tener una conexión directa a un bloque de memoria
principal
 Los procesadores pueden acceder a bloques de memoria principal de los demás a
través de hardware especial
 Sistemas UMA son más fáciles de programar, ya que el programador no tiene que
preocuparse acerca de los diferentes tiempos de acceso a diferentes posiciones de
memoria.
 Esta ventaja puede ser compensado por el acceso más rápido a la memoria
conectado directamente en los sistemas NUMA.
 Los sistemas NUMA tienen el potencial de utilizar mayores cantidades de memoria
que los sistemas de UMA.
Sistemas de Memoria Distribuida
 Se componen de una colección de productos básicos de sistemas, por ejemplo,
PCs conectados por una red para la interconexión de los productos básicos
 son sistemas de memoria compartida con uno o más procesadores de múltiples
núcleos.
Redes de interconexión
 Interconexiones de memoria compartida
 Bus de Interconexión:
 El bus es un conjunto de cables de comunicación en paralelo junto con un poco de
hardware que controla el acceso al bus
 La característica clave de un bus es que los cables de comunicación son compartidos por
los dispositivos que están conectados a él
 Los buses tienen la virtud de bajo coste y la flexibilidad; múltiples dispositivos pueden ser
conectados a un bus con poco coste adicional.
 Si conectamos un gran número de procesadores a un bus, es de esperar que los
procesadores con frecuencia tendrían que esperar el acceso a la memoria principal.
Redes de interconexión
 Interconexiones de memoria compartida
 Interconexión Conmutada utilizan interruptores para controlar el enrutamiento de los
datos entre los dispositivos conectados.
 Con interruptores y al menos tantos módulos de memoria como procesadores, sólo
habrá un conflicto entre dos núcleos que intentan acceder a la memoria si los dos
núcleos intentan acceder simultáneamente el mismo módulo de memoria.
 Los Crossbars permiten la comunicación simultánea entre diferentes dispositivos, por lo
que son mucho más rápidos que los bus.
 El costo de los conmutadores y enlaces es relativamente alta.
 Un sistema basado en bus pequeña será mucho menos caro que un sistema basado en el
crossbars del mismo tamaño.
Redes de interconexión
 Interconexiones de memoria distribuida
 Se dividen en dos grupos: las interconexiones directas e interconexiones indirectos
 En una interconexión directa cada interruptor está conectado directamente a un par
procesador de memoria
 Los conmutadores están conectados el uno al otro.
 Un anillo es superior a una simple bus ya que permite múltiples comunicaciones
simultáneas.
 Es fácil de diseñar esquemas de comunicación en el que algunos de los procesadores
deben esperar a que otros procesadores para completar sus comunicaciones.
Redes de interconexión
 Interconexiones de memoria distribuida
 La malla toroidal será más caro que el anillo, ya que los interruptores son más complejos,
que deben apoyar cinco enlaces en lugar de tres, y si hay p procesadores, el número de
enlaces es 3p en una malla toroidal, mientras que es sólo 2p en un anillo.
 El número de posibles patrones de comunicaciones simultáneas es mayor con una malla
que con un anillo.
Redes de interconexión
 Interconexiones de memoria distribuida
 Una medida de "número de comunicaciones simultáneas" y "conectividad" es
el ancho de bisección.
 El sistema paralelo se divide en dos mitades y cada mitad contiene la mitad de
los procesadores o nodos.
 (a) hemos dividido un anillo con ocho nodos en dos grupos de cuatro nodos, y
podemos ver que sólo dos comunicaciones pueden tener lugar entre las
mitades
 (b) hemos dividido los nodos en dos partes para que cuatro comunicaciones
simultáneas puede tener lugar
Redes de interconexión
 Interconexiones de memoria distribuida
 Ancho de banda bisección se utiliza a menudo como una medida de la calidad
de la red.
Redes de interconexión
 Interconexiones de memoria distribuida
 La interconexión directa ideal es una red totalmente conectada en el que cada
conmutador está conectado directamente a cada otro interruptor
 Su ancho de bisección es p2 = 4.
 No es práctico la construcción de una interconexión para sistemas con pocos
nodos, ya que requiere un total de p2 = 2CP = 2 enlaces
 Cada interruptor debe ser capaz de conectarse a enlaces p.
 Es una "mejor teórica posible" interconexión
que uno práctico, y se utiliza como base
para la evaluación de otras interconexiones.
Redes de interconexión
 Interconexiones de memoria distribuida
 El hipercubo es una interconexión directa altamente conectadas que se ha
utilizado en los sistemas reales
 Hipercubos se construyen inductivamente:
 un hipercubo unidimensional es un sistema plenamente conectado con dos
procesadores.
 Un hipercubo bidimensional está construido a partir de dos hipercubos
unidimensionales al unirse a los interruptores "correspondiente“
 un hipercubo de dimensión d tiene nodos 2D p D, y un interruptor en un
hipercubo d-dimensional está conectado directamente a un procesador y los
interruptores de d
Redes de interconexión
 Interconexiones de memoria distribuida
 El ancho de bisección de un hipercubo es p = 2, por lo que cuenta con más conectividad
que un anillo o malla toroidal, pero los interruptores debe ser más potente, ya que
deben soportar 1CD D 1 Log2.p/ cables, mientras que la malla cambia sólo requieren
cinco cables.
Redes de interconexión
 Interconexiones de memoria distribuida
 Interconexiones indirectos proporcionan una alternativa a las interconexiones directas.
 En una interconexión indirecta, los interruptores no pueden ser directamente conectado
a un procesador.
 A menudo son mostrados con enlaces unidireccionales y una colección de procesadores,
cada uno de los cuales tiene un saliente y un enlace de entrada, y una red de
conmutación.
Redes de interconexión
 Interconexiones de memoria distribuida
 En una red de omega, los interruptores son de dos por dos crossbars
 Hay comunicaciones que no pueden ocurrir simultáneamente.
 La red omega es menos costoso que el crossbars.
 La red utiliza omega 1 2 log2.p / de los conmutadores 2x2 crossbars, por lo que utiliza un
total de 2p log2.p / interruptores, mientras que el crossbars utiliza p2.
Latencia y ancho de banda
 Cualquier dato de tiempo es transmitido, interesando el tiempo que tomará para
que los datos llegan a su destino.
 Esto se da si hablamos de la transmisión de datos entre la memoria principal y la
memoria caché, caché y registro, disco duro y la memoria, o entre dos nodos de
una memoria distribuida o sistema híbrido.
 Hay dos figuras que se utilizan a menudo para describir el comportamiento de una
interconexión: la latencia y el ancho de banda.
 La latencia es el tiempo que transcurre entre el inicio de la fuente para transmitir
los datos de partida y de destino para recibir el primer byte.
 El ancho de banda es la velocidad a la que el destino recibe los datos después de
que ha comenzado a recibir el primer byte.
 message transmission time = l + n / b
La coherencia de caché
 Recordemos que las cachés del CPU son gestionados por el
hardware del sistema:
 Los programadores no tienen control directo sobre ellos.
 Esto tiene varias consecuencias importantes para los sistemas de
memoria compartida.
 Supongamos que tenemos un sistema de memoria compartida
con dos núcleos, cada uno de los cuales tiene su propia caché de
datos privado.
 Mientras los dos núcleos de sólo lectura de datos compartidos,
no hay ningún problema.
 Este comportamiento impredecible ocurrirá independientemente
de si el sistema está utilizando una escritura simultánea o una
política write-back.
Revisando la coherencia de caché
Software Paralelo
 Advertencias
 Mientras que el uso de la GPU como una plataforma para la computación paralela
continúa creciendo a un ritmo rápido
 Las interfaces de programación de aplicaciones (API) para las GPU son necesariamente
muy diferentes de APIs estándar MIMD.
 Nos centraremos principalmente en lo que a menudo se llama programa único, múltiples
datos o SPMD.
 En lugar de ejecutar un programa diferente en cada núcleo, programas SPMD consisten
en un solo ejecutable que puede comportarse como si fuera varios programas diferentes
a través del uso de saltos condicionales.
 Recordemos que un programa es paralelo si se obtiene su paralelismo dividiendo las
tareas entre los hilos o procesos.
Software Paralelo
 Coordinar los procesos / hilos
 Dividir el trabajo entre los procesos / hilos
Cada proceso / hilo obtiene aproximadamente la misma cantidad de
trabajo
Se minimiza la cantidad de comunicación necesaria
 Se encargará de los procesos / hilos para sincronizar.
 Se encargará de la comunicación entre los procesos / hilos.
Software Paralelo
 Memoria Compartida
 Threads dinámicos y estáticos
 Muchos entornos de programas de memoria compartida utilizan hilos dinámicos.
 En este paradigma, a menudo hay un hilo principal y en un momento dado una
colección de subprocesos de trabajo.
 El hilo principal normalmente espera a peticiones- trabajo
 Este paradigma hace un uso eficiente de los recursos del sistema ya que los recursos
que se requieren de un hilo solamente se utilizan mientras que el hilo se ejecuta
realmente.
Software Paralelo
 Memoria Compartida
 Threads dinámicos y estáticos
 Una alternativa al paradigma dinámico es el paradigma hilo estática.
 En este paradigma, todos los hilos están bifurcadas después de cualquier
configuración que necesita el hilo principal y los hilos de correr
 Si un hilo está inactivo, sus recursos no puede ser liberados.
 Tiene la virtud de que está más cerca del paradigma más utilizado para la
programación de memoria distribuida
Software Paralelo
 Memoria Compartida
 No determinismo
 En cualquier sistema MIMD en la que los procesadores ejecutan de forma asíncrona
es probable que no habrá no determinismo.
 Un cálculo es no determinista si una entrada dada puede dar lugar a diferentes
salidas.
 Si varios subprocesos se ejecutan de forma independiente, la tasa relativa a la que
van a completar declaraciones varía de ensayo a ensayo.
 El mecanismo más comúnmente utilizado para asegurar la exclusión mutua es un
bloqueo de exclusión mutua o mutex o de bloqueo.
 Un mutex es un tipo especial de objeto que tiene apoyo en el hardware subyacente.
 La idea básica es que cada sección crítica está protegido por una cerradura. Antes de
que un hilo puede ejecutar el código en la sección crítica.
Software Paralelo
 Memoria Compartida
 Hilo de seguridad
Los programas paralelos pueden llamar funciones desarrolladas para su
uso en programas de serie
Una variable estática que se declaró en una función persiste de una
llamada a otra.
Una función como strtok no es seguro para subprocesos.
Esto significa que si se utiliza en un programa de multiproceso, puede
haber errores o resultados inesperados.
Cuando un bloque de código no es hilo de seguridad, por lo general es
debido a diferentes hilos están accediendo a los datos compartidos.
Software Paralelo
 Memoria Distribuida
 Paso de mensajes
Es un API de paso de mensajes proporcionando un envío y una función de
recepción.
Primera nota de que el segmento de programa es SPMD.
Los dos procesos están utilizando el mismo ejecutable
En segundo lugar, tenga en cuenta que el mensaje variable se refiere a los
diferentes bloques de memoria en los diferentes procesos.
Los programadores a menudo enfatizan mediante el uso de nombres de
variables tales como mi mensaje o mensajes local.
Software Paralelo
 Memoria Distribuida
 Paso de mensajes
Implementaciones de las API de paso de mensajes permiten que todos los
procesos de acceso a stdout y stderr permiten escribir en la salida estándar
Paso de mensajes es una muy poderosa y versátil API para el desarrollo de
programas paralelos.
Las estructuras de datos en el programa pueden tener que tampoco ser
replicado por cada proceso o distribuirse de forma explícita entre los
procesos.
Software Paralelo
 Memoria Distribuida
 Comunicación Unilateral
En paso de mensajes, un proceso, debe llamar a una función de envío y el
envío debe ir acompañado por otro proceso "llamar a una función de
recepción.
Toda comunicación requiere la participación explícita de los dos procesos.
En la comunicación de un solo lado, o acceso a la memoria remota, un solo
proceso llama a una función, que actualiza la memoria, con un valor de
otro proceso o memoria remota con un valor en el proceso de llamada.
Software Paralelo
 Memoria Distribuida
 Idiomas de espacio de direcciones mundial con particiones
Varios grupos están desarrollando lenguajes de programación en paralelo
que permiten al usuario utilizar técnicas de memoria compartida para el
hardware de programación distribuida
Si simplemente escribimos un compilador que trata las memorias
colectivas en un sistema de memoria distribuida como una sola memoria
de gran tamaño, nuestros programas tendrían pobres, o, en el mejor, el
rendimiento impredecible
PGAS proporcionan algunos de los mecanismos de los programas de
memoria compartida.
Software Paralelo
 Memoria Distribuida
 Sistemas híbridos de programación
Es posible programar los sistemas tales como grupos de procesadores
multinúcleo utilizando una combinación de una API de memoria
compartida en los nodos y una API de memoria distribuida para la
comunicación de los entrenudos.
Esto por lo general sólo se realiza para los programas que requieren los
más altos niveles de rendimiento, ya que la complejidad de esta API
"híbrido" hace que el desarrollo de programas extremadamente difícil.
ENTRADA Y SALIDA
 Funciones printf, fprintf, scanf, fscanf son funciones usadas para mostrar en la
pantalla estándar.
 Cuando llamamos a printf de múltiples procesos nos gustaría que la salida aparece
en la consola de un solo sistema, el sistema en el que comenzó el programa.
ENTRADA Y SALIDA
 Con el fin de abordar parcialmente esas cuestiones, vamos a estar haciendo estas
suposiciones y siguiendo estas reglas cuando nuestros programas paralelos tienen
que hacer E / S:
 En los programas de memoria distribuida, único proceso 0 accederá stdin. En los
programas de memoria compartida, sólo el hilo principal o hilo 0 accederán stdin.
 En ambos programas de memoria distribuida y de memoria compartida, todos los
procesos / hilos pueden acceder a stdout y stderr.
 Debido a la orden no determinista de salida a la salida estándar, en la mayoría de los
casos sólo un único proceso / hilo se utilizará para toda la salida a la salida estándar.
 Sólo un proceso individual / hilo intentará acceder a cualquier archivo única stdin, stdout
o stderr.
Rendimiento
 Aceleración y Eficiencia
 Lo mejor que podemos hacer es dividir por igual el trabajo entre los núcleos
 Si tenemos éxito en hacer esto, y corremos nuestro programa con núcleos p, un hilo o
proceso en cada núcleo, entonces nuestro programa paralelo se ejecutará p veces más
rápido que el programa de serie.
 Así que si definimos la aceleración de un programa paralelo como:
 S=aceleración
 T=tiempo
Rendimiento
 Aceleración y Eficiencia
 E=eficiencia
 P=rendimiento
Rendimiento
 Aceleración y Eficiencia
 Está claro que Tparallel, S y E dependen de p, el número de procesos o hilos.
 También tenemos que tener en cuenta que Tparallels, E y Tserial todos dependen del
tamaño del problema.
 Si Toverhead denota esta sobrecarga en paralelo, es a menudo el caso de que:
Rendimiento
 Velocidad y Eficiencia
Rendimiento
 Amdahl’s law
 Dice que a menos que la práctica de un programa en serie se paraleliza, la posible
aceleración va a ser muy limitado, independientemente de la cantidad de núcleos
disponibles.
 Ejemplo:
 Si somos capaces de paralelizar el 90% de un programa en serie:
Tserial =20s
0.9 X Tserial/p=18/p
0.1 X Tserial=2
 Aceleración es:
Rendimiento
 Amdahl’s law
 Por consiguiente, la fracción S debe ser menor que:
 Es decir, S <=10. Esto es decir que a pesar de que hemos hecho un trabajo perfecto en la
paralelización 90% del programa, e incluso si tenemos, digamos, 1000 núcleos, vamos a
no conseguir un aumento de velocidad mejor que 10.
Rendimiento
 Escalabilidad
 La palabra "escalable" tiene una amplia variedad de usos informales.
 En términos generales, una tecnología es escalable si se puede manejar cada vez
mayores tamaños de problemas.
 En las discusiones sobre el desempeño del programa paralelo, escalabilidad tiene una
definición algo más formal.
 Supongamos que ejecutamos un programa paralelo con un número fijo de procesos /
hilos y un tamaño de entrada fija, y obtenemos una eficiencia E.
 Supongamos que ahora aumentamos el número de procesos / hilos que son utilizados
por el programa.
 Si podemos encontrar una tasa correspondiente de aumento en el tamaño del problema
para que el programa siempre tiene la eficiencia E, entonces el programa es escalable.
Rendimiento
 Escalabilidad
 Suponiendo que Tserial = n, también suponemos que Tparalelo = n/p +1
 Hacerle un cuadro de tendencia con el ejemplo incrementando p; y cambiando
el tiempo serial y cambiando el porcentaje de paralelización
Diseño de Programas Paralelos
 La metodología de Foster
 Particiones. Divide el cálculo a realizar y los datos operados por el cálculo en tareas
pequeñas. El objetivo aquí debe ser en la identificación de las tareas que se pueden
ejecutar en paralelo.
 Comunicación. Determine lo que la comunicación debe ser llevado a cabo una de las
tareas identificadas en el paso anterior.
 Aglomeración vs agregación. Combinar las tareas y las comunicaciones señaladas en el
primer paso en tareas más grandes
 Mapeo. Asignar las tareas compuestos identificados en el paso anterior para procesos /
hilos.
Diseño de Programas Paralelos
 Un programa de serie
 Es bastante sencillo escribir un programa en serie que genera un histograma. Tenemos
que decidir lo que los contenedores son, determinar el número de mediciones en cada
bandeja, e imprimir las barras del histograma
 1. el número de mediciones, data_count
 2. una serie de data_count flotadores, los data;
 3. El valor mínimo para el bin que contiene los valores más pequeños, min_meas;
 4. el valor máximo para el depósito que contiene los valores más grandes, max_meas;
 5. el número de contenedores, bin_count;
Diseño de Programas Paralelos
 Paralelización del programa de serie
 Si asumimos que el data_count es mucho mayor que el bin_count, a
continuación, incluso si utilizamos búsqueda binaria en la función find_bin, la
gran mayoría de los trabajos en este código será en el circuito que determina
los valores de recuentos de intervalos.
 Por tanto, el enfoque de nuestra paralelización debería estar en este bucle, y
vamos a aplicar la metodología de Foster a la misma. Lo primero a destacar es
que los resultados de los pasos de la metodología de Foster son de ningún
modo determinado de forma única, por lo que no debería sorprenderse si en
cualquier etapa a llegar a algo diferente.
Metodología de Foster
 Consiste en un conjunto de tareas que pueden interactuar entre sí enviando
mensajes a través de canales.
 Una tarea es un programa, su localidad de memoria y puertos de I/O.
 Un canal es una cola de mensajes que conecta el puerto de salida de una tarea con
el puerto de entrada de otra.
 El envío es una operación asíncrona mientras que la recepción es una operación
síncrona.
Escribir y ejecutar programas paralelos
 En los sistemas de memoria compartida más pequeños, hay una sola copia en
ejecución del sistema operativo
 En estos sistemas, los programas de memoria compartida por lo general se pueden
iniciar utilizando un IDE o la línea de comandos.
 Una vez iniciado, el programa suele utilizar la consola y el teclado para la entrada
de la entrada estándar y la salida a stdout y stderr.
 En los sistemas más grandes, puede haber un programador por lotes, es decir, un
usuario solicita un cierto número de núcleos, y especifica la ruta de acceso al
archivo ejecutable y donde la entrada y salida deben ir.
 En los sistemas de memoria distribuida e híbridos típicos, hay un equipo host que
es responsable de la asignación de nodos entre los usuarios.

Más contenido relacionado

La actualidad más candente

Procesamiento paralelo
Procesamiento paraleloProcesamiento paralelo
Procesamiento paralelo
warrionet
 
Programación concurrente
Programación concurrenteProgramación concurrente
Programación concurrente
Ing. Frandy Javier A. Paulino
 
Gestion de memoria
Gestion de memoriaGestion de memoria
Gestion de memoria
Cesar Oswaldo Osorio Agualongo
 
Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.
Manuel Fernandez Barcell
 
Unidades 3 4_5 cuestionario
Unidades 3 4_5 cuestionarioUnidades 3 4_5 cuestionario
Unidades 3 4_5 cuestionario
lupita zume
 
arquitecturas-SISD%SIMD%MISD%MIMD
arquitecturas-SISD%SIMD%MISD%MIMDarquitecturas-SISD%SIMD%MISD%MIMD
arquitecturas-SISD%SIMD%MISD%MIMD
Universidad Centroccidental "Lisandro Alvarado"
 
Cuestionario de jacinto en pdf
Cuestionario de jacinto en pdfCuestionario de jacinto en pdf
Cuestionario de jacinto en pdf
Luis Zarate
 
Cuestionario unidad 2 said gomez
Cuestionario unidad 2 said gomezCuestionario unidad 2 said gomez
Cuestionario unidad 2 said gomez
Zaid Gomez
 
Administración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas OperativosAdministración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas Operativos
Pablo Macon
 
Capítulo 2 - Libro Azúl
Capítulo 2 - Libro AzúlCapítulo 2 - Libro Azúl
Capítulo 2 - Libro Azúl
fredur
 
Capítulo 3 -Libro Azúl
Capítulo 3 -Libro AzúlCapítulo 3 -Libro Azúl
Capítulo 3 -Libro Azúl
fredur
 
administración de memoria y archivos
administración de memoria y archivosadministración de memoria y archivos
administración de memoria y archivos
Samir Barrios
 
Administracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemasAdministracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemas
ANIUX77
 
Trabajo de gestión de la memoria principal.
Trabajo de gestión de la memoria principal.Trabajo de gestión de la memoria principal.
Trabajo de gestión de la memoria principal.
Juliannys Requena
 
Gestión de memoria
Gestión de memoriaGestión de memoria
Gestión de memoria
Oscar Eduardo
 
Asignación de memoria
Asignación de memoriaAsignación de memoria
Asignación de memoria
guestca1de2e
 
Arquitecturas del computador
Arquitecturas del computadorArquitecturas del computador
Arquitecturas del computador
UNIVERSIDAD DE LAS AMERICAS
 
Administración de memoria
Administración de memoriaAdministración de memoria
Administración de memoria
chonfira
 
Administracion de Memoria
Administracion de MemoriaAdministracion de Memoria
Administracion de Memoria
Stefano Salvatori
 

La actualidad más candente (19)

Procesamiento paralelo
Procesamiento paraleloProcesamiento paralelo
Procesamiento paralelo
 
Programación concurrente
Programación concurrenteProgramación concurrente
Programación concurrente
 
Gestion de memoria
Gestion de memoriaGestion de memoria
Gestion de memoria
 
Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.
 
Unidades 3 4_5 cuestionario
Unidades 3 4_5 cuestionarioUnidades 3 4_5 cuestionario
Unidades 3 4_5 cuestionario
 
arquitecturas-SISD%SIMD%MISD%MIMD
arquitecturas-SISD%SIMD%MISD%MIMDarquitecturas-SISD%SIMD%MISD%MIMD
arquitecturas-SISD%SIMD%MISD%MIMD
 
Cuestionario de jacinto en pdf
Cuestionario de jacinto en pdfCuestionario de jacinto en pdf
Cuestionario de jacinto en pdf
 
Cuestionario unidad 2 said gomez
Cuestionario unidad 2 said gomezCuestionario unidad 2 said gomez
Cuestionario unidad 2 said gomez
 
Administración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas OperativosAdministración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas Operativos
 
Capítulo 2 - Libro Azúl
Capítulo 2 - Libro AzúlCapítulo 2 - Libro Azúl
Capítulo 2 - Libro Azúl
 
Capítulo 3 -Libro Azúl
Capítulo 3 -Libro AzúlCapítulo 3 -Libro Azúl
Capítulo 3 -Libro Azúl
 
administración de memoria y archivos
administración de memoria y archivosadministración de memoria y archivos
administración de memoria y archivos
 
Administracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemasAdministracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemas
 
Trabajo de gestión de la memoria principal.
Trabajo de gestión de la memoria principal.Trabajo de gestión de la memoria principal.
Trabajo de gestión de la memoria principal.
 
Gestión de memoria
Gestión de memoriaGestión de memoria
Gestión de memoria
 
Asignación de memoria
Asignación de memoriaAsignación de memoria
Asignación de memoria
 
Arquitecturas del computador
Arquitecturas del computadorArquitecturas del computador
Arquitecturas del computador
 
Administración de memoria
Administración de memoriaAdministración de memoria
Administración de memoria
 
Administracion de Memoria
Administracion de MemoriaAdministracion de Memoria
Administracion de Memoria
 

Similar a Programación Paralela - Conceptos y diseño de sistemas distribuidos

Unidad VI
Unidad VIUnidad VI
Unidad VI
Luis Morán
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadoras
camiche97
 
Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)
Kelwin Gamez
 
Resumen del primer corte
Resumen del primer corteResumen del primer corte
Resumen del primer corte
ADOLFO BORJA
 
Arquitectura RISC
Arquitectura RISCArquitectura RISC
Arquitectura RISC
Dany Sarela Cieza Silva
 
Multiprocesamiento
MultiprocesamientoMultiprocesamiento
Multiprocesamiento
Cristian Avila
 
Tercer corte arquitectura
Tercer corte arquitecturaTercer corte arquitectura
Tercer corte arquitectura
Mauricio Velasquez
 
Cuestionario terminado
Cuestionario terminadoCuestionario terminado
Cuestionario terminado
floresitalagu
 
CPU
CPUCPU
Segunda unidas open suse
Segunda unidas open suseSegunda unidas open suse
Segunda unidas open suse
Miguel Magaña
 
Procesador
ProcesadorProcesador
Libro Matlab Web
Libro Matlab WebLibro Matlab Web
Libro Matlab Web
albertoperojoparas
 
Alberto Perojo Multi Core
Alberto Perojo  Multi CoreAlberto Perojo  Multi Core
Alberto Perojo Multi Core
albertoperojoparas
 
Tema 7.3
Tema 7.3Tema 7.3
Sistemas operativos modernos
Sistemas operativos modernosSistemas operativos modernos
Sistemas operativos modernos
Jose Miguel Maduro Valenzuela
 
Opensuse2
Opensuse2Opensuse2
Opensuse2
Miguel Magaña
 
Procesador sparc, memoria virtual
Procesador sparc, memoria virtualProcesador sparc, memoria virtual
Procesador sparc, memoria virtual
Wandy Rodriguez Gutierrez
 
Sistema computacional (arquitecturas y memorias)
Sistema computacional (arquitecturas y memorias)Sistema computacional (arquitecturas y memorias)
Sistema computacional (arquitecturas y memorias)
Universidad Militar Nueva Granada-Universidad de Cundinamarca
 
Arquitecturas de computo
Arquitecturas de computoArquitecturas de computo
Arquitecturas de computo
Daniel Espinosa
 
Amoeba
AmoebaAmoeba
Amoeba
tanialeonela
 

Similar a Programación Paralela - Conceptos y diseño de sistemas distribuidos (20)

Unidad VI
Unidad VIUnidad VI
Unidad VI
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadoras
 
Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)
 
Resumen del primer corte
Resumen del primer corteResumen del primer corte
Resumen del primer corte
 
Arquitectura RISC
Arquitectura RISCArquitectura RISC
Arquitectura RISC
 
Multiprocesamiento
MultiprocesamientoMultiprocesamiento
Multiprocesamiento
 
Tercer corte arquitectura
Tercer corte arquitecturaTercer corte arquitectura
Tercer corte arquitectura
 
Cuestionario terminado
Cuestionario terminadoCuestionario terminado
Cuestionario terminado
 
CPU
CPUCPU
CPU
 
Segunda unidas open suse
Segunda unidas open suseSegunda unidas open suse
Segunda unidas open suse
 
Procesador
ProcesadorProcesador
Procesador
 
Libro Matlab Web
Libro Matlab WebLibro Matlab Web
Libro Matlab Web
 
Alberto Perojo Multi Core
Alberto Perojo  Multi CoreAlberto Perojo  Multi Core
Alberto Perojo Multi Core
 
Tema 7.3
Tema 7.3Tema 7.3
Tema 7.3
 
Sistemas operativos modernos
Sistemas operativos modernosSistemas operativos modernos
Sistemas operativos modernos
 
Opensuse2
Opensuse2Opensuse2
Opensuse2
 
Procesador sparc, memoria virtual
Procesador sparc, memoria virtualProcesador sparc, memoria virtual
Procesador sparc, memoria virtual
 
Sistema computacional (arquitecturas y memorias)
Sistema computacional (arquitecturas y memorias)Sistema computacional (arquitecturas y memorias)
Sistema computacional (arquitecturas y memorias)
 
Arquitecturas de computo
Arquitecturas de computoArquitecturas de computo
Arquitecturas de computo
 
Amoeba
AmoebaAmoeba
Amoeba
 

Último

Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
AMADO SALVADOR
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
AMADO SALVADOR
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
LilibethEstupian
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Festibity
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
AMADO SALVADOR
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
paulroyal74
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
JuanaNT7
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Festibity
 

Último (20)

Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVATECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
TECLADO ERGONÓMICO Y PANTALLAS TACTILES - GESTIÓN INTEGRAL EDUCATIVA
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdfInformació Projecte Iniciativa TIC SOPRA STERIA.pdf
Informació Projecte Iniciativa TIC SOPRA STERIA.pdf
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
 

Programación Paralela - Conceptos y diseño de sistemas distribuidos

  • 1. Universidad de Cuenca Sistemas Distribuidos José Moyano
  • 2.  Arquitectura de von Neumann  La arquitectura de von Neumann consiste de una memoria principal, una unidad central de proceso (CPU) y una interconexión entre la memoria y el CPU  La memoria principal esta compuesta por múltiples ranuras, donde cada uno almacena instrucciones y datos  EL CPU esta dividido en la unidad de control y la unidad lógica.  La unidad de control decide que instrucción debería ejecutarse en un programa y la unidad aritmética lógica ejecuta la instrucción elegida.  Las instrucciones y los datos son transmitidos entre el CPU y la memoria vía interconexión.  La separación de la memoria y el CPU es conocido como el cuello de botella de von Neumann Algunos Antecedentes
  • 3.
  • 4. Procesos, multitareas e hilos  Cuando se ejecuta un programa, el sistema operativo crea una proceso que será una instancia del programa que esta siendo ejecutado  Un proceso consiste de varias entidades:  El programa de lenguaje de máquina ejecutable  Un bloque de memoria  La descripción de recursos que ocupa el proceso en el sistema operativo  Información de seguridad  Información de estado del proceso
  • 5. Modificaciones del Modelo de von Neumann  Los fundamentos del caching  La memoria caché es una colección de posiciones de memoria a las cuales se puede acceder en menos tiempo  Un problema en la cache es decidir qué datos y que instrucciones deben ser almacenadas en la caché  Cuando la CPU escribe datos en una memoria caché, el valor en la memoria caché y el valor en la memoria principal son diferentes.
  • 6. Asignaciones de Cache  En un extremo hay una caché totalmente asociativa, en el que una nueva línea se puede colocar en cualquier ubicación en la memoria caché.  El otro extremo hay una caché de asignación directa, en la que cada línea tiene una ubicación única en la caché al que se le asignará.
  • 7. Memoria Virtual  La cache hace que el CPU pueda acceder rápidamente a instrucciones y datos que se encuentran en la memoria principal.  La memoria virtual fue desarrollada para que la memoria principal puede funcionar como una memoria caché para el almacenamiento secundario  Podemos tener problemas si tratamos de asignar direcciones de memoria física a páginas cuando compilamos un programa.  Numero de paginas virtuales  Un inconveniente con el uso de una tabla de páginas es que puede duplicar el tiempo necesario para acceder a una ubicación en la memoria principal
  • 8. Paralelismo a nivel de instrucción (ILP)  Pipelining (Canalización)  Similar a la fabricación de un vehículo: mientras que un equipo atornilla el motor, otro equipo se puede conectar a la transmisión del motor, y el tercer equipo puede atornillar el motor al chasis.  Multiple issue (Problema múltiple)  Canales que mejoran el rendimiento mediante la adopción de las piezas individuales de hardware o unidades funcionales y conectándolos en secuencia.  En la especulación, el compilador o el procesador realiza una suposición acerca de una instrucción y, a continuación, ejecuta la instrucción sobre la base de la suposición.
  • 9. Hardware multihilos  ILP puede ser muy difícil de explotar porque tiene una larga secuencia de estados dependientes y ofrece pocas oportunidades.  Paralelismo a nivel de hilo (TLP)  Proporcionar paralelismo a través de la ejecución simultánea de diferentes hilos, por lo que proporciona un paralelismo de más grueso que ILP.
  • 10. Hardware multihilos  Hardware multihilos  proporciona un medio para que los sistemas sigan haciendo un trabajo útil, cuando la tarea que se está ejecutando actualmente ha sido llamada.  Multihilos fine-grained  el procesador cambia entre las discusiones después de cada instrucción, saltándose las discusiones que se estancaron.  Multihilos simultáneos (SMT)  Intenta explotar procesadores superescalares al permitir que múltiples hilos para hacer uso de las múltiples unidades funcionales
  • 11. Hardware Paralelo  Sistemas Single instruction, multiple data, o SIMD  En la computación paralela, la taxonomía de Flynn se utiliza con frecuencia para clasificar arquitecturas de computadora.  Operan en múltiples flujos de datos mediante la aplicación de un elemento a múltiples elementos de datos, considerándolo un sistema abstracto por tener una sola unidad de control
  • 12. Sistemas SIMD  Procesadores vectoriales  Pueden operar sobre matrices o vectores de datos.  Registros vectoriales: son registros capaces de almacenar un vector de operandos y operaciones simultáneamente en sus contenidos.  Vector y unidades funcionales canalizados: se aplica la misma operación para cada par de elementos en los dos vectores correspondientes.  Instrucciones vectoriales: Estas son las instrucciones que operan sobre vectores en lugar de escalares.
  • 13. Sistemas SIMD  Procesadores vectoriales  Memoria intercalada: El sistema de memoria consiste en múltiples "bancos" de la memoria, que se puede acceder independiente.  Acceso a la memoria strided y hardware scatter/gater: el programa accede a los elementos de un vector situado a intervalos fijos.  Unidades de procesos gráficos  Convierten la representación interna, en una matriz de píxeles que puede ser enviado a una pantalla de ordenador.  Mantienen altas tasas de movimiento de datos con el fin de evitar los puestos de acceso a memoria.
  • 14. Unidades de procesamiento de Gráficos (GPU)  Usan una canalización de procesamiento de gráficos para convertir la representación interna en una matriz de píxeles que puede ser enviado a una pantalla de ordenador.  El comportamiento de las etapas programables se especifica mediante funciones llamadas funciones de sombreado.  Funciones de sombreado son paralelos implícitamente, ya que se pueden aplicar a varios elementos en el flujo de gráficos.
  • 15. Unidades de procesamiento de Gráficos (GPU)  El procesamiento de una sola imagen puede requerir grandes cantidades de datos, cientos de megabytes de datos para una sola imagen no es inusual.  Los GPU necesitan mantener altas tasas de movimiento de datos, y con el fin de evitar los puestos de acceso a memoria, dependen en gran medida de multithreading de hardware; algunos sistemas son capaces de almacenar el estado de más de un centenar de hilos suspendidos por cada hilo de ejecución.  Los GPU no son sistemas SIMD puros. Aunque la ALU en un núcleo determinado hacer paralelismo utilizado SIMD
  • 16. Sistemas MIMD  Multiple instruction, multiple data o MIMD  Soportan múltiples flujos de instrucción simultáneas que operan en múltiples flujos de datos.  Sistemas de memoria compartida: Utilizan uno o más procesadores multinúcleo. En los sistemas de memoria compartida con varios procesadores multi-núcleo, la interconexión puede o bien conectar todos los procesadores directamente a la memoria principal o cada procesador puede tener una conexión directa a un bloque de memoria principal
  • 17. Sistemas MIMD  Sistemas de memoria distribuida  Los sistemas de memoria distribuida más ampliamente disponibles son llamados clusters.  La red proporciona la infraestructura necesaria para convertir grandes redes de ordenadores distribuidos geográficamente en un sistema de memoria distribuida unificada
  • 18. Sistemas de memoria Compartida  Los sistemas de memoria compartida utilizan uno o más procesadores multinúcleo.
  • 19. Sistemas de memoria Compartida  En los sistemas de memoria compartida puede conectar todos los procesadores directamente a la memoria principal  Cada procesador puede tener una conexión directa a un bloque de memoria principal  Los procesadores pueden acceder a bloques de memoria principal de los demás a través de hardware especial  Sistemas UMA son más fáciles de programar, ya que el programador no tiene que preocuparse acerca de los diferentes tiempos de acceso a diferentes posiciones de memoria.  Esta ventaja puede ser compensado por el acceso más rápido a la memoria conectado directamente en los sistemas NUMA.  Los sistemas NUMA tienen el potencial de utilizar mayores cantidades de memoria que los sistemas de UMA.
  • 20. Sistemas de Memoria Distribuida  Se componen de una colección de productos básicos de sistemas, por ejemplo, PCs conectados por una red para la interconexión de los productos básicos  son sistemas de memoria compartida con uno o más procesadores de múltiples núcleos.
  • 21. Redes de interconexión  Interconexiones de memoria compartida  Bus de Interconexión:  El bus es un conjunto de cables de comunicación en paralelo junto con un poco de hardware que controla el acceso al bus  La característica clave de un bus es que los cables de comunicación son compartidos por los dispositivos que están conectados a él  Los buses tienen la virtud de bajo coste y la flexibilidad; múltiples dispositivos pueden ser conectados a un bus con poco coste adicional.  Si conectamos un gran número de procesadores a un bus, es de esperar que los procesadores con frecuencia tendrían que esperar el acceso a la memoria principal.
  • 22. Redes de interconexión  Interconexiones de memoria compartida  Interconexión Conmutada utilizan interruptores para controlar el enrutamiento de los datos entre los dispositivos conectados.  Con interruptores y al menos tantos módulos de memoria como procesadores, sólo habrá un conflicto entre dos núcleos que intentan acceder a la memoria si los dos núcleos intentan acceder simultáneamente el mismo módulo de memoria.  Los Crossbars permiten la comunicación simultánea entre diferentes dispositivos, por lo que son mucho más rápidos que los bus.  El costo de los conmutadores y enlaces es relativamente alta.  Un sistema basado en bus pequeña será mucho menos caro que un sistema basado en el crossbars del mismo tamaño.
  • 23. Redes de interconexión  Interconexiones de memoria distribuida  Se dividen en dos grupos: las interconexiones directas e interconexiones indirectos  En una interconexión directa cada interruptor está conectado directamente a un par procesador de memoria  Los conmutadores están conectados el uno al otro.  Un anillo es superior a una simple bus ya que permite múltiples comunicaciones simultáneas.  Es fácil de diseñar esquemas de comunicación en el que algunos de los procesadores deben esperar a que otros procesadores para completar sus comunicaciones.
  • 24. Redes de interconexión  Interconexiones de memoria distribuida  La malla toroidal será más caro que el anillo, ya que los interruptores son más complejos, que deben apoyar cinco enlaces en lugar de tres, y si hay p procesadores, el número de enlaces es 3p en una malla toroidal, mientras que es sólo 2p en un anillo.  El número de posibles patrones de comunicaciones simultáneas es mayor con una malla que con un anillo.
  • 25. Redes de interconexión  Interconexiones de memoria distribuida  Una medida de "número de comunicaciones simultáneas" y "conectividad" es el ancho de bisección.  El sistema paralelo se divide en dos mitades y cada mitad contiene la mitad de los procesadores o nodos.  (a) hemos dividido un anillo con ocho nodos en dos grupos de cuatro nodos, y podemos ver que sólo dos comunicaciones pueden tener lugar entre las mitades  (b) hemos dividido los nodos en dos partes para que cuatro comunicaciones simultáneas puede tener lugar
  • 26. Redes de interconexión  Interconexiones de memoria distribuida  Ancho de banda bisección se utiliza a menudo como una medida de la calidad de la red.
  • 27. Redes de interconexión  Interconexiones de memoria distribuida  La interconexión directa ideal es una red totalmente conectada en el que cada conmutador está conectado directamente a cada otro interruptor  Su ancho de bisección es p2 = 4.  No es práctico la construcción de una interconexión para sistemas con pocos nodos, ya que requiere un total de p2 = 2CP = 2 enlaces  Cada interruptor debe ser capaz de conectarse a enlaces p.  Es una "mejor teórica posible" interconexión que uno práctico, y se utiliza como base para la evaluación de otras interconexiones.
  • 28. Redes de interconexión  Interconexiones de memoria distribuida  El hipercubo es una interconexión directa altamente conectadas que se ha utilizado en los sistemas reales  Hipercubos se construyen inductivamente:  un hipercubo unidimensional es un sistema plenamente conectado con dos procesadores.  Un hipercubo bidimensional está construido a partir de dos hipercubos unidimensionales al unirse a los interruptores "correspondiente“  un hipercubo de dimensión d tiene nodos 2D p D, y un interruptor en un hipercubo d-dimensional está conectado directamente a un procesador y los interruptores de d
  • 29. Redes de interconexión  Interconexiones de memoria distribuida  El ancho de bisección de un hipercubo es p = 2, por lo que cuenta con más conectividad que un anillo o malla toroidal, pero los interruptores debe ser más potente, ya que deben soportar 1CD D 1 Log2.p/ cables, mientras que la malla cambia sólo requieren cinco cables.
  • 30. Redes de interconexión  Interconexiones de memoria distribuida  Interconexiones indirectos proporcionan una alternativa a las interconexiones directas.  En una interconexión indirecta, los interruptores no pueden ser directamente conectado a un procesador.  A menudo son mostrados con enlaces unidireccionales y una colección de procesadores, cada uno de los cuales tiene un saliente y un enlace de entrada, y una red de conmutación.
  • 31. Redes de interconexión  Interconexiones de memoria distribuida  En una red de omega, los interruptores son de dos por dos crossbars  Hay comunicaciones que no pueden ocurrir simultáneamente.  La red omega es menos costoso que el crossbars.  La red utiliza omega 1 2 log2.p / de los conmutadores 2x2 crossbars, por lo que utiliza un total de 2p log2.p / interruptores, mientras que el crossbars utiliza p2.
  • 32. Latencia y ancho de banda  Cualquier dato de tiempo es transmitido, interesando el tiempo que tomará para que los datos llegan a su destino.  Esto se da si hablamos de la transmisión de datos entre la memoria principal y la memoria caché, caché y registro, disco duro y la memoria, o entre dos nodos de una memoria distribuida o sistema híbrido.  Hay dos figuras que se utilizan a menudo para describir el comportamiento de una interconexión: la latencia y el ancho de banda.  La latencia es el tiempo que transcurre entre el inicio de la fuente para transmitir los datos de partida y de destino para recibir el primer byte.  El ancho de banda es la velocidad a la que el destino recibe los datos después de que ha comenzado a recibir el primer byte.  message transmission time = l + n / b
  • 33. La coherencia de caché  Recordemos que las cachés del CPU son gestionados por el hardware del sistema:  Los programadores no tienen control directo sobre ellos.  Esto tiene varias consecuencias importantes para los sistemas de memoria compartida.  Supongamos que tenemos un sistema de memoria compartida con dos núcleos, cada uno de los cuales tiene su propia caché de datos privado.  Mientras los dos núcleos de sólo lectura de datos compartidos, no hay ningún problema.  Este comportamiento impredecible ocurrirá independientemente de si el sistema está utilizando una escritura simultánea o una política write-back.
  • 35. Software Paralelo  Advertencias  Mientras que el uso de la GPU como una plataforma para la computación paralela continúa creciendo a un ritmo rápido  Las interfaces de programación de aplicaciones (API) para las GPU son necesariamente muy diferentes de APIs estándar MIMD.  Nos centraremos principalmente en lo que a menudo se llama programa único, múltiples datos o SPMD.  En lugar de ejecutar un programa diferente en cada núcleo, programas SPMD consisten en un solo ejecutable que puede comportarse como si fuera varios programas diferentes a través del uso de saltos condicionales.  Recordemos que un programa es paralelo si se obtiene su paralelismo dividiendo las tareas entre los hilos o procesos.
  • 36. Software Paralelo  Coordinar los procesos / hilos  Dividir el trabajo entre los procesos / hilos Cada proceso / hilo obtiene aproximadamente la misma cantidad de trabajo Se minimiza la cantidad de comunicación necesaria  Se encargará de los procesos / hilos para sincronizar.  Se encargará de la comunicación entre los procesos / hilos.
  • 37. Software Paralelo  Memoria Compartida  Threads dinámicos y estáticos  Muchos entornos de programas de memoria compartida utilizan hilos dinámicos.  En este paradigma, a menudo hay un hilo principal y en un momento dado una colección de subprocesos de trabajo.  El hilo principal normalmente espera a peticiones- trabajo  Este paradigma hace un uso eficiente de los recursos del sistema ya que los recursos que se requieren de un hilo solamente se utilizan mientras que el hilo se ejecuta realmente.
  • 38. Software Paralelo  Memoria Compartida  Threads dinámicos y estáticos  Una alternativa al paradigma dinámico es el paradigma hilo estática.  En este paradigma, todos los hilos están bifurcadas después de cualquier configuración que necesita el hilo principal y los hilos de correr  Si un hilo está inactivo, sus recursos no puede ser liberados.  Tiene la virtud de que está más cerca del paradigma más utilizado para la programación de memoria distribuida
  • 39. Software Paralelo  Memoria Compartida  No determinismo  En cualquier sistema MIMD en la que los procesadores ejecutan de forma asíncrona es probable que no habrá no determinismo.  Un cálculo es no determinista si una entrada dada puede dar lugar a diferentes salidas.  Si varios subprocesos se ejecutan de forma independiente, la tasa relativa a la que van a completar declaraciones varía de ensayo a ensayo.  El mecanismo más comúnmente utilizado para asegurar la exclusión mutua es un bloqueo de exclusión mutua o mutex o de bloqueo.  Un mutex es un tipo especial de objeto que tiene apoyo en el hardware subyacente.  La idea básica es que cada sección crítica está protegido por una cerradura. Antes de que un hilo puede ejecutar el código en la sección crítica.
  • 40. Software Paralelo  Memoria Compartida  Hilo de seguridad Los programas paralelos pueden llamar funciones desarrolladas para su uso en programas de serie Una variable estática que se declaró en una función persiste de una llamada a otra. Una función como strtok no es seguro para subprocesos. Esto significa que si se utiliza en un programa de multiproceso, puede haber errores o resultados inesperados. Cuando un bloque de código no es hilo de seguridad, por lo general es debido a diferentes hilos están accediendo a los datos compartidos.
  • 41. Software Paralelo  Memoria Distribuida  Paso de mensajes Es un API de paso de mensajes proporcionando un envío y una función de recepción. Primera nota de que el segmento de programa es SPMD. Los dos procesos están utilizando el mismo ejecutable En segundo lugar, tenga en cuenta que el mensaje variable se refiere a los diferentes bloques de memoria en los diferentes procesos. Los programadores a menudo enfatizan mediante el uso de nombres de variables tales como mi mensaje o mensajes local.
  • 42. Software Paralelo  Memoria Distribuida  Paso de mensajes Implementaciones de las API de paso de mensajes permiten que todos los procesos de acceso a stdout y stderr permiten escribir en la salida estándar Paso de mensajes es una muy poderosa y versátil API para el desarrollo de programas paralelos. Las estructuras de datos en el programa pueden tener que tampoco ser replicado por cada proceso o distribuirse de forma explícita entre los procesos.
  • 43. Software Paralelo  Memoria Distribuida  Comunicación Unilateral En paso de mensajes, un proceso, debe llamar a una función de envío y el envío debe ir acompañado por otro proceso "llamar a una función de recepción. Toda comunicación requiere la participación explícita de los dos procesos. En la comunicación de un solo lado, o acceso a la memoria remota, un solo proceso llama a una función, que actualiza la memoria, con un valor de otro proceso o memoria remota con un valor en el proceso de llamada.
  • 44. Software Paralelo  Memoria Distribuida  Idiomas de espacio de direcciones mundial con particiones Varios grupos están desarrollando lenguajes de programación en paralelo que permiten al usuario utilizar técnicas de memoria compartida para el hardware de programación distribuida Si simplemente escribimos un compilador que trata las memorias colectivas en un sistema de memoria distribuida como una sola memoria de gran tamaño, nuestros programas tendrían pobres, o, en el mejor, el rendimiento impredecible PGAS proporcionan algunos de los mecanismos de los programas de memoria compartida.
  • 45. Software Paralelo  Memoria Distribuida  Sistemas híbridos de programación Es posible programar los sistemas tales como grupos de procesadores multinúcleo utilizando una combinación de una API de memoria compartida en los nodos y una API de memoria distribuida para la comunicación de los entrenudos. Esto por lo general sólo se realiza para los programas que requieren los más altos niveles de rendimiento, ya que la complejidad de esta API "híbrido" hace que el desarrollo de programas extremadamente difícil.
  • 46. ENTRADA Y SALIDA  Funciones printf, fprintf, scanf, fscanf son funciones usadas para mostrar en la pantalla estándar.  Cuando llamamos a printf de múltiples procesos nos gustaría que la salida aparece en la consola de un solo sistema, el sistema en el que comenzó el programa.
  • 47. ENTRADA Y SALIDA  Con el fin de abordar parcialmente esas cuestiones, vamos a estar haciendo estas suposiciones y siguiendo estas reglas cuando nuestros programas paralelos tienen que hacer E / S:  En los programas de memoria distribuida, único proceso 0 accederá stdin. En los programas de memoria compartida, sólo el hilo principal o hilo 0 accederán stdin.  En ambos programas de memoria distribuida y de memoria compartida, todos los procesos / hilos pueden acceder a stdout y stderr.  Debido a la orden no determinista de salida a la salida estándar, en la mayoría de los casos sólo un único proceso / hilo se utilizará para toda la salida a la salida estándar.  Sólo un proceso individual / hilo intentará acceder a cualquier archivo única stdin, stdout o stderr.
  • 48. Rendimiento  Aceleración y Eficiencia  Lo mejor que podemos hacer es dividir por igual el trabajo entre los núcleos  Si tenemos éxito en hacer esto, y corremos nuestro programa con núcleos p, un hilo o proceso en cada núcleo, entonces nuestro programa paralelo se ejecutará p veces más rápido que el programa de serie.  Así que si definimos la aceleración de un programa paralelo como:  S=aceleración  T=tiempo
  • 49. Rendimiento  Aceleración y Eficiencia  E=eficiencia  P=rendimiento
  • 50. Rendimiento  Aceleración y Eficiencia  Está claro que Tparallel, S y E dependen de p, el número de procesos o hilos.  También tenemos que tener en cuenta que Tparallels, E y Tserial todos dependen del tamaño del problema.  Si Toverhead denota esta sobrecarga en paralelo, es a menudo el caso de que:
  • 52. Rendimiento  Amdahl’s law  Dice que a menos que la práctica de un programa en serie se paraleliza, la posible aceleración va a ser muy limitado, independientemente de la cantidad de núcleos disponibles.  Ejemplo:  Si somos capaces de paralelizar el 90% de un programa en serie: Tserial =20s 0.9 X Tserial/p=18/p 0.1 X Tserial=2  Aceleración es:
  • 53. Rendimiento  Amdahl’s law  Por consiguiente, la fracción S debe ser menor que:  Es decir, S <=10. Esto es decir que a pesar de que hemos hecho un trabajo perfecto en la paralelización 90% del programa, e incluso si tenemos, digamos, 1000 núcleos, vamos a no conseguir un aumento de velocidad mejor que 10.
  • 54. Rendimiento  Escalabilidad  La palabra "escalable" tiene una amplia variedad de usos informales.  En términos generales, una tecnología es escalable si se puede manejar cada vez mayores tamaños de problemas.  En las discusiones sobre el desempeño del programa paralelo, escalabilidad tiene una definición algo más formal.  Supongamos que ejecutamos un programa paralelo con un número fijo de procesos / hilos y un tamaño de entrada fija, y obtenemos una eficiencia E.  Supongamos que ahora aumentamos el número de procesos / hilos que son utilizados por el programa.  Si podemos encontrar una tasa correspondiente de aumento en el tamaño del problema para que el programa siempre tiene la eficiencia E, entonces el programa es escalable.
  • 55. Rendimiento  Escalabilidad  Suponiendo que Tserial = n, también suponemos que Tparalelo = n/p +1  Hacerle un cuadro de tendencia con el ejemplo incrementando p; y cambiando el tiempo serial y cambiando el porcentaje de paralelización
  • 56. Diseño de Programas Paralelos  La metodología de Foster  Particiones. Divide el cálculo a realizar y los datos operados por el cálculo en tareas pequeñas. El objetivo aquí debe ser en la identificación de las tareas que se pueden ejecutar en paralelo.  Comunicación. Determine lo que la comunicación debe ser llevado a cabo una de las tareas identificadas en el paso anterior.  Aglomeración vs agregación. Combinar las tareas y las comunicaciones señaladas en el primer paso en tareas más grandes  Mapeo. Asignar las tareas compuestos identificados en el paso anterior para procesos / hilos.
  • 57. Diseño de Programas Paralelos  Un programa de serie  Es bastante sencillo escribir un programa en serie que genera un histograma. Tenemos que decidir lo que los contenedores son, determinar el número de mediciones en cada bandeja, e imprimir las barras del histograma  1. el número de mediciones, data_count  2. una serie de data_count flotadores, los data;  3. El valor mínimo para el bin que contiene los valores más pequeños, min_meas;  4. el valor máximo para el depósito que contiene los valores más grandes, max_meas;  5. el número de contenedores, bin_count;
  • 58. Diseño de Programas Paralelos  Paralelización del programa de serie  Si asumimos que el data_count es mucho mayor que el bin_count, a continuación, incluso si utilizamos búsqueda binaria en la función find_bin, la gran mayoría de los trabajos en este código será en el circuito que determina los valores de recuentos de intervalos.  Por tanto, el enfoque de nuestra paralelización debería estar en este bucle, y vamos a aplicar la metodología de Foster a la misma. Lo primero a destacar es que los resultados de los pasos de la metodología de Foster son de ningún modo determinado de forma única, por lo que no debería sorprenderse si en cualquier etapa a llegar a algo diferente.
  • 59. Metodología de Foster  Consiste en un conjunto de tareas que pueden interactuar entre sí enviando mensajes a través de canales.  Una tarea es un programa, su localidad de memoria y puertos de I/O.  Un canal es una cola de mensajes que conecta el puerto de salida de una tarea con el puerto de entrada de otra.  El envío es una operación asíncrona mientras que la recepción es una operación síncrona.
  • 60. Escribir y ejecutar programas paralelos  En los sistemas de memoria compartida más pequeños, hay una sola copia en ejecución del sistema operativo  En estos sistemas, los programas de memoria compartida por lo general se pueden iniciar utilizando un IDE o la línea de comandos.  Una vez iniciado, el programa suele utilizar la consola y el teclado para la entrada de la entrada estándar y la salida a stdout y stderr.  En los sistemas más grandes, puede haber un programador por lotes, es decir, un usuario solicita un cierto número de núcleos, y especifica la ruta de acceso al archivo ejecutable y donde la entrada y salida deben ir.  En los sistemas de memoria distribuida e híbridos típicos, hay un equipo host que es responsable de la asignación de nodos entre los usuarios.