Advertisement
Advertisement

More Related Content

Advertisement

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(); }); }
  10. 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
Advertisement