Поддержка OpenMP в Xcode 5 и новее

У меня есть проприетарная библиотека (> 150 000 строк) кода C ++ квантовой механики, которая использует OpenMP для параллелизации. Этот код использовался для хорошей компиляции с Xcode 4.6 и его «настоящим компилятором GCC, но компилятор LLVM, поставляемый с Xcode 5, похоже, не поддерживает OpenMP. Мой код разработан на Mac, но его необходимо переносить на оборудование сторонних производителей, например, на суперкомпьютеры с массовым параллелизмом, поэтому переписывание кода не вариант. Кто-нибудь знает подходящий компилятор, который можно использовать? Большое спасибо за любую помощь.


person user2851558    schedule 06.10.2013    source источник
comment
Что вы имеете в виду под «похоже, не поддерживает OpenMP»? Неужели это действительно только кажется таким или вы получаете сообщения об ошибках, которые можно было бы здесь разместить? И если Xcode 5 действительно не работает с проектом, есть ли причины, по которым вы не можете продолжать использовать Xcode 4.6?   -  person LearnCocos2D    schedule 06.10.2013
comment
Я не могу найти в настройках проекта опции «включить поддержку openMP», которая присутствовала в более ранних версиях Xcode. Я получаю предупреждение: /Users/richard/Develop/QMLib/QMLib.xcodeproj Недопустимый компилятор C / C ++ в целевом QMLib: com.apple.compilers.llvmgcc42   -  person user2851558    schedule 13.10.2013
comment
Думаю, у меня такая же проблема с тех пор, как я обновился до Lion Mavericks и XCode 5. Я использовал eclipse с проектами C, которые отлично компилировались под Mountain Lion и XCode 4.6. Теперь, когда я компилирую, у меня появляется ошибка «фатальная ошибка: файл omp.h не найден». Все еще ищу решение. Может быть, загляните на hpc.sourceforge.net   -  person Aurélien    schedule 24.10.2013


Ответы (3)


Я вернулся к своему комментарию, поскольку я тестировал hpc.sourceforge.net, и он работает как шарм для меня.

Просто распакуйте архив, как описано:

sudo tar -xvf gcc-4.8-bin.tar -C /

Обновите свой .profile, чтобы по умолчанию использовать скомпилированную версию gcc для hpc, если хотите.

Скомпилируйте вашу программу с опцией -fopenmp, затем свяжите ее с опцией -lgomp.

person Aurélien    schedule 27.10.2013

«Кто-нибудь знает подходящий компилятор, который можно использовать?»

Компиляторы Intel для MacOS поддерживают OpenMP, как и на других платформах. http://software.intel.com/en-us/intel-software-development-products-for-mac-os-x

Конечно, они стоят денег, но они могут того стоить.

(Полное раскрытие: я работаю в Intel над средой выполнения OpenMP, используемой компилятором)

person Jim Cownie    schedule 07.10.2013
comment
Спасибо. Я попробую. - person user2851558; 13.10.2013

См. Настройка Clang + OpenMP в Xcode. В основном это следующие шаги:

  1. Установите Homebrew.
  2. Установите llvm с brew install llvm.
  3. «Настройки сборки», а затем «Редактор» »« Добавить настройку сборки »» «Добавить пользовательскую настройку» с ключом CC и значением /usr/local/opt/llvm/bin/clang.
  4. Найдите «Включить модули» и выключите это.
  5. Добавьте /usr/local/opt/llvm/lib в «Пути поиска в библиотеке».
  6. Добавьте /usr/local/opt/llvm/lib/clang/7.0.1/include в «Пути поиска заголовков». (Номер версии может отличаться в зависимости от вашей установки.)
  7. Добавьте -fopenmp флаг компиляции в «Другие флаги C».
  8. Отключите параметр «Включить функцию индексации при построении».
  9. Добавьте /usr/local/opt/llvm/lib/libiomp5.dylib в «Фазы сборки» »« Свяжите двоичный файл с библиотеками ».
person Rob    schedule 09.03.2019