OpenMP - Configuración de IDE y ejecución de código paralelo

19
OpenMP Antonio del Solar - Arquitectura de Computadores

Transcript of OpenMP - Configuración de IDE y ejecución de código paralelo

Page 1: OpenMP - Configuración de IDE y ejecución de código paralelo

OpenMP

Antonio del Solar - Arquitectura de Computadores

Page 2: OpenMP - Configuración de IDE y ejecución de código paralelo

OpenMP

OpenMP (Open Multi-Processing) es una API (Aplication Programming Interface)

que permite programación paralela multiplataforma en los lenguajes C, C++ y Fortran.

Page 3: OpenMP - Configuración de IDE y ejecución de código paralelo

Compiladores y Lenguajes I

Es compatible con los siguientes sistemas operativos:

-Microsoft Windows

-Mac OS X

-GNU/Linux

-HP-UX

-AIX

-Solaris

Page 4: OpenMP - Configuración de IDE y ejecución de código paralelo

Compiladores y Lenguajes IIPuede compilarse con:

GNU - gcc - C,C++ y Fortran http://gcc.gnu.org/wiki/openmp

IBM - XLC - C,C++ y Fortran http://www.ibm.com/developerworks/rational/library/parallelize-ccpp-code-zOS-OpenMP/index.html

Oracle - Solaris Studiohttp://www.oracle.com/technetwork/server-storage/solarisstudio/overview/index.html

Intel - Compilershttps://software.intel.com/en-us/intel-compilers/

Portland Group - Compilers and Toolshttp://www.pgroup.com/support/download_pgi2015.php

Absoft Pro - Fortran Compilerhttp://www.absoft.com/SMP_Solutions.html

Page 5: OpenMP - Configuración de IDE y ejecución de código paralelo

Compiladores y Lenguajes III

Puede compilarse con:

Lahey/Fujitsu - Fortran 95 http://www.polyhedron.com/products/fortran-compilers/lahey

PathScale - Enzo 2014 y EKOPath5 http://www.pathscale.com/

HP - C, C++, Fortran Compilers http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/Online_Help/parallelprog.htm

Microsoft - Visual Studiohttps://msdn.microsoft.com/en-us/library/tt15eb9t.aspx

Cray - Compiladores y OpenACChttp://www.openacc.org/

Page 6: OpenMP - Configuración de IDE y ejecución de código paralelo

Compiladores y Lenguajes IV

Puede compilarse con:

NAG - Fortran compilerhttp://www.nag.com/nagware/np.asp

OpenUH - UH Compiler http://web.cs.uh.edu/~openuh/features.shtml

LLVM - clanghttp://clang-omp.github.io/

LLNL - Rose Compiler Framework https://en.wikibooks.org/wiki/ROSE_Compiler_Framework/OpenMP_Support

Appentra Solutions - Parallware compilerhttp://www.appentra.com/products/parallware/

Page 7: OpenMP - Configuración de IDE y ejecución de código paralelo

Configuración de IDE en OpenMP I

El entorno de desarrollo elegido en esta presentación es Qt Creatoren Linux Mint. Es un IDE diseñado principalmente para C++, que integra de

forma muy positiva para el usuario las funciones que habitualmente son menos amigables (ya sea en otros IDEs o sin utilizar ninguno) como la depuración de

errores o el seguimiento de las versiones del código.

Utiliza por defecto el compilador gcc para C y g++ para C++

Page 8: OpenMP - Configuración de IDE y ejecución de código paralelo

Configuración de IDE en OpenMP II

Sus principales características son:

-Interpretación del código C y C++: No posee un simple editor de texto, sino que reconoce la gramática de estos lenguajes, siendo capaz de realizar precisiones sobre el código escrito por el usuario como por ejemplo

señalar los errores que pueda haber cometido y el posible motivo.

-Administrador de proyectos: Integra el desarrollo de proyectos de considerable complejidad, facilitando el control de versiones y encargándose de la creación y configuración de los archivos necesarios en función del tipo

de proyecto que se trate.

-Depuración de errores y pruebas: Permite utilizar fácilmente herramientas que comprueban que el código produce el resultado deseado sin errores y que es compatible con los requisitos de la plataforma en la que se

ejecutará.

-Publicación final: Incluye el proceso de compilación en el producto final, destinado a ser utilizado en una o más plataformas (escritorio, móviles, ...), encargándose de que cumpla los requisitos de varios de los canales

centralizados de distribución de software (como la tienda de Google o de Apple).

Page 9: OpenMP - Configuración de IDE y ejecución de código paralelo

Configuración de IDE en OpenMP III

En GNU/Linux la instalación de nuevo software está muy facilitado por la existencia de repositorios centralizados, a los que se puede acceder por consola de comandos o también por interfaces

gráficas. Realizando una búsqueda del software “qtcreator”, aparecen los paquetes con un nombre similar, siendo el paquete del mismo nombre la instalación completa:

Una vez conocido el paquete deseado, se procede a su instalación:

Page 10: OpenMP - Configuración de IDE y ejecución de código paralelo

Configuración de IDE en OpenMP IV

También puede instalarse a través del interfaz gráfico de software de Linux Mint:

Page 11: OpenMP - Configuración de IDE y ejecución de código paralelo

Configuración de IDE en OpenMP V

La pantalla inicial consta de una presentación muy positiva para el usuario, mostrando la información de uso del programa y facilitando el acceso a

documentación y tutoriales.

Page 12: OpenMP - Configuración de IDE y ejecución de código paralelo

Configuración de IDE en OpenMP VI

La creación de nuevos proyectos está muy facilitada por un asistente, que permite elegir el lenguaje, detalles sobre la plataforma destino, control de

versiones, etc...

Page 13: OpenMP - Configuración de IDE y ejecución de código paralelo

Configuración de IDE en OpenMP VII

Qt Creator ofrece gran libertad de configuración a través de su propia funcionalidad y de extensiones que aumentan sus posibilidades. Al crear el

proyecto se puede especificar el directorio donde se guardará, incluyendo sus subcarpetas de depurado y versión final, así como opciones del control de

versiones y de adhesión a otros proyectos previos.

Page 14: OpenMP - Configuración de IDE y ejecución de código paralelo

Configuración de IDE en OpenMP VII

La integración de Qt Creator con OpenMP es tan sencilla como añadir estas dos líneas en el archivo .pro del proyecto del programa:

QMAKE_CXXFLAGS += -fopenmpLIBS += -fopenmp

Page 15: OpenMP - Configuración de IDE y ejecución de código paralelo

Ejecución de código en OpenMP I

Una vez configurado el IDE, se puede comenzar a escribir y ejecutar código paralelo:

Page 16: OpenMP - Configuración de IDE y ejecución de código paralelo

Ejecución de código en OpenMP II

En el caso del ejemplo presentado, además de ejecutarlo hay que indicar

como parámetro de entrada del programael número de hilos deseado:

Page 17: OpenMP - Configuración de IDE y ejecución de código paralelo

Ejecución de código en OpenMP III

El programa realiza la integral definida entre dos puntos con el número de trapezoides de aproximación deseados:

Page 18: OpenMP - Configuración de IDE y ejecución de código paralelo

Ejecución de código en OpenMP IV

Las directivas de OpenMP presentes en este código son:

-# pragma omp parallel num_threads() : Crea la región de ejecución de múltiples hilos en paralelo, con el número de hilos indicado. En el caso de este

programa, dicho número es el introducido como parámetro inicial en la ejecución del programa.

-# pragma omp critical: Limita la ejecución del bloque al que va asociado a un único hilo simultáneo. En el caso de este programa, lo que limita es la

presentación final del resultado.

Page 19: OpenMP - Configuración de IDE y ejecución de código paralelo

Ejecución de código en OpenMP V

Las funciones de OpenMP presentes en este código son:

-omp_get_thread_num() : Devuelve el número de hilo que está ejecutando la función. Es un número entre 0 y un número menos que el devuelto por omp_get_num_threads().

-omp_get_num_threads() : Devuelve el número de hilos total en ejecución