- Использование OpenMP с C ++ 11 в Mac OS
- Решение
- Другие решения
- Русские Блоги
- Установите OpenMP под Mac и завершите компиляцию
- Добавлена среда OpenMP (Mac)
- Ошибка установки
- Compiler
- Установка OpenMP в Mac OS X 10.11
- Установка OpenMP на Mac OS X 10.11
- 6 ответов
- macOS High Sierra Версия 10.13.6 (17G65)
- 1. Установите gcc
- 2. Компиляция
- How can I install openMP on my new MacBook Pro (with Mac OS Catalina)?
- 3 Answers 3
- GNU gcc (currently at version 9)
Использование OpenMP с C ++ 11 в Mac OS
Я пытаюсь использовать некоторые функции многопоточности OpenMP в моем коде C ++ 11, например:
Когда я пытаюсь скомпилировать с помощью:
Я получаю ошибку ниже:
В качестве альтернативы я попытался с помощью компиляции:
Но это дает точно такую же ошибку.
Был бы очень признателен, если бы вы могли посоветовать, как я могу скомпилировать код C ++ 11, который имеет функции OpenMP в Mac OS 10.12. Другие вопросы о постах здесь и в других местах объясняют компиляцию кода C для OpenMP, однако я не смог найти ничего для C ++ 11.
При попытке установить libiomp я получаю сообщение об ошибке:
Если я использую g ++ — 6, основываясь на посте Марка Сетчелла, приведенного ниже, он работает нормально, спасибо, однако я получаю следующие предупреждения, буду признателен за любые предложения о том, как их избежать:
Решение
Обновленный ответ
Поскольку мой оригинальный ответ ниже, ситуация улучшилась, и вы можете легко использовать OpenMP с clang++ компилятор — ураааай!
Для этого сначала используйте доморощенного установить brew install libomp :
Тогда при использовании clang++ используйте эти флаги:
Оригинальный ответ
Если вы хотите скомпилировать код C ++ 11 OpenMP на OSX, самый простой способ — это использовать gcc который вы можете установить через homebrew ,
Сначала проверьте доступные варианты:
Пример вывода
Итак, я подозреваю, что вы хотите:
После того, как вы установили его, вы должны убедиться, что вы используете homebrew версия, а не та, которую поставляет Apple. Вы должны знать, что homebrew устанавливает все в /usr/local/bin и что компилятор C ++ g++-6 , Итак, вам нужно либо скомпилировать:
или настройте свой PATH в своем профиле входа в систему:
тогда вы можете просто сделать:
Обратите внимание, что если вы выберете второй вариант выше (то есть export PATH=. вариант), вам также нужно будет также ввести export введите команду в текущем сеансе один раз, чтобы активировать ее, или выйдите из системы и снова войдите в систему, поскольку команды вашего профиля выполняются только при входе в систему.
AFAIK, нет необходимости явно устанавливать libiomp — не уверен, почему ты это сделал.
Другие решения
Clang, который поставляется с XCode, не поддерживает OpenMP, однако тот из llvm.org поддерживает. Есть инструкция по установке .
По умолчанию в OSX GCC является просто символической ссылкой на Clang (согласно комментарию к Компиляция программ OpenMP с компилятором gcc на OS X Yosemite ). Вы можете установить настоящий GCC из Homebrew, который определенно поддерживает OpenMP.
Источник
Русские Блоги
Установите OpenMP под Mac и завершите компиляцию
Установка OpenMP на Mac связана с историей некоторых компиляторов. . .
Добавлена среда OpenMP (Mac)
Ошибка установки
Ссылка на ошибку установки, Используйте указанные выше методы для поиска нерешенных проблем;
fatal: unable to access ‘https://github.com/Homebrew/homebrew-core/‘: LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
Error: Fetching /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core failed!
Error: Could not link:
/usr/local/share/man/man1/brew.1
Please delete these paths and run brew update .
Error: Could not link:
/usr/local/share/doc/homebrew
fatal: unable to access ‘https://github.com/Homebrew/homebrew-core/‘: LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
Error: Failure while executing: git clone https://github.com/Homebrew/homebrew-core /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core –depth=1
Error: Failure while executing: /usr/local/bin/brew tap homebrew/core
Error: No available formula with the name “clang-omp”
==> Searching for a previously deleted formula (in the last month)…
Warning: homebrew/core is shallow clone. To get complete history run:
git -C “$(brew –repo homebrew/core)” fetch –unshallow
Error: No previously deleted formula found.
==> Searching for similarly named formulae…
==> Searching local taps…
Error: No similarly named formulae found.
==> Searching taps…
==> Searching taps on GitHub…
Error: No formulae found in taps.
On Apple Clang, you need to add several options to use OpenMP’s front end
instead of the standard driver option. This usually looks like
-Xpreprocessor -fopenmp -lomp
You might need to make sure the lib and include directories are discoverable
if /usr/local is not searched:
-L/usr/local/opt/libomp/lib -I/usr/local/opt/libomp/include
For CMake, the following flags will cause the OpenMP::OpenMP_CXX target to
be set up correctly:
-DOpenMP_CXX_FLAGS=”-Xpreprocessor -fopenmp -I/usr/local/opt/libomp/include”
-DOpenMP_CXX_LIB_NAMES=”omp”
-DOpenMP_omp_LIBRARY=/usr/local/opt/libomp/lib/libomp.dylib
Затем я обнаружил, что libomp уже находится в моей библиотеке lib, позиционируя ее:/usr/local/opt/libomp;
Следующее, что нужно сделать, — это выполнить терминал с файлом .c, который вы написали, и ввести следующую команду для компиляции;
Вышеупомянутая команда свяжет файл заголовка и динамическую библиотеку. Мы думаем, как добавить эти два пути в переменную окружения. Записывать путь каждый раз сложно;
Compiler
Поскольку мы хотим использовать clang для компиляции, описанный выше процесс компиляции должен быть записан как;
Окончательное решение, GCC, установленный Homebrew, хранится в / usr / local / bin / gcc-5 (GCC версии 5.2.0). В настоящее время в системе все еще есть / usr / bin / gcc, но этот GCC является ссылкой на clang. Поэтому при компиляции вам нужно скомпилировать что-то вроде gcc-5 xxx.c -o xxx -fopenmp вместо использования gcc по умолчанию.
Итак, пока мы используем следующий метод компиляции:
Это действительно был круг, это оказалось исторической проблемой между llvm и gcc;
Приложение 1: Процедура испытаний
Приложение 2: Продолжайте искать способ установить clang-omp на Xcode, но он не прошел проверку, используйте его с осторожностью;
Источник
Установка OpenMP в Mac OS X 10.11
Как я могу запустить OpenMP для Mac OSX 10.11, чтобы я мог выполнять сценарии через терминал?
Я установил OpenMP: brew install clang-omp .
Когда я запускаю, например: gcc -fopenmp -o Parallel.b Parallel.c , возвращается следующее выражение: fatal error: ‘omp.h’ file not found
Я также попытался: brew install gcc —without-multilib , но, к сожалению, это в конечном итоге вернуло следующее (после первой установки некоторых зависимостей):
Любая рекомендуемая работа вокруг?
На mac, команда gcc является символической связью с Clang. Таким образом, вызывая gcc -fopenmp -o your_program your_program.c , вы фактически используете Clang, который до сих пор не имел встроенной поддержки OpenMP.
В новых версиях Clang есть поддержка OpenMP в соответствии с этот пост (где вы также можете найти инструкции по его настройке).
С другой стороны, если вы все еще хотите использовать gcc, я могу помочь вам выполнить шаги, которые сработали для меня.
Установите gcc с помощью brew. Команда, которую вы использовали, должна работать (это сделало для меня час назад): brew install gcc —without-multilib
В качестве альтернативы, если brew говорит, что у вас уже установлена gcc, вы можете попробовать brew reinstall gcc —without-multilib
Как вы могли заметить, если вы не укажете —without-multilib brew, вы предупреждаете, что OpenMP может не работать.
Найдите местоположение вновь установленного gcc. Обратите внимание, что brew добавляет номер версии в gcc, чтобы он не конфликтует с тем, который установлен средствами командной строки. Вы найдете символическую ссылку в usr/local/bin . В моем случае это usr/local/bin/gcc-5 . Если вы щелкните правой кнопкой мыши и выберите «Показать оригинал», он должен показать исполняемый файл gcc-5 в /usr/local/Cellar/gcc/5.3.0/bin/gcc-5 (номера версий могут отличаться).
Теперь вам нужно сообщить об этом вашей системе. Обратите внимание, что при вызове компилятора ваш bash будет выглядеть по /usr/bin по умолчанию, а не в /usr/local/bin . Вам нужно добавить этот каталог в $PATH. Это можно сделать с помощью команды:
Теперь вы можете скомпилировать с помощью OpenMP, используя:
gcc-5 -fopenmp -o your_program your_program.c
Примечание: gcc-5 — это версия, которую я установил, ваша может отличаться.
Источник
Установка OpenMP на Mac OS X 10.11
Как я могу заставить OpenMP работать на Mac OSX 10.11, чтобы я мог выполнять скрипты через terminal ?
Я установил OpenMP: brew install clang-omp .
Когда я запускаю, например: gcc -fopenmp -o Parallel.b Parallel.c , возвращается следующее выражение: fatal error: ‘omp.h’ file not found
Я также пробовал: brew install gcc —without-multilib но, к сожалению, это в конечном итоге вернуло следующее (после первой установки некоторых зависимостей):
Какие-нибудь рекомендуемые обходные пути?
6 ответов
Я пытаюсь запустить приложение JAVA на моем MAC OS X 10.11 (El Capitan). Я использовал эту ссылку , чтобы установить JAVA_HOME на моем MAC OS X 10.11. Я могу выполнить следующие команды: java-версия , которая java Однако когда я захожу в приложение Terminal на MAC и набираю echo $JAVA_HOME,, я.
Я использую сервер PDFTK на OSX pre 10.11 уже более года без каких-либо проблем с запуском команд в командной строке. После установки бета-версии OSX 10.11 я больше не могу запускать какие-либо команды сервера PDFTK в командной строке. Он не выдает никаких ошибок,все команды, которые я пытаюсь.
На Mac команда gcc является символической ссылкой на Clang. Таким образом, вызывая gcc -fopenmp -o your_program your_program.c , вы фактически используете Clang, который до сих пор не имел встроенной поддержки для OpenMP.
В более новых версиях Clang есть поддержка OpenMP в соответствии с этим сообщением (где вы также можете найти инструкции по его настройке).
С другой стороны, если вы все еще хотите использовать gcc, я могу провести вас по шагам, которые сработали для меня.
Установите gcc с помощью brew. Команда, которую вы использовали, должна работать: brew install gcc —without-multilib
В качестве альтернативы, если brew говорит, что у вас уже установлен gcc, вы можете попробовать brew reinstall gcc —without-multilib
Как вы, возможно, заметили, если вы не укажете —without-multilib , brew предупредит вас, что OpenMP может не сработать.
Найдите местоположение недавно установленного gcc. Brew добавляет номер версии к gcc, чтобы он не конфликтовал с версией, установленной средствами командной строки. Вы найдете символическую ссылку в usr/local/bin . В моем случае это usr/local/bin/gcc-5 . Если вы щелкнете правой кнопкой мыши и выберете «Show original», он должен показать исполняемый файл gcc-5 в /usr/local/Cellar/gcc/5.3.0/bin/gcc-5 (номера версий могут отличаться).
Теперь вам нужно рассказать об этом своей системе. При вызове компилятора ваш bash по умолчанию будет смотреть в /usr/bin , а не в /usr/local/bin . Вам нужно добавить этот каталог в свой $PATH . Это можно легко сделать с помощью команды:
Теперь вы должны иметь возможность компилировать с включенным OpenMP, используя:
gcc-5 -fopenmp -o your_program your_program.c
Примечание: gcc-5-это версия, которую я установил, ваша может отличаться.
убедитесь, что вы xcode инструмент командной строки
На самом деле у меня была одна ошибка при запуске примера кода openmp
Просто удалите из файла один пробел между __ и KAI
Теперь используйте команду
и выполните следующий код
Вы должны получить результат, подобный этому
Работал на OS X 10.11.3 и с обновлением brew от 18 февраля 2016 года
Я пытаюсь запустить Scilab 5.5.2 на Mac OS X после обновления до версии 10.11, и появляется предупреждающая обратная связь с этим текстом: эта версия Scilab, вероятно, потерпит неудачу в этой системе (10.11): Scilab требует 10.6.5 (Snow Leopard) или более новой системы. Я пытаюсь переустановить.
Сегодня я установил Apache ant на свой MAC OS X 10.11, используя Homebrew. Я увидел следующее предупреждение после запуска команды brew install ant на MAC terminal : — Предупреждение: ant-1.9.6 уже установлен,он просто не связан. Затем я попытался проверить, работает ли ant правильно или нет.
macOS High Sierra Версия 10.13.6 (17G65)
1. Установите gcc
brew reinstall gcc —without-multilib
2. Компиляция
gcc-8 -Wall -fopenmp your-parallel-program.c
Обратите внимание , что gcc-8 смотрите, как устанавливается версия brew, ваша может быть gcc-7 или gcc-9
Источник
How can I install openMP on my new MacBook Pro (with Mac OS Catalina)?
I installed Xcode (and also the command line tools) but terminal says (when I’m compiling):
I tried to install openmp via brew but people say that it’s not available anymore on homebrew, they suggest to try
But I get the same error. I tried also in the boneyard
but the repository doesn’t exist anymore.
Could you help me? I just need to learn openMP, I don’t think that is so difficult to install.
3 Answers 3
To build with OpenMP support, you need to make sure you’re not invoking Apple’s clang from Xcode. Even if you install llvm or gcc via brew, you should try gcc -v and clang -v in your terminal session. Both likely invoke Apple’s version.
You can use GNU gcc or LLVM; both are available via brew. If you use LLVM, you’ll also need to install libomp .
GNU gcc (currently at version 9)
Note that you invoke this version of gcc explicitly by suffixing gcc with a — and the major version number, e.g.: gcc-9
Brew installs LLVM as keg-only so that it doesn’t conflict with Apple’s version. You’ll therefore need to make sure you invoke the right clang . You’ll also need to specify where the libomp library is located.
To install the OpenMP runtime components/libraries.
Then, when compiling:
- use -Xpreprocessor -fopenmp in place of -fopenmp in the compile step ( -c option)
- add -lomp to the linking step
Note that the above page also mention that CMake 3.12 or later will automatically find the right way of adding OpenMP on MacOS:
Note: I didn’t test any of this but it sounds relatively sane
brew install gcc
then type gcc in your terminal and hit the tab button twice.
you should see multiple gcc versions e.g. gcc gcc-10
then find out which one is from Homebrew e.g. type gcc-10 —version in the terminal should output something like this:
gcc-10 (Homebrew GCC 10.2.0_3) 10.2.0 Copyright (C) 2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Источник