Instalación de OpenMP en Mac OS X 10.11

6 minutos de lectura

¿Cómo puedo hacer que OpenMP se ejecute en Mac OSX 10.11, para poder ejecutar scripts? vía terminal?

He instalado OpenMP: brew install clang-omp.

Cuando ejecuto, por ejemplo: gcc -fopenmp -o Parallel.b Parallel.c devuelve la siguiente expresión: fatal error: 'omp.h' file not found

También he probado: brew install gcc --without-multilib pero desafortunadamente esto finalmente devolvió lo siguiente (después de instalar primero algunas dependencias):

The requested URL returned error: 404 Not Found
Error: Failed to download resource "mpfr--patch"

¿Algún trabajo recomendado?

  • Posible duplicado de Error al habilitar openmp – “ld: biblioteca no encontrada para -lgomp” y errores de Clang

    – usuario3528438

    1 de febrero de 2016 a las 16:02

  • Tuve este problema recientemente y lo solucioné reinstalando clang-omp.

    –Jeff Hammond

    2 de febrero de 2016 a las 4:48

  • Um, si quieres clang-omp, debes invocarlo, y no GCC

    –Jeff Hammond

    2 de febrero de 2016 a las 4:49

  • Actualmente estoy intentando esto ahora mismo: github.com/DmitryUlyanov/Multicore-TSNE/issues/1

    – O.rka

    19 mayo 2017 a las 20:01


  • Aquí se explica cómo forzar el sonido metálico de Apple para admitir OpenMP: stackoverflow.com/a/47230419/3419533

    – Alexei Bataev

    27 de diciembre de 2017 a las 18:49

avatar de usuario
Alejandro Daniel Noel

En una Mac, el comando gcc es un enlace simbólico a Clang. Entonces llamando

gcc -fopenmp -o your_program your_program.c

de hecho, está utilizando Clang, que hasta ahora no tenía soporte integrado para OpenMP.

Las versiones más nuevas de Clang tienen soporte para OpenMP según esta post (donde también puedes encontrar instrucciones sobre cómo configurarlo).

Por otro lado, si aún desea usar gcc, puedo guiarlo a través de los pasos que me funcionaron.

  1. Instala gcc con brew. El comando que usaste debería funcionar:

    brew install gcc --without-multilib
    

    Alternativamente, si brew dice que ya tiene gcc instalado, puede intentar

    brew reinstall gcc --without-multilib
    

    Como habrás notado, si no especificas --without-multilib brew le advierte que es posible que OpenMP no funcione.

  2. Encuentre la ubicación del gcc recién instalado.

    Brew agrega el número de versión a gcc para que no entre en conflicto con el instalado por Command Line Tools. Encontrará el enlace simbólico en usr/local/bin.

    en mi caso es

    usr/local/bin/gcc-5
    

    Si hace clic derecho y elige “Mostrar original“debería mostrar el gcc-5 ejecutable en /usr/local/Cellar/gcc/5.3.0/bin/gcc-5 (los números de versión pueden diferir).

  3. Ahora necesita decirle a su sistema al respecto:

    Al llamar a un compilador, su bash buscará /usr/bin por defecto y no en /usr/local/bin. Debe agregar este directorio a su $RUTA.

    Esto se puede hacer fácilmente con el comando:

    PATH=/usr/local/bin:$PATH
    
  4. Ahora debería poder compilar con OpenMP habilitado usando:

    gcc-5 -fopenmp -o your_program your_program.c
    

Observación: gcc-5 es la versión que tengo instalada, la tuya puede diferir.

  • Funciona para mí, siendo la versión actual gcc-6. Aunque si está instalando homebrew por primera vez, ¿no debería escribirse la modificación $PATH en su .bashrc?

    – A Paul

    31 de enero de 2017 a las 18:04

  • ¿Dónde están los archivos? Recibo un error que dice que no hay un archivo de entrada

    – SumNeuron

    17 de septiembre de 2017 a las 8:24

  • ¿A qué archivos se refiere @SumNeuron? Si te refieres a los que están en la última línea de código, di el primer “Parallel” es el nombre del ejecutable de salida y “Parallel.c” es la fuente para compilar. Su terminal debe estar en el mismo directorio que el archivo “Parallel.c”, de lo contrario no lo encontrará.

    –Alejandro Daniel Noel

    18 de septiembre de 2017 a las 5:39


  • @AlejandroDanielNoel mi pregunta es de dónde sacas esos archivos ya que no parecen estar instalados con gcc o llvm

    – SumNeuron

    18 de septiembre de 2017 a las 7:45

  • Acabo de probar estos pasos y recibí la siguiente notificación de Homebrew: Warning: gcc: this formula has no --without-multilib option so it will be ignored!

    – Alex Jonson

    3 abr 2018 a las 19:18


avatar de usuario
prakharjain

  • instalar clang-omp

    brew install clang-omp
    
  • asegúrese de usar la herramienta de línea de comando xcode

    xcode-select --install
    
  • De hecho, tuve un error al ejecutar un código openmp de muestra

    /usr/local/opt/libiomp/include/libiomp/omp.h:139:21: error: expected ';' after top level declarator extern void   __ KAI_KMPC_CONVENTION kmp_set_stacksize_s        (size_t);
    
  • Simplemente elimine un espacio que está presente entre __ y KAI del archivo

  • Ahora usa el comando

    clang-omp -fopenmp helloopenmp.c
    

    y ejecuta el siguiente código

    #include <omp.h>
    #include <stdio.h>
    int main() {
        #pragma omp parallel
        printf("Hello from thread %d, nthreads %d\n", omp_get_thread_num(), omp_get_num_threads());
    }
    
  • Deberías obtener un resultado similar a este

    Hello from thread 3, nthreads 4
    Hello from thread 2, nthreads 4
    Hello from thread 0, nthreads 4
    Hello from thread 1, nthreads 4
    
  • Trabajó en OS X 10.11.3 y con actualización de preparación del 18 de febrero de 2016

  • clang-omp se eliminó de homebrew/core en commit c57e307: clang-omp: migrar a boneyard La funcionalidad ahora está disponible como parte de LLVM en Homebrew.

    – ensalada

    17/04/2017 a las 21:31

macOS High Sierra Versión 10.13.6 (17G65)

1. Instalar gcc

brew reinstall gcc --without-multilib

2. Compilar

gcc-8 -Wall -fopenmp your-parallel-program.c

Observe la gcc-8 mira el versión brew instala, la tuya puede ser gcc-7 o gcc-9


==> Pouring gcc-8.2.0.high_sierra.bottle.1.tar.gz
🍺 /usr/local/Cellar/gcc/8.2.0: 1,495 files, 344.8MB

¡Eso es todo!

  • No es necesario agregar --without-multilib más en 2019.

    – Luis Yang

    7 de enero de 2019 a las 10:07

  • opción inválida: –sin-multilib

    – Skyy2010

    13 de marzo de 2019 a las 14:18

avatar de usuario
ESbros

De forma predeterminada, GCC utiliza la distribución clang. Instalar GCC con Homebrew. Una vez instalado, puede compilar el código. especificando la versión GCC instalado por Homebrew y agregando la bandera OpenMP. A continuación se muestra un ejemplo de hello_world:

  1. elaborar cerveza instalar gcc

  2. elaborar cerveza instalar libomp

  3. preparar información gcc

    gcc: estable 10.2.0 (embotellado), CABEZA

    colección de compiladores GNU

  4. exportar OMP_NUM_THREADS=8

  5. crear hola.c

#include <stdio.h>
#include <omp.h>
int main(void){
    #pragma omp parallel 
    {
        printf("Hello World! \n");
    }

    return 0;
}
  1. gcc-10 -fopenmp hola.c -o hola
  2. Ejecutar: ./hola
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!

avatar de usuario
Javan usted

  1. Instala gcc usando brew.

    brew install gcc
    
  2. Verifique que gcc esté instalado.

    $which g++-7
    /usr/local/bin/g++-7
    
  3. Cambiar el compilador cmake cxx.

    cmake -DCMAKE_CXX_COMPILER=g++-7
    make
    

Quizás esto te ayude.

avatar de usuario
navins

Después de instalar gcc:

brew install gcc --without-multilib

y exportar RUTA:

export PATH=/usr/local/bin:$PATH

Es posible que deba exportar CC, lo que funciona para mí:

export CC=/usr/local/bin/gcc

Esto tal vez gcc-7, o lo que sea.

avatar de usuario
MLavoie

brew install cmake
brew install gcc --without-multilib
cmake -DCMAKE_CXX_COMPILER=g++-6 .. 
make -j 

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad