Openmp
¿Qué es OpenMP?
• • • • • • Modelo de programación paralela Paralelismo de memoria compartida Soporta el paralelismo por datos Escalable Permite paralelización incremental Extensiones alenguajes de programación existentes ( Fortran, C, C++)
1
Shared Memory Systems (cont)
OpenMP Pthreads
Distributed Memory Systems
Processor M Processor ••••••••••••• M M Processor
MPIHPF
Interconnect
2
Clustered of SMPs
MPI hybrid MPI + OpenMP
Sintaxis de OpenMP
• La mayoria de las construcciones en OpenMP son directivas de compilación o pragmas.
– En C y C++, lospragmas tienen la forma:
• #pragma omp construct [clause [clause]…]
– En Fortran, las directivas tienen la forma:
• C$OMP construct [clause [clause]…] • !$OMP construct [clause [clause]…] •*$OMP construct [clause [clause]…]
• Como las construcciones son directivas, un programa en OpenMP puede ser compilado por compiladores que no soportan OpenMP.
3
Programa sencillo
La mayoría delas construcciones son directivas de compilación o pragmas La parte central de OpenMP es la paralelización de lazos
Programa Secuencial Programa Paralelo void main() { void main() { doublea[1000],b[1000],c[1000]; double a[1000],b[1000],c[1000]; for (int i = 0; i< 1000; i++){ #pragma omp parallel for a[i] = b[iI] + c[i]; for (int i = 0; i< 1000; i++){ } a[i] = b[iI] + c[i]; } } }
Modelo deprogramación en OpenMP
4
¿Cómo interactuan los threads?
• OpenMP es un modelo de memoria compartida.
– Los threads se comunican utilizando variables compartidas.
• El uso inadecuado devariables compartidas origina carreras críticas: • Para controlar las carreras críticas:
– Uso de sincronización para protegerse de los conflictos de datos.
• La sincronización es costosa:
–Modificar cómo se almacenan los datos para minimizar la necesidad de sincronización.
Alcance de los Datos
• SHARED
La variable es compartida por todos los procesos
• PRIVATE
Cada proceso tiene una...
Regístrate para leer el documento completo.