Mon gcc se compile bien, mais clang échoue avec le message suivant:
clang -fopenmp=libomp -o main main.c
main.c:5:10: fatal error: 'omp.h' file not found
J'ai aussi installé le paquet libomp5
et changé l'indicateur en -fopenmp=libomp5
, bien que cela n'ait pas aidé non plus:
clang -fopenmp=libomp5 -o main main.c
clang: error: unsupported argument 'libomp5' to option 'fopenmp='
clang: error: unsupported argument 'libomp5' to option 'fopenmp='
ces les recommandations n'ont pas fonctionné.
Je vous serais reconnaissant de nous donner des conseils sur l’installation des packages spécifiques nécessaires à la 16.04 et sur la transmission des indicateurs correspondants.
J'ai eu le même problème.
Sudo apt install libomp-dev
Corrigé avec Ubuntu 16.10
//test.c
#include "omp.h"
#include <stdio.h>
int main(void) {
#pragma omp parallel
printf("thread %d\n", omp_get_thread_num());
}
Ensuite
clang test.c -fopenmp
./a.out
thread 0
thread 5
thread 2
thread 1
thread 7
thread 3
thread 4
thread 6
Également
clant-3.9 test.c -fopenmp
travaux.
GCC et Clang utilisent différentes bibliothèques d'exécution OpenMP: libgomp et libomp respectivly.
Le runtime de Clang est le runtime LLVM OpenMP qui est basé sur le runtime Intel OpenMP (qui est open source). https://www.openmprtl.org/
Sur mon système, GCC a installé omp.h
à
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h
et libomp-dev
insalled omp.h
à
/usr/include/omp.h
Ce sont des fichiers d'en-tête différents qui incluent différentes définitions de fonction. Vous pouvez utiliser l'un ou l'autre fichier d'en-tête, par exemple. omp_get_wtime()
mais en général, je pense qu'il est probablement préférable d'utiliser le fichier d'en-tête qui correspond au moteur d'exécution lié.
Il semble que le fichier omp.h n'existe pas dans votre système CHEMIN. essayez d’abord de localiser le fichier omp.h si vous ne savez pas où il se trouve:
find / -name 'omp.h' -type f
Et puis exécutez cette commande pour compiler votre code:
clang -o main main.c -I/path/to/omp/folder