SlideShare uma empresa Scribd logo
1 de 10
UNIVERSIDAD IBEROAMERICANA
UNIBE
Yadhira Feliz
22-0144
Tema
Diseño de Algoritmos Paralelos
Maestra
Rina Maria Familia
¿Qué son los Algoritmos
Paralelos?
Es el uso de varios procesadores trabajando juntos para
resolver una tarea común, creando una forma rápida y
eficiente de trabajo.
El modo de uso de los procesadores puede ser diseñado
por el programador:
Cada procesador trabaja en una porción del problema
Los procesos pueden intercambiar datos, a través de la
memoria o por una red de interconexión
Ventajas de la
Computación
Paralela
Algunas de las ventajas de la programación paralela son las
siguientes:
– Permiten resolver problemas que no caben en una CPU
– Permiten resolver problemas que no se resuelven en un
tiempo razonable
Estos también nos permiten ejecutar
– Problemas mayores
– Más rápidamente (aceleración)
– Más problemas con mayor eficiencia
Necesidad de la
Computación
Paralela
Algunas de las ventajas de la programación paralela son las
siguientes:
– Permiten resolver problemas que no caben en una CPU
– Permiten resolver problemas que no se resuelven en un
tiempo razonable
Estos también nos permiten ejecutar
– Problemas mayores
– Más rápidamente (aceleración)
– Más problemas con mayor eficiencia
Tecnologías que implementan la
programación paralela
•Open MP (Open Multi-Processing)(Chapman et al., 2008; Pas, 2009): proporciona una API,
que mediante directivas del compilador y llamadas a sub-rutinas, proporciona paralelismo
de datos.
•Intel TTB (Intel Threading Building Blocks): Modelo de programación paralela basado en
rutinas que utilizan hilos. Provee una serie de plantillas, tipos de datos y algoritmos.
•Intel ArBB (Inter Array Building Blocks): biblioteca para C++ desarrollada para aprovechar
diferentes tipos de procesadores en la resolución de problemas paralelos.
•JP: Java Parallel (PJ) es una API de programación paralela cuyos principales objetivos son:
apoyar tanto a la programación paralela en memoria compartida (basadas en hilos de
ejecución) y el grupo de programación paralela (basado en paso de mensajes), en una sola
API unificada.
Ejemplo - suma de
n números
Secuencial: t(n) = n − 1
Paralelo con n/2 elementos de proceso, como
mınimo t(n) n/2 = 2
En cada Pi, i = 0, 1, . . . , n/2 − 1
inicio = 2 ∗ i
desplazamiento = 1
activo = true
para k = 1, 2, . . . , log n
si activo
a[inicio] = a[inicio] + a[inicio +
desplazamiento]
desplazamiento = desplazamiento ∗ 2
finsi
si i mod desplazamiento 6= 0
activo = false
finsi
finpara
La técnica
memoria
compartida
Necesita del uso de cerrojos en los datos para impedir que se
modifique simultáneamente por dos procesadores, por lo que se
produce un coste extra en ciclos de CPU desperdiciados y ciclos
de bus. También obliga a serializar alguna parte del algoritmo.
La técnica paso de mensajes usa canales y mensajes pero esta
comunicación añade un coste al bus, memoria adicional para las
colas y los mensajes y latencia en el mensaje. Los diseñadores de
procesadores paralelos usan buses especiales para que el coste
de la comunicación sea pequeño pero siendo el algoritmo
paralelo el que decide el volumen del tráfico.
Algoritmo de parallel_for
•El algoritmo Concurrency::p arallel_for realiza repetidamente la misma tarea
en paralelo. Cada una de estas tareas se parametriza mediante un valor de
iteración. Este algoritmo es útil cuando se tiene un cuerpo de bucle que no
comparten recursos entre iteraciones de ese bucle.
•El parallel_for algoritmo crea particiones de las tareas de forma óptima para
la ejecución en paralelo. Utiliza un algoritmo de robo de trabajo y un robo de
intervalo para equilibrar estas particiones cuando se desequilibran las cargas
de trabajo.
Ejemplo
// parallel-for-structure.cpp
// compile with: /EHsc
#include <ppl.h>
#include <array>
#include <sstream>
#include <iostream>
using namespace concurrency;
using namespace std;
int wmain()
{
// Print each value from 1 to 5 in parallel.
parallel_for(1, 6, [](int value) {
wstringstream ss;
ss << value << L' ';
wcout << ss.str();
});
}
Referencias:
http://informatica.uv.es/iiguia/ALP/materiales/1_1_a_ComputacionParalela.p
df
http://scielo.sld.cu/scielo.php?script=sci_arttext&pid=S2227-
18992017000200009
http://dis.um.es/~domingo/apuntes/AlgProPar/1819/analisis.pdf
https://es.wikipedia.org/wiki/Algoritmo_paralelo#:~:text=En%20las%20cienci
as%20de%20la,y%20obtener%20el%20resultado%20correcto.
https://docs.microsoft.com/es-es/cpp/parallel/concrt/parallel-
algorithms?view=msvc-160

Mais conteúdo relacionado

Semelhante a Diseño de Algoritmos Paralelos.pptx

Arquitectura primer tutorial
Arquitectura primer tutorialArquitectura primer tutorial
Arquitectura primer tutorial
maiielo
 
Amoeba 100716124109-phpapp01 (1)
Amoeba 100716124109-phpapp01 (1)Amoeba 100716124109-phpapp01 (1)
Amoeba 100716124109-phpapp01 (1)
Markiups Basantes
 

Semelhante a Diseño de Algoritmos Paralelos.pptx (20)

Computacion paralela
Computacion paralelaComputacion paralela
Computacion paralela
 
Computacion paralela
Computacion paralelaComputacion paralela
Computacion paralela
 
Arqui hardware
Arqui hardwareArqui hardware
Arqui hardware
 
computación paralela
computación paralelacomputación paralela
computación paralela
 
Arquitectura del computador trabajo finalizado
Arquitectura del computador trabajo finalizadoArquitectura del computador trabajo finalizado
Arquitectura del computador trabajo finalizado
 
Arquitectura tipos lupe
Arquitectura tipos lupeArquitectura tipos lupe
Arquitectura tipos lupe
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corte
 
AlgoritmosParalelos.pptx
AlgoritmosParalelos.pptxAlgoritmosParalelos.pptx
AlgoritmosParalelos.pptx
 
3 unidad so2
3 unidad so23 unidad so2
3 unidad so2
 
Arquitectura primer tutorial
Arquitectura primer tutorialArquitectura primer tutorial
Arquitectura primer tutorial
 
Amoeba 100716124109-phpapp01 (1)
Amoeba 100716124109-phpapp01 (1)Amoeba 100716124109-phpapp01 (1)
Amoeba 100716124109-phpapp01 (1)
 
Paralelismo Concurrencia.ppt
Paralelismo Concurrencia.pptParalelismo Concurrencia.ppt
Paralelismo Concurrencia.ppt
 
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdfAlgoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
 
Procesamiento segmentado - INFORME
Procesamiento segmentado - INFORMEProcesamiento segmentado - INFORME
Procesamiento segmentado - INFORME
 
DISEÑO DE ALGORITMOS PARALELOS
DISEÑO DE ALGORITMOS PARALELOSDISEÑO DE ALGORITMOS PARALELOS
DISEÑO DE ALGORITMOS PARALELOS
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
1 eda teo
1 eda teo1 eda teo
1 eda teo
 
Diseño de Algoritmos Paralelos con la maestra Rina
Diseño de Algoritmos Paralelos con la maestra RinaDiseño de Algoritmos Paralelos con la maestra Rina
Diseño de Algoritmos Paralelos con la maestra Rina
 
Programacion en ambientes heterogeneos
Programacion en ambientes heterogeneosProgramacion en ambientes heterogeneos
Programacion en ambientes heterogeneos
 
Tarea 1.1
Tarea 1.1Tarea 1.1
Tarea 1.1
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Diseño de Algoritmos Paralelos.pptx

  • 1. UNIVERSIDAD IBEROAMERICANA UNIBE Yadhira Feliz 22-0144 Tema Diseño de Algoritmos Paralelos Maestra Rina Maria Familia
  • 2. ¿Qué son los Algoritmos Paralelos? Es el uso de varios procesadores trabajando juntos para resolver una tarea común, creando una forma rápida y eficiente de trabajo. El modo de uso de los procesadores puede ser diseñado por el programador: Cada procesador trabaja en una porción del problema Los procesos pueden intercambiar datos, a través de la memoria o por una red de interconexión
  • 3. Ventajas de la Computación Paralela Algunas de las ventajas de la programación paralela son las siguientes: – Permiten resolver problemas que no caben en una CPU – Permiten resolver problemas que no se resuelven en un tiempo razonable Estos también nos permiten ejecutar – Problemas mayores – Más rápidamente (aceleración) – Más problemas con mayor eficiencia
  • 4. Necesidad de la Computación Paralela Algunas de las ventajas de la programación paralela son las siguientes: – Permiten resolver problemas que no caben en una CPU – Permiten resolver problemas que no se resuelven en un tiempo razonable Estos también nos permiten ejecutar – Problemas mayores – Más rápidamente (aceleración) – Más problemas con mayor eficiencia
  • 5. Tecnologías que implementan la programación paralela •Open MP (Open Multi-Processing)(Chapman et al., 2008; Pas, 2009): proporciona una API, que mediante directivas del compilador y llamadas a sub-rutinas, proporciona paralelismo de datos. •Intel TTB (Intel Threading Building Blocks): Modelo de programación paralela basado en rutinas que utilizan hilos. Provee una serie de plantillas, tipos de datos y algoritmos. •Intel ArBB (Inter Array Building Blocks): biblioteca para C++ desarrollada para aprovechar diferentes tipos de procesadores en la resolución de problemas paralelos. •JP: Java Parallel (PJ) es una API de programación paralela cuyos principales objetivos son: apoyar tanto a la programación paralela en memoria compartida (basadas en hilos de ejecución) y el grupo de programación paralela (basado en paso de mensajes), en una sola API unificada.
  • 6. Ejemplo - suma de n números Secuencial: t(n) = n − 1 Paralelo con n/2 elementos de proceso, como mınimo t(n) n/2 = 2 En cada Pi, i = 0, 1, . . . , n/2 − 1 inicio = 2 ∗ i desplazamiento = 1 activo = true para k = 1, 2, . . . , log n si activo a[inicio] = a[inicio] + a[inicio + desplazamiento] desplazamiento = desplazamiento ∗ 2 finsi si i mod desplazamiento 6= 0 activo = false finsi finpara
  • 7. La técnica memoria compartida Necesita del uso de cerrojos en los datos para impedir que se modifique simultáneamente por dos procesadores, por lo que se produce un coste extra en ciclos de CPU desperdiciados y ciclos de bus. También obliga a serializar alguna parte del algoritmo. La técnica paso de mensajes usa canales y mensajes pero esta comunicación añade un coste al bus, memoria adicional para las colas y los mensajes y latencia en el mensaje. Los diseñadores de procesadores paralelos usan buses especiales para que el coste de la comunicación sea pequeño pero siendo el algoritmo paralelo el que decide el volumen del tráfico.
  • 8. Algoritmo de parallel_for •El algoritmo Concurrency::p arallel_for realiza repetidamente la misma tarea en paralelo. Cada una de estas tareas se parametriza mediante un valor de iteración. Este algoritmo es útil cuando se tiene un cuerpo de bucle que no comparten recursos entre iteraciones de ese bucle. •El parallel_for algoritmo crea particiones de las tareas de forma óptima para la ejecución en paralelo. Utiliza un algoritmo de robo de trabajo y un robo de intervalo para equilibrar estas particiones cuando se desequilibran las cargas de trabajo.
  • 9. Ejemplo // parallel-for-structure.cpp // compile with: /EHsc #include <ppl.h> #include <array> #include <sstream> #include <iostream> using namespace concurrency; using namespace std; int wmain() { // Print each value from 1 to 5 in parallel. parallel_for(1, 6, [](int value) { wstringstream ss; ss << value << L' '; wcout << ss.str(); }); }