SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

Unidad2 programas while , do while y for
Unidad2 programas while , do while  y forUnidad2 programas while , do while  y for
Unidad2 programas while , do while y forMiguel Angel Peña
 
Automatas y compiladores clase1
Automatas y compiladores clase1Automatas y compiladores clase1
Automatas y compiladores clase1Germania Rodriguez
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcionalAlejandra MA
 
Mecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmosMecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmosAbimael hernandez
 
Sistemas operativos procesos
Sistemas operativos   procesosSistemas operativos   procesos
Sistemas operativos procesosayreonmx
 
Sistemas Operativos Gestion de procesos
Sistemas Operativos Gestion de procesosSistemas Operativos Gestion de procesos
Sistemas Operativos Gestion de procesosChiNo Sosa Erazo
 
Gramática de libre contexto
Gramática de libre contextoGramática de libre contexto
Gramática de libre contextoJaVito GagrLu
 
Ejercicios directorios de Linux
Ejercicios directorios de LinuxEjercicios directorios de Linux
Ejercicios directorios de LinuxPANAFMX
 
Algoritmo de enrutamiento
Algoritmo de enrutamientoAlgoritmo de enrutamiento
Algoritmo de enrutamientoRaul Nunez
 
35699430 ccna-4-0-labs-modulo-2-e routing-ilm-v40
35699430 ccna-4-0-labs-modulo-2-e routing-ilm-v4035699430 ccna-4-0-labs-modulo-2-e routing-ilm-v40
35699430 ccna-4-0-labs-modulo-2-e routing-ilm-v40Oscar Pedraza Martinez
 
Arquitectura de Cómputo Paralelo MISD
Arquitectura de Cómputo Paralelo MISDArquitectura de Cómputo Paralelo MISD
Arquitectura de Cómputo Paralelo MISDJuan Novelo
 
TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)
TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)
TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)Belen Toledo
 

La actualidad más candente (20)

Unidad2 programas while , do while y for
Unidad2 programas while , do while  y forUnidad2 programas while , do while  y for
Unidad2 programas while , do while y for
 
Automatas y compiladores clase1
Automatas y compiladores clase1Automatas y compiladores clase1
Automatas y compiladores clase1
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcional
 
Mecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmosMecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmos
 
Sistemas operativos procesos
Sistemas operativos   procesosSistemas operativos   procesos
Sistemas operativos procesos
 
(gramatica atribuida)
(gramatica atribuida)(gramatica atribuida)
(gramatica atribuida)
 
Sistemas Operativos Gestion de procesos
Sistemas Operativos Gestion de procesosSistemas Operativos Gestion de procesos
Sistemas Operativos Gestion de procesos
 
Gramática de libre contexto
Gramática de libre contextoGramática de libre contexto
Gramática de libre contexto
 
Ejercicios directorios de Linux
Ejercicios directorios de LinuxEjercicios directorios de Linux
Ejercicios directorios de Linux
 
Taller metricas
Taller metricasTaller metricas
Taller metricas
 
Java io
Java ioJava io
Java io
 
Algoritmo de enrutamiento
Algoritmo de enrutamientoAlgoritmo de enrutamiento
Algoritmo de enrutamiento
 
35699430 ccna-4-0-labs-modulo-2-e routing-ilm-v40
35699430 ccna-4-0-labs-modulo-2-e routing-ilm-v4035699430 ccna-4-0-labs-modulo-2-e routing-ilm-v40
35699430 ccna-4-0-labs-modulo-2-e routing-ilm-v40
 
Arquitectura de Cómputo Paralelo MISD
Arquitectura de Cómputo Paralelo MISDArquitectura de Cómputo Paralelo MISD
Arquitectura de Cómputo Paralelo MISD
 
Decompilador y metacompilador
Decompilador y metacompiladorDecompilador y metacompilador
Decompilador y metacompilador
 
Capitulo5
Capitulo5Capitulo5
Capitulo5
 
TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)
TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)
TCP (Transmission Control Protocol) Y UDP (User Datagram Protocol)
 
UNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓNUNIDAD 3 MODULARIZACIÓN
UNIDAD 3 MODULARIZACIÓN
 
Ciclo de instrucción
Ciclo de instrucciónCiclo de instrucción
Ciclo de instrucción
 

Destacado

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
 

Destacado (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
 

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

Similar a 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