Agregar a favoritos      Ayuda      Português      Ingles     

Programación Paralela con Memoria Compartida

Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com
¿Qué es OpenMP? API Paralela portable de memoria compartida Fortran, C, y C++ Muchos distribuidores soporte para Linux y Windows Estandariza tareas y paralelismo de ciclos Soporta paralelismo de grano grueso Combina código serial y paralelo en un solo fuente Estandariza ~ 20 años de experiencia de paralelización dirigida por el compilador
Monografias.com
Modelo de programación El hilo maestro se divide en un equipo de hilos como sea necesario El Paralelismo se añade incrementalmente: el programa secuencial se convierte en un programa paralelo Regiones paralelas Hilo maestro
Monografias.com
Detalles de la sintaxis para comenzar Muchas de las construcciones de OpenMP son directivas del compilador o pragmas Para C y C++, los pragmas toman la forma: #pragma omp construct [clause [clause]…] Para Fortran, las directivas toman una de las formas: C$OMP construct [clause [clause]…] !$OMP construct [clause [clause]…] *$OMP construct [clause [clause]…] Archivo de cabecera o módulo de Fortran 90 #include “omp.h” use omp_lib
Monografias.com
Región Paralela y Bloques Estructurados (C/C++) Muchas de las construcciones de OpenMP se aplican a bloques estructurados Bloque Estructurado: un bloque con un punto de entrada al inicio y un punto de salida al final Los únicos “saltos” permitidos son sentencias de STOP en Fortran y exit() en C/C++
Monografias.com
Región Paralela y Bloques Estructurados (C/C++) Un bloque estructurado Un bloque no estructurado if (go_now()) goto more; #pragma omp parallel { int id = omp_get_thread_num(); more: res[id] = do_big_job(id); if (conv (res[id])) goto done; goto more; } done: if (!really_done()) goto more; #pragma omp parallel { int id = omp_get_thread_num(); more: res[id] = do_big_job (id); if (conv (res[id])) goto more; } printf (“All done\n”);
Monografias.com
Trabajo compartido Trabajo compartido es el término general usado en OpenMP para describir la distribución de trabajo entre hilos. Tres ejemplos de trabajo compartido en OpenMP son: Construcción omp for Construcción omp sections Construcción omp task Automáticamente divide el trabajo entre hilos
Monografias.com
Construcción omp for Los hilos se asignan a un conjunto de iteraciones independientes Los hilos deben de esperar al final del bloque de construcción de trabajo en paralelo (Gp:) #pragma omp parallel (Gp:) #pragma omp for (Gp:) Barrera implícita (Gp:) i = 0 i = 1 i = 2 i = 3 (Gp:) i = 4 i = 5 i = 6 i = 7 (Gp:) i = 8 i = 9 i = 10 i = 11 // assume N=12 #pragma omp parallel #pragma omp for for(i = 0, i < N, i++) c[i] = a[i] + b[i];
Monografias.com
Combinando pragmas Estos códigos son equivalentes (Gp:) #pragma omp parallel { #pragma omp for for (i=0;i< MAX; i++) { res[i] = huge(); } } (Gp:) #pragma omp parallel for for (i=0;i< MAX; i++) { res[i] = huge(); }
Monografias.com
La cláusula Private Reproduce la variable por cada hilo Las variables no son inicializadas; en C++ el objeto es construido por default Cualquier valor externo a la región paralela es indefinido (Gp:) void* work(float* c, int N) { float x, y; int i; #pragma omp parallel for private(x,y) for(i=0; i<= end; i += 2 ) { if ( TestForPrime(i) ) gPrimesFound++; } Las iteraciones se dividen en bloques de 8 Si start = 3, el primer bloque es i={3,5,7,9,11,13,15,17}
Monografias.com
Actividad 2b – Planificación del Mandelbrot Objetivo: crea una versión paralela de mandelbrot que use planificación dinámica de OpenMP Sigue la actividad de Mandelbrot llamada Mandelbrot Scheduling en el documento de la práctica
Monografias.com
Agenda ¿Qué es OpenMP? Regiones Paralelas Trabajo compartido Ambiente de datos Sincronización Tópicos avanzados opcionales
Monografias.com
Descomposición de tareas a = alice(); b = bob(); s = boss(a, b); c = cy(); printf ("%6.2f\n", bigboss(s,c)); alice,bob, y cy pueden realizarse en paralelo (Gp:) alice (Gp:) bob (Gp:) boss (Gp:) bigboss (Gp:) cy
Monografias.com
Secciones omp #pragma omp sections Debe estar dentro de una región paralela Precede un bloque de código que contiene N bloques de código que pueden ser ejecutados concurrentemente por N hilos Abarca cada sección de omp
Partes: 1, 2

Página siguiente 

Comentarios


Trabajos relacionados

Ver mas trabajos de Programacion

 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.


Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Iniciar sesión

Ingrese el e-mail y contraseña con el que está registrado en Monografias.com

   
 

Regístrese gratis

¿Olvidó su contraseña?

Ayuda