Variables privadas con la cláusula Private
Anterior | Siguiente |
Para denotar explícitamente una variable como privada, usamos la cláusula private
. La variable debe haber sido definida antes de la región paralela.
Sintaxis básica
En el caso de la directiva parallel
, la sintaxis es la siguiente:
#pragma omp parallel private(<var1[,var2,var3,...]>)
{
<parallel region code>
}
Ejemplo
Dentro de la región paralela compararemos una variable compartida y una privada, ambas explícitamente tipificadas, para determinar cuál es el hilo maestro:
#include <stdio.h>
#include <omp.h>
int main(){
int t = -1;
int m = omp_get_thread_num();
printf("master thread=%d in serial region\n", m);
#pragma omp parallel shared(m) private(t)
{
t = omp_get_thread_num();
if(t==m)
printf("master thread=%d in parallel region\n", m);
else
printf("thread=%d in parallel region\n", t);
}
printf("master thread=%d in serial region\n", m);
printf("value of t=%d\n", t);
}
¿Cómo compilar?
clang -fopenmp -I/home/user/llvm/llvm-build/projects/openmp/runtime/src/
-o private-000 private-000.c
¿Cómo ejecutar?
./private-000
Salida
master thread=0 in serial region
master thread=0 in parallel region
thread=1 in parallel region
thread=3 in parallel region
thread=2 in parallel region
master thread=0 in serial region
value of t=-1
t
conserva su valor original una vez termina la región paralela.
Preguntas
- Modifica el programa y haz de t una variable compartida.
- ¿Qué pasaría en este caso?
Anterior | Siguiente |
Estás en el Nivel 1: Introducción a la programación paralela con OpenMP. ¿Deseas volver al inicio?