¿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
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
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.
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.
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).
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
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
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
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
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:
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
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