Установка 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
    

Возможно, это поможет вам.