2010-08-16 2 views
1

Я создаю большой проект с make-файлом, который был первоначально построен с помощью icpc, и теперь мне нужно запустить его с g ++.using openmp с makefile и g ++

Когда он компилирует файл, использующий openmp, он использует флаг -c и не использует никаких библиотек, поэтому он становится серийным, а не openmp. Все примеры, которые я вижу, не используют этот флаг -c.

Есть ли способ скомпилировать без ссылки, но используя openmp?

редактировать:

Я использовал флаг -lgomp (и библиотека находится на пути к библиотеке):

г ++ -lgomp -c -w -O4 mainS.cpp
g ++: -lgomp: файл ввода-сообщения компоновщика не используется, потому что ссылка не выполнена

Редактировать: мой босс допустил несколько ошибок в коде, файле makefile и документации. Извините, что потратил впустую ваше время, по крайней мере, это было меньше, чем 5 часов, которые я трачу на это =/

ответ

3

Вы передаете флаг, чтобы включить OpenMP (IIRC это что-то вроде -fopenmp? Если у вас нет шансов, компилятор будет игнорировать OpenMP связанные примитивы и просто производить последовательный код.

Я не думаю, что -с (то есть, компилировать только, не нравится) не имеет ничего общего с вашей проблемой.

+0

Добавление флага -fopenmp, похоже, не сработало. – Jeremy

+0

@Jeremy, я предполагаю, что вы проверили, что ваш versio n g ++ построен с поддержкой OpenMP? –

+0

у него есть библиотека lgomp на пути, если это то, что вы имеете в виду. Кроме того, я не уверен, как проверить. – Jeremy

-1

Возможно documentation помогает ...

+0

Это, похоже, не сработало, есть ли способ сказать, скомпилирован ли он с поддержкой openmp, кроме как смотреть сверху? – Jeremy

+0

Возможно, вы можете сказать из сгенерированной сборки, но я ничего об этом не знаю. Кто-то может помочь вам там. Существует также проверка работоспособности: http://stackoverflow.com/questions/1302368/how-to-tell-if-openmp-works-in-my-c-program – rubenvb

Смежные вопросы