Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Prctica de Multiprocesadores
Introduccin a OpenMP
ndice
1 Introduccin
1.
2. Regiones Paralelas:
3. Distribucin del trabajo
4. Gestin de datos
5. Sincronizacin
6 Funciones
6. F i de
d bibli
biblioteca
t
7. Variables del entorno
8. Ejemplo
Consta de:
Directivas para el compilador
Funciones de librera
Variables de entorno
// Secuencial: // Paralelo:
void main() void main()
{ {
double Res[1000]; double Res[1000];
#include omp.h
omp.h
Funciones de librera
double A[1000];
omp_set_num_threads(4);
#pragma omp parallel
{
int ID = omp_get_thread_num();
omp get thread num();
sumarElemA (ID,A);
}
Cada thread llama a sumarElemA para ID=0 .. 3
Una sola
l copia
i de
d A,
A compartida
id por todos
d los
l threads
h d
AC : MP: Introd. a OpenMP 8
Regiones Paralelas: Ejemplo
#include omp.h
omp.h
double A[1000]; clusula
3
3. Regin
R i Paralela
P l l OpenMP
O MP #pragma omp parallel
#
y distribucin de trabajo #pragma omp for schedule(static)
for for(i=0;i<N;i++)
{ a[i]
[i] = a[i]
[i] + b[i]
b[i];}
}
schedule (runtime)
Planificacin y tamao de bloque determinado por la variable de
entorno OMP_SCHEDULE
OMP SCHEDULE
i t Cada
private: C d thread
h d tiene
ti su
copia
i local.
l l
Sin inicializar y valor indefinido tras la regin paralela
2
2. #pragma omp threadprivate(work
threadprivate(work,size)
size)
#pragma omp parallel copyin(size) shared(N)
{
work = build(tol,size+N);
}
Se activa _OPENMP
Compilador de GCC:
gcc -fopenmp
gfortran -fopenmp
Compilador de Intel:
icc -openmp
ifort openmp
F ( x )x
i 0
i