SlideShare une entreprise Scribd logo
1  sur  19
OpenMP
Antonio del Solar - Arquitectura de Computadores
OpenMP
OpenMP (Open Multi-Processing) es una API
(Aplication Programming Interface)
que permite programación paralela multiplataforma
en los lenguajes C, C++ y Fortran.
Compiladores y Lenguajes I
Es compatible con los siguientes
sistemas operativos:
-Microsoft
Windows
-Mac OS X
-GNU/Linux
-HP-UX
-AIX
-Solaris
Compiladores y Lenguajes II
Puede 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 Studio
http://www.oracle.com/technetwork/server-storage/solarisstudio/overview/index.html
Intel - Compilers
https://software.intel.com/en-us/intel-compilers/
Portland Group - Compilers and Tools
http://www.pgroup.com/support/download_pgi2015.php
Absoft Pro - Fortran Compiler
http://www.absoft.com/SMP_Solutions.html
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 Studio
https://msdn.microsoft.com/en-us/library/tt15eb9t.aspx
Cray - Compiladores y OpenACC
http://www.openacc.org/
Compiladores y Lenguajes IV
Puede compilarse con:
NAG - Fortran compiler
http://www.nag.com/nagware/np.asp
OpenUH - UH Compiler
http://web.cs.uh.edu/~openuh/features.shtml
LLVM - clang
http://clang-omp.github.io/
LLNL - Rose Compiler Framework
https://en.wikibooks.org/wiki/ROSE_Compiler_Framework/OpenMP_Support
Appentra Solutions - Parallware compiler
http://www.appentra.com/products/parallware/
Configuración de IDE en OpenMP I
El entorno de desarrollo elegido en esta presentación es Qt Creator
en 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++
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).
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:
Configuración de IDE en OpenMP IV
También puede instalarse a través del interfaz gráfico de software de Linux Mint:
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.
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...
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.
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 += -fopenmp
LIBS += -fopenmp
Ejecución de código en OpenMP I
Una vez configurado el IDE, se puede comenzar
a escribir y ejecutar 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 programa
el número de hilos deseado:
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:
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.
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

Contenu connexe

Tendances

Unix Operating System
Unix Operating SystemUnix Operating System
Unix Operating Systemsubhsikha
 
Trabajo memoria virtual.
Trabajo memoria virtual.Trabajo memoria virtual.
Trabajo memoria virtual.velazqes
 
Process Management in Android
Process Management in AndroidProcess Management in Android
Process Management in AndroidShrey Verma
 
Systemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveSystemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveAlison Chaiken
 
Sistemas Operativos I-Particionamiento de memoria
Sistemas Operativos I-Particionamiento de memoriaSistemas Operativos I-Particionamiento de memoria
Sistemas Operativos I-Particionamiento de memoriaMari Cruz
 
Arquitectura de Von Neumann
Arquitectura de Von NeumannArquitectura de Von Neumann
Arquitectura de Von Neumannvictor medra
 
Gestion del almacenamiento secundario
Gestion del almacenamiento secundarioGestion del almacenamiento secundario
Gestion del almacenamiento secundarioMarielita Carlos
 
Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfazjomapuga
 
Performance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedPerformance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedBrendan Gregg
 
오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개SungTae Moon
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel SourceMotaz Saad
 

Tendances (20)

Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
 
Unix Operating System
Unix Operating SystemUnix Operating System
Unix Operating System
 
Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0Linux Internals - Interview essentials 4.0
Linux Internals - Interview essentials 4.0
 
Shell scripting
Shell scriptingShell scripting
Shell scripting
 
Linux programming - Getting self started
Linux programming - Getting self started Linux programming - Getting self started
Linux programming - Getting self started
 
Trabajo memoria virtual.
Trabajo memoria virtual.Trabajo memoria virtual.
Trabajo memoria virtual.
 
Process Management in Android
Process Management in AndroidProcess Management in Android
Process Management in Android
 
Systemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to loveSystemd: the modern Linux init system you will learn to love
Systemd: the modern Linux init system you will learn to love
 
Sistemas Operativos I-Particionamiento de memoria
Sistemas Operativos I-Particionamiento de memoriaSistemas Operativos I-Particionamiento de memoria
Sistemas Operativos I-Particionamiento de memoria
 
Depuracion errores scratch
Depuracion errores scratchDepuracion errores scratch
Depuracion errores scratch
 
Embedded Linux - Building toolchain
Embedded Linux - Building toolchainEmbedded Linux - Building toolchain
Embedded Linux - Building toolchain
 
Arquitectura de Von Neumann
Arquitectura de Von NeumannArquitectura de Von Neumann
Arquitectura de Von Neumann
 
Gestion del almacenamiento secundario
Gestion del almacenamiento secundarioGestion del almacenamiento secundario
Gestion del almacenamiento secundario
 
Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfaz
 
Unidad1 2 Lenguajes y automatas
Unidad1 2  Lenguajes y automatasUnidad1 2  Lenguajes y automatas
Unidad1 2 Lenguajes y automatas
 
Performance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedPerformance Wins with BPF: Getting Started
Performance Wins with BPF: Getting Started
 
How To Build Android for ARM Chip boards
How To Build Android for ARM Chip boardsHow To Build Android for ARM Chip boards
How To Build Android for ARM Chip boards
 
오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개오픈소스 기반 비행제어컴퓨터 PX4 소개
오픈소스 기반 비행제어컴퓨터 PX4 소개
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel Source
 
Linux Internals - Part II
Linux Internals - Part IILinux Internals - Part II
Linux Internals - Part II
 

En vedette

Esquemas iterativos en paralelo con OpenMP
Esquemas iterativos en paralelo con OpenMPEsquemas iterativos en paralelo con OpenMP
Esquemas iterativos en paralelo con OpenMPSotero Ordones
 
Los cómics de Francisco Ibáñez (fragmento)
Los cómics de Francisco Ibáñez (fragmento)Los cómics de Francisco Ibáñez (fragmento)
Los cómics de Francisco Ibáñez (fragmento)Fernando C.
 
Partnership Agreements for the Agriculture Community
Partnership Agreements for the Agriculture CommunityPartnership Agreements for the Agriculture Community
Partnership Agreements for the Agriculture CommunityCari Rincker
 
Creative Commons and Open Educational Resources: A Webinar for TAACCCT progra...
Creative Commons and Open Educational Resources: A Webinar for TAACCCT progra...Creative Commons and Open Educational Resources: A Webinar for TAACCCT progra...
Creative Commons and Open Educational Resources: A Webinar for TAACCCT progra...Jane Park
 
Mi marca personal y profesional en la Web
Mi marca personal y profesional en la WebMi marca personal y profesional en la Web
Mi marca personal y profesional en la WebAlbertina Navas
 
miodrag kajgana - alcohol, party drugs and hiv
miodrag kajgana - alcohol, party drugs and hiv miodrag kajgana - alcohol, party drugs and hiv
miodrag kajgana - alcohol, party drugs and hiv Partnerships in Health
 
How To Make Sure Your Brand Is Dressed To The Nines
How To Make Sure Your Brand Is Dressed To The NinesHow To Make Sure Your Brand Is Dressed To The Nines
How To Make Sure Your Brand Is Dressed To The NinesVerticalResponse
 
Historia de la comunicación
Historia de la comunicaciónHistoria de la comunicación
Historia de la comunicaciónsergiogs93
 
COMMUNICATION 20 GREATEST HITS en español
COMMUNICATION 20 GREATEST HITS en españolCOMMUNICATION 20 GREATEST HITS en español
COMMUNICATION 20 GREATEST HITS en españolAlain Uceda
 
Euro instick aftonbladet_digital
Euro instick aftonbladet_digitalEuro instick aftonbladet_digital
Euro instick aftonbladet_digitalERV Sweden
 
Sontex Supercal 539 Heat Meter - Spec Sheet
Sontex Supercal 539 Heat Meter - Spec SheetSontex Supercal 539 Heat Meter - Spec Sheet
Sontex Supercal 539 Heat Meter - Spec SheetThorne & Derrick UK
 
ppt_grup_Pol
ppt_grup_Polppt_grup_Pol
ppt_grup_Polmbrun
 
Survival Tactics & Ideas
Survival Tactics & IdeasSurvival Tactics & Ideas
Survival Tactics & IdeasBasudeo Ojha
 
IT-ISS 7710 Controller - Intellisystem - Integrated Satellite Solutions
IT-ISS 7710 Controller - Intellisystem - Integrated Satellite SolutionsIT-ISS 7710 Controller - Intellisystem - Integrated Satellite Solutions
IT-ISS 7710 Controller - Intellisystem - Integrated Satellite SolutionsCristian Randieri PhD
 
36954 lustige-sprueche
36954 lustige-sprueche36954 lustige-sprueche
36954 lustige-spruecheMaja Walter
 

En vedette (20)

OpenMP
OpenMPOpenMP
OpenMP
 
Esquemas iterativos en paralelo con OpenMP
Esquemas iterativos en paralelo con OpenMPEsquemas iterativos en paralelo con OpenMP
Esquemas iterativos en paralelo con OpenMP
 
Los cómics de Francisco Ibáñez (fragmento)
Los cómics de Francisco Ibáñez (fragmento)Los cómics de Francisco Ibáñez (fragmento)
Los cómics de Francisco Ibáñez (fragmento)
 
Partnership Agreements for the Agriculture Community
Partnership Agreements for the Agriculture CommunityPartnership Agreements for the Agriculture Community
Partnership Agreements for the Agriculture Community
 
Creative Commons and Open Educational Resources: A Webinar for TAACCCT progra...
Creative Commons and Open Educational Resources: A Webinar for TAACCCT progra...Creative Commons and Open Educational Resources: A Webinar for TAACCCT progra...
Creative Commons and Open Educational Resources: A Webinar for TAACCCT progra...
 
Paper bag animal puppets
Paper bag animal puppetsPaper bag animal puppets
Paper bag animal puppets
 
Mi marca personal y profesional en la Web
Mi marca personal y profesional en la WebMi marca personal y profesional en la Web
Mi marca personal y profesional en la Web
 
miodrag kajgana - alcohol, party drugs and hiv
miodrag kajgana - alcohol, party drugs and hiv miodrag kajgana - alcohol, party drugs and hiv
miodrag kajgana - alcohol, party drugs and hiv
 
How To Make Sure Your Brand Is Dressed To The Nines
How To Make Sure Your Brand Is Dressed To The NinesHow To Make Sure Your Brand Is Dressed To The Nines
How To Make Sure Your Brand Is Dressed To The Nines
 
Historia de la comunicación
Historia de la comunicaciónHistoria de la comunicación
Historia de la comunicación
 
Bondiacat 15072014
Bondiacat 15072014Bondiacat 15072014
Bondiacat 15072014
 
COMMUNICATION 20 GREATEST HITS en español
COMMUNICATION 20 GREATEST HITS en españolCOMMUNICATION 20 GREATEST HITS en español
COMMUNICATION 20 GREATEST HITS en español
 
Euro instick aftonbladet_digital
Euro instick aftonbladet_digitalEuro instick aftonbladet_digital
Euro instick aftonbladet_digital
 
Sontex Supercal 539 Heat Meter - Spec Sheet
Sontex Supercal 539 Heat Meter - Spec SheetSontex Supercal 539 Heat Meter - Spec Sheet
Sontex Supercal 539 Heat Meter - Spec Sheet
 
Bash Tips Tricks Campus
Bash Tips Tricks CampusBash Tips Tricks Campus
Bash Tips Tricks Campus
 
ppt_grup_Pol
ppt_grup_Polppt_grup_Pol
ppt_grup_Pol
 
Survival Tactics & Ideas
Survival Tactics & IdeasSurvival Tactics & Ideas
Survival Tactics & Ideas
 
IT-ISS 7710 Controller - Intellisystem - Integrated Satellite Solutions
IT-ISS 7710 Controller - Intellisystem - Integrated Satellite SolutionsIT-ISS 7710 Controller - Intellisystem - Integrated Satellite Solutions
IT-ISS 7710 Controller - Intellisystem - Integrated Satellite Solutions
 
36954 lustige-sprueche
36954 lustige-sprueche36954 lustige-sprueche
36954 lustige-sprueche
 
Aceite y gases
Aceite y gasesAceite y gases
Aceite y gases
 

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

Similaire à OpenMP - Configuración de IDE y ejecución de código paralelo (20)

01 - Introducción al lenguaje C
01 - Introducción al lenguaje C01 - Introducción al lenguaje C
01 - Introducción al lenguaje C
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1
 
Electonica de potencia, diodos de rectificacion
Electonica de potencia, diodos de rectificacionElectonica de potencia, diodos de rectificacion
Electonica de potencia, diodos de rectificacion
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
COMPILADORES
COMPILADORESCOMPILADORES
COMPILADORES
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Tutorial de- c. ++
Tutorial de- c. ++ Tutorial de- c. ++
Tutorial de- c. ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Entornos de lenguaje c2
Entornos de lenguaje c2Entornos de lenguaje c2
Entornos de lenguaje c2
 
Freepascal
FreepascalFreepascal
Freepascal
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
UNIDAD 3
UNIDAD 3 UNIDAD 3
UNIDAD 3
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3
 
Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador?  Presentacion: ¿Que es Compilador?
Presentacion: ¿Que es Compilador?
 
Yareli martinez rios
Yareli martinez riosYareli martinez rios
Yareli martinez rios
 
Manual Pascal
Manual PascalManual Pascal
Manual Pascal
 
Unidad3 130504222102-phpapp02
Unidad3 130504222102-phpapp02Unidad3 130504222102-phpapp02
Unidad3 130504222102-phpapp02
 

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

  • 1. OpenMP Antonio del Solar - Arquitectura de Computadores
  • 2. OpenMP OpenMP (Open Multi-Processing) es una API (Aplication Programming Interface) que permite programación paralela multiplataforma en los lenguajes C, C++ y Fortran.
  • 3. Compiladores y Lenguajes I Es compatible con los siguientes sistemas operativos: -Microsoft Windows -Mac OS X -GNU/Linux -HP-UX -AIX -Solaris
  • 4. Compiladores y Lenguajes II Puede 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 Studio http://www.oracle.com/technetwork/server-storage/solarisstudio/overview/index.html Intel - Compilers https://software.intel.com/en-us/intel-compilers/ Portland Group - Compilers and Tools http://www.pgroup.com/support/download_pgi2015.php Absoft Pro - Fortran Compiler http://www.absoft.com/SMP_Solutions.html
  • 5. 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 Studio https://msdn.microsoft.com/en-us/library/tt15eb9t.aspx Cray - Compiladores y OpenACC http://www.openacc.org/
  • 6. Compiladores y Lenguajes IV Puede compilarse con: NAG - Fortran compiler http://www.nag.com/nagware/np.asp OpenUH - UH Compiler http://web.cs.uh.edu/~openuh/features.shtml LLVM - clang http://clang-omp.github.io/ LLNL - Rose Compiler Framework https://en.wikibooks.org/wiki/ROSE_Compiler_Framework/OpenMP_Support Appentra Solutions - Parallware compiler http://www.appentra.com/products/parallware/
  • 7. Configuración de IDE en OpenMP I El entorno de desarrollo elegido en esta presentación es Qt Creator en 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++
  • 8. 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).
  • 9. 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:
  • 10. Configuración de IDE en OpenMP IV También puede instalarse a través del interfaz gráfico de software de Linux Mint:
  • 11. 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.
  • 12. 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...
  • 13. 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.
  • 14. 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 += -fopenmp LIBS += -fopenmp
  • 15. Ejecución de código en OpenMP I Una vez configurado el IDE, se puede comenzar a escribir y ejecutar código paralelo:
  • 16. 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 programa el número de hilos deseado:
  • 17. 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:
  • 18. 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.
  • 19. 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