Установка 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
, но, к сожалению, это в конечном итоге вернуло следующее (после первой установки некоторых зависимостей):
The requested URL returned error: 404 Not Found
Error: Failed to download resource "mpfr--patch"
Любая рекомендуемая работа вокруг?
Ответы
Ответ 1
На 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. Это можно сделать с помощью команды:
PATH=/usr/local/bin:$PATH
-
Теперь вы можете скомпилировать с помощью OpenMP, используя:
gcc-5 -fopenmp -o your_program your_program.c
Примечание: gcc-5 - это версия, которую я установил, ваша может отличаться.
Ответ 2
-
установить clang-omp
brew install clang-omp
-
убедитесь, что вы используете инструмент командной строки xcode
xcode-select --install
-
У меня на самом деле была одна ошибка при запуске образца кода openmp
/usr/local/opt/libiomp/include/libiomp/omp.h:139:21: error: expected ';' after top level declarator extern void __ KAI_KMPC_CONVENTION kmp_set_stacksize_s (size_t);
-
Просто удалите одно пространство, которое присутствует между __ и KAI из файла
-
Теперь используйте команду
clang-omp -fopenmp helloopenmp.c
и запустите следующий код
#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());
}
-
Вы должны получить результат, похожий на этот
Hello from thread 3, nthreads 4
Hello from thread 2, nthreads 4
Hello from thread 0, nthreads 4
Hello from thread 1, nthreads 4
-
Работала над OS X 10.11.3 и с обновлением brew от 18 февраля 2015 г.
Ответ 3
brew install cmake
brew install gcc --without-multilib
cmake -DCMAKE_CXX_COMPILER=g++-6 ..
make -j
Ответ 4
После установки gcc:
brew install gcc --without-multilib
и экспортировать PATH:
export PATH=/usr/local/bin:$PATH
Вам может потребоваться экспортировать CC, который работает для меня:
export CC=/usr/local/bin/gcc
Это может быть gcc-7 или что-то еще.
Ответ 5
-
Установите gcc с помощью brew.
brew install gcc
-
Проверьте, установлен ли gcc.
$which g++-7
/usr/local/bin/g++-7
-
Измените компилятор cmake cxx.
cmake -DCMAKE_CXX_COMPILER=g++-7
make
Возможно, это поможет вам.