Please enable JavaScript.
Coggle requires JavaScript to display documents.
OpenMP, Javier Benítez Sánchez 5° B - Coggle Diagram
OpenMP
Modelo de Programación
Utiliza un modelo portable y escalable que permite a los programadores una interfaz simple y flexible para desarrollar aplicaciones paralelas para plataformas desde la computadora de escritorio hasta las supercomputadoras
El paralelismo basado en hilos se utiliza en plataformas de memoria compartida
Incrementan la paralelización al paralelizar computaciones individuales en un programa cuando el resto de este es secuencial, con el compilador se generan hilos del programa y su sincronización.
. También puede permitir al programador separar el programa en regiones
seriales y otras paralelas, proporcionando el constructor de sincronización, sin embargo, no permite paralelizar automáticamente, garantizar la aceleración o proporcionar la libertad de carreras de datos.
Una región paralela es un bloque de código ejecutado por todos los hilos simultáneamente, el hilo maestro siempre tiene el ID de hilo 0, las regiones paralelas pueden ser anidadas, pero el soporte de su implementación es independiente
El paradigma de bifurcación es fácilmente disponible, en este paradigma un hilo maestro divide en varias tareas que se asignan de forma transparente a los hilos, espera a que finalicen y recopila los resultados en una fase conjunta secuencial.
El diseño de patrones “único programa múltiples datos” (SPMD) ejecuta el mismo programa en un número de elementos de procesamiento donde esos tales son arbitrariamente largos, usa el rango (un ID del 0 a tal-1) para seleccionar entre un conjunto de tareas y para administrar cualquier estructura de datos compartidos
Sintaxis Básica
Los Pragmas son directivas del compilador en lenguaje C o C++ que estandariza la “información
pragmática” proporcionando una manera de comunicarse con el compilador
Los datos necesitan ser “etiquetados”, esencialmente hay dos tipos:
Compartidos: que solo hay una instancia de los datos donde todos los hilos pueden leer y escribir datos simultáneamente, a menos que estén protegidos con un constructor OpenMP específica, además de que todos los cambios realizados son visibles para todos los hilos no de forma inmediata a menos que se especifique.
Privados: cada hilo tiene una copia de datos y ningún otro hilo puede acceder a esa copia, los cambios son solo visibles para el hilo que maneja los datos.
Facilita indicar cuando las iteraciones de un ciclo pueden ejecutarse en paralelo, el
compilador se encarga de generar el código que divide/une hilos y asigna las iteraciones a los hilos.
El contexto de ejecución es un espacio de direcciones con todas las variables que el hilo puede acceder que contiene variables estáticas, dato alojado dinámicamente, estructuras de datos en ejecución, tiempo de ejecución adicional para funciones invocadas por el hilo.
Una cláusula es un componente adicional opcional de un pragma, los privados (lista) son sin asociación de almacenamiento con el objeto original, con todas las referencias hacia el objeto local y valores no definidos al entrar y al salir, con los compartidos los datos son accesibles por todos los hilos en el equipo y todos los hilos acceden al mismo espacio de direcciones
¿Qué es?
Estándar de API para definir los programas de memoria
compartida con múltiples hilos
Una API de alto nivel comprende de 80% directivas pre procesadoras (compilación), 19% llamadas a librerías y variables de desarrollo 1%.
Soporta procesamiento de memoria compartida multiplataforma en lenguaje C, C++ y Fortran, en muchas plataformas, arquitecturas de conjuntos de instrucciones y sistemas operativos, incluidos Solaris AIX, HP-UX, Linux, macOS y Windows.
Es una especificación de programación portable, que utiliza hilos y de memoria compartida con una sintaxis “ligera”, el comportamiento exacto dependerá de la implementación de OpenMP y requiere de un compilador que soporte lenguaje C o Fortran
Javier Benítez Sánchez 5° B