Como compilar o programa OpenMP usando o clang?

6

Meu gcc é bem compilado, mas o clang falha com a seguinte mensagem:

clang -fopenmp=libomp -o main main.c
main.c:5:10: fatal error: 'omp.h' file not found

Eu também instalei o libomp5 package e alterei o flag para -fopenmp=libomp5 , embora também não tenha ajudado:

clang -fopenmp=libomp5 -o main main.c
clang: error: unsupported argument 'libomp5' to option 'fopenmp='
clang: error: unsupported argument 'libomp5' to option 'fopenmp='

estas recomendações não funcionaram.

Ficaria grato por sugestões sobre a instalação de pacotes específicos 16.04 necessários e passando bandeiras correspondentes.

    
por Bulat M. 06.04.2017 / 10:36

2 respostas

10

Eu tive o mesmo problema.

sudo apt install libomp-dev

Corrigido com o 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());
}

Então

clang test.c -fopenmp
./a.out
thread 0
thread 5
thread 2
thread 1
thread 7
thread 3
thread 4
thread 6

clant-3.9 test.c -fopenmp

funciona.

O GCC e o Clang usam diferentes bibliotecas de tempo de execução do OpenMP: libgomp e libomp respectivamente.

O tempo de execução do Clang é o tempo de execução LLVM OpenMP que, por sua vez, é baseado no tempo de execução do Intel OpenMP (que é de código aberto). link

No meu sistema, o GCC instalou omp.h em

/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h

e libomp-dev insalled omp.h at

/usr/include/omp.h

Estes são arquivos de cabeçalho diferentes que incluem diferentes definições de função. Pode ser correto usar um arquivo de cabeçalho para, e. omp_get_wtime() mas, em geral, acho que provavelmente é melhor usar o arquivo de cabeçalho que corresponde ao tempo de execução vinculado a.

    
por Z boson 12.04.2017 / 15:59
3

Parece que o arquivo omp.h não existe no seu sistema PATH . em primeiro lugar tente localizar o arquivo omp.h se você não souber onde está:

find / -name 'omp.h' -type f

E, em seguida, execute este comando para compilar seu código:

clang -o main main.c -I/path/to/omp/folder
    
por Ghasem Pahlavan 11.04.2017 / 09:59