Как скомпилировать программу OpenMP с помощью clang?

Мой gcc компилируется, но clang терпит неудачу со следующим сообщением:

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

Я также установил пакет libomp5 и изменил флаг на -fopenmp=libomp5, хотя это тоже не помогло: [ ! d1] clang -fopenmp=libomp5 -o main main.c clang: error: unsupported argument 'libomp5' to option 'fopenmp=' clang: error: unsupported argument 'libomp5' to option 'fopenmp='

эти рекомендации не сработали.

Буду признателен за установку необходимых 16.04 конкретных пакетов и передачу соответствующих флагов.

6
задан 14 April 2017 в 09:44

10 ответов

У меня была та же проблема.

sudo apt install libomp-dev

Исправлено это с 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());
}

Тогда

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

Также

работает.

GCC и Clang используют разные библиотеки времени исполнения OpenMP: libgomp и libomp уважительно.

Время выполнения Clang - это LLVM OpenMP runtime который, в свою очередь, основан на времени выполнения Intel OpenMP (который является открытым исходным кодом). https://www.openmprtl.org/

В моей системе GCC установлен omp.h в

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

и libomp-dev заблокирован omp.h в

[ f6]

Это разные файлы заголовков, которые включают в себя различные определения функций. Может быть, можно использовать либо заголовочный файл, например, omp_get_wtime(), но в целом я думаю, что, вероятно, лучше использовать заголовочный файл, соответствующий текущей среде выполнения.

10
ответ дан 22 May 2018 в 23:56
  • 1
    Работал на ванили 16.04 с запасом в репозиториях. – Bulat M. 14 April 2017 в 08:43
  • 2
    Я только что установил Ubuntu 17.04, который по умолчанию относится к Clang 4.0. Мне все еще пришлось использовать sudo apt install libomp.dev. – Z boson 21 April 2017 в 10:05

У меня была та же проблема.

sudo apt install libomp-dev

Исправлено это с 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()); }

Тогда

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

Также

работает.

GCC и Clang используют разные библиотеки времени исполнения OpenMP: libgomp и libomp уважительно.

Время выполнения Clang - это LLVM OpenMP runtime который, в свою очередь, основан на времени выполнения Intel OpenMP (который является открытым исходным кодом). https://www.openmprtl.org/

В моей системе GCC установлен omp.h в

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

и libomp-dev заблокирован omp.h в

/usr/include/omp.h

Это разные файлы заголовков, которые включают в себя различные определения функций. Может быть, можно использовать либо заголовочный файл, например, omp_get_wtime(), но в целом я думаю, что, вероятно, лучше использовать заголовочный файл, соответствующий текущей среде выполнения.

10
ответ дан 18 July 2018 в 15:27

У меня была та же проблема.

sudo apt install libomp-dev

Исправлено это с 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()); }

Тогда

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

Также

работает.

GCC и Clang используют разные библиотеки времени исполнения OpenMP: libgomp и libomp уважительно.

Время выполнения Clang - это LLVM OpenMP runtime который, в свою очередь, основан на времени выполнения Intel OpenMP (который является открытым исходным кодом). https://www.openmprtl.org/

В моей системе GCC установлен omp.h в

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

и libomp-dev заблокирован omp.h в

/usr/include/omp.h

Это разные файлы заголовков, которые включают в себя различные определения функций. Может быть, можно использовать либо заголовочный файл, например, omp_get_wtime(), но в целом я думаю, что, вероятно, лучше использовать заголовочный файл, соответствующий текущей среде выполнения.

10
ответ дан 24 July 2018 в 20:38

У меня была та же проблема.

sudo apt install libomp-dev

Исправлено это с 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()); }

Тогда

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

Также

работает.

GCC и Clang используют разные библиотеки времени исполнения OpenMP: libgomp и libomp уважительно.

Время выполнения Clang - это LLVM OpenMP runtime который, в свою очередь, основан на времени выполнения Intel OpenMP (который является открытым исходным кодом). https://www.openmprtl.org/

В моей системе GCC установлен omp.h в

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

и libomp-dev заблокирован omp.h в

/usr/include/omp.h

Это разные файлы заголовков, которые включают в себя различные определения функций. Может быть, можно использовать либо заголовочный файл, например, omp_get_wtime(), но в целом я думаю, что, вероятно, лучше использовать заголовочный файл, соответствующий текущей среде выполнения.

10
ответ дан 31 July 2018 в 11:17

У меня была та же проблема.

sudo apt install libomp-dev

Исправлено это с 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()); }

Тогда

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

Также

работает.

GCC и Clang используют разные библиотеки времени исполнения OpenMP: libgomp и libomp уважительно.

Время выполнения Clang - это LLVM OpenMP runtime который, в свою очередь, основан на времени выполнения Intel OpenMP (который является открытым исходным кодом). https://www.openmprtl.org/

В моей системе GCC установлен omp.h в

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

и libomp-dev заблокирован omp.h в

/usr/include/omp.h

Это разные файлы заголовков, которые включают в себя различные определения функций. Может быть, можно использовать либо заголовочный файл, например, omp_get_wtime(), но в целом я думаю, что, вероятно, лучше использовать заголовочный файл, соответствующий текущей среде выполнения.

10
ответ дан 31 July 2018 в 23:40

Кажется, файл omp.h не существует в вашей системе PATH. попробуйте найти файл omp.h, если вы не знаете, где он находится:

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

И затем запустите эту команду для компиляции вашего кода:

clang -o main main.c -I/path/to/omp/folder
3
ответ дан 22 May 2018 в 23:56
  • 1
    Это не устраняет проблему. Он все еще не может найти omp.h. – Z boson 12 April 2017 в 16:48
  • 2
    Вы нашли в вашей системе omp.h ? можете ли вы добавить вывод этих команд на свой вопрос? – Ghasem Pahlavan 13 April 2017 в 10:48
  • 3
    *.h являются заголовочными файлами, почему он хочет добавить их в свой путь? они должны быть в /usr/include, например. – Ravexina 13 April 2017 в 14:15
  • 4
    Спасибо, Ghasem, установка libomp-dev на 16.04 решена. – Bulat M. 14 April 2017 в 08:42

Кажется, файл omp.h не существует в вашей системе PATH. попробуйте найти файл omp.h, если вы не знаете, где он находится:

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

И затем запустите эту команду для компиляции вашего кода:

clang -o main main.c -I/path/to/omp/folder
3
ответ дан 18 July 2018 в 15:27

Кажется, файл omp.h не существует в вашей системе PATH. попробуйте найти файл omp.h, если вы не знаете, где он находится:

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

И затем запустите эту команду для компиляции вашего кода:

clang -o main main.c -I/path/to/omp/folder
3
ответ дан 24 July 2018 в 20:38
  • 1
    Это не устраняет проблему. Он все еще не может найти omp.h. – Z boson 12 April 2017 в 16:48
  • 2
    Вы нашли в вашей системе omp.h ? можете ли вы добавить вывод этих команд на свой вопрос? – Ghasem Pahlavan 13 April 2017 в 10:48
  • 3
    *.h являются заголовочными файлами, почему он хочет добавить их в свой путь? они должны быть в /usr/include, например. – Ravexina 13 April 2017 в 14:15
  • 4
    Спасибо, Ghasem, установка libomp-dev на 16.04 решена. – Bulat M. 14 April 2017 в 08:42

Кажется, файл omp.h не существует в вашей системе PATH. попробуйте найти файл omp.h, если вы не знаете, где он находится:

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

И затем запустите эту команду для компиляции вашего кода:

clang -o main main.c -I/path/to/omp/folder
3
ответ дан 31 July 2018 в 11:17
  • 1
    Это не устраняет проблему. Он все еще не может найти omp.h. – Z boson 12 April 2017 в 16:48
  • 2
    Вы нашли в вашей системе omp.h ? можете ли вы добавить вывод этих команд на свой вопрос? – Ghasem Pahlavan 13 April 2017 в 10:48
  • 3
    *.h являются заголовочными файлами, почему он хочет добавить их в свой путь? они должны быть в /usr/include, например. – Ravexina 13 April 2017 в 14:15
  • 4
    Спасибо, Ghasem, установка libomp-dev на 16.04 решена. – Bulat M. 14 April 2017 в 08:42

Кажется, файл omp.h не существует в вашей системе PATH. попробуйте найти файл omp.h, если вы не знаете, где он находится:

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

И затем запустите эту команду для компиляции вашего кода:

clang -o main main.c -I/path/to/omp/folder
3
ответ дан 31 July 2018 в 23:40
  • 1
    Это не устраняет проблему. Он все еще не может найти omp.h. – Z boson 12 April 2017 в 16:48
  • 2
    Вы нашли в вашей системе omp.h ? можете ли вы добавить вывод этих команд на свой вопрос? – Ghasem Pahlavan 13 April 2017 в 10:48
  • 3
    *.h являются заголовочными файлами, почему он хочет добавить их в свой путь? они должны быть в /usr/include, например. – Ravexina 13 April 2017 в 14:15
  • 4
    Спасибо, Ghasem, установка libomp-dev на 16.04 решена. – Bulat M. 14 April 2017 в 08:42

Другие вопросы по тегам:

Похожие вопросы: