Open mp

Solo disponible en BuenasTareas
  • Páginas : 4 (886 palabras )
  • Descarga(s) : 0
  • Publicado : 26 de marzo de 2011
Leer documento completo
Vista previa del texto
Directivas OpenMP
* atomic: Se utiliza cuando la operación atañe a sólo una posición de memoria, y tiene que ser actualizada sólo por un hilo simultáneamente. Operaciones tipo x++ o --x son lasque usan esta cláusula. Esta directiva no soporta clausulas OpenMP
Sintaxis:
#pragma omp atomic
expresión expression

Ejemplo:
#pragma omp atomiccount++;

* parallel: Esta directiva nos indica que la parte de código que la comprende puede ser ejecutada por varios hilos. Esta directiva soporta las clausulas: copyin, default (OpenMP),firstprivate, if (OpenMP), num_threads, private (OpenMP), reduction, shared (OpenMP)
Sintaxis:
#pragma omp parallel [clauses]
{
code_block
}

Ejemplo:
#pragma omp parallel num_threads(4){
int i = omp_get_thread_num();
printf_s("Hello from thread %d\n", i);
}

* for: Igual que parallel pero optimizado para los bucles for. La directiva for soporta lasclausulas: firstprivate, lastprivate, nowait, ordered, private, reduction, schedule.
Sitaxis
#pragma omp [parallel] for [clauses]
for_statement
Ejemplo:
#pragma omp for
for (i=nStart;i<=nEnd; ++i) {
#pragma omp atomic
nSum += i;

* section y sections: Indica secciones que pueden ejecutarse en paralelo pero por un único hilo. Esta directiva soporta lasclausulas: firstprivate, lastprivate, nowait, private (OpenMP), reduction.
Sintaxis:
#pragma omp [parallel] sections [clauses]
{
#pragma omp section
{
code_block

}Ejemplo:
#pragma omp parallel sections num_threads(4)
{
printf_s("Hello from thread %d\n", omp_get_thread_num());
#pragma omp section
printf_s("Hello from thread%d\n", omp_get_thread_num());
}

* single: La parte de código que define esta directiva, sólo se puede ejecutar un único hilo de todos los lanzados, y no tiene que ser obligatoriamente el hilo...
tracking img