LINUX.ORG.RU

clang линкует libgomp но не использует доп. потоки

 , ,


0

2

Так clang (3.4, 3.5) умеет OpenMP через libgomp или нет? Добавляю -fopenmp. Всё успешно собирается, хотя _OPENMP и не определено. Запускаю, omp_get_max_threads() реагирует на изменения OMP_NUM_THREADS, но используется всё равно только один поток. Такое впечатление, что clang просто проигнорировал все pragma, но слинковал omp_ функции к libgomp. Но кому такое нужно?

★★★★★

Что говорит

#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());
}

Так clang (3.4, 3.5) умеет OpenMP через libgomp или нет?

А почему clang должен уметь OpenMP через либу GCC? Тебе нужна родная либа - http://clang-omp.github.io

alex-w ★★★★★
()
Последнее исправление: alex-w (всего исправлений: 1)
Ответ на: комментарий от alex-w

Сейчас на другой машине выдаёт стабильно:

Hello from thread 0, nthreads 1

А почему clang должен уметь OpenMP через либу GCC? Тебе нужна родная либа - http://clang-omp.github.io

Так ведь для самого было неожиданностью, что на -fopenmp clang молча взял libgomp. А потом - облом, толку нет.

А чего интел считается родной? Я так понял, что статус так туманен из-за того, что сегодняшняя реализация завязана на интеловской libiomp. А она не такая свободная, как нужно.

gag ★★★★★
() автор топика
Ответ на: комментарий от gag

Сейчас на другой машине

Та была интел, эта - амд.

gag ★★★★★
() автор топика
Ответ на: комментарий от alex-w

А... проглядел: я использовал omp_get_max_threads(), а тут - omp_get_num_threads().

gag ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.