web-dev-qa-db-ja.com

Mac OS X 10.11でのOpenMPのインストール

OpenMPをMac OSX 10.11で実行するには、どうすればスクリプトを実行できますかvia via

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"

推奨される回避策はありますか?

24
WΔ_

Macでは、コマンドgccはClangへのシンボリックリンクです。したがって、gcc -fopenmp -o your_program your_program.cを呼び出すことで、実際にはClangを使用していることになります。これは、これまでOpenMPの組み込みサポートがありませんでした。

Clangの新しいバージョンは、 this post(セットアップ方法の説明もあります)に従ってOpenMPをサポートしています。

一方、まだgccを使用したい場合は、私のために働いたステップをガイドできます。

  1. Brewでgccをインストールします。使用したコマンドは動作するはずです:brew install gcc --without-multilib

    または、brewにgccがすでにインストールされていると表示されている場合は、brew reinstall gcc --without-multilibを試すことができます

    お気付きかもしれませんが、--without-multilibを指定しない場合、brewはOpenMPが機能しない可能性があることを警告します。

  2. 新しくインストールされたgccの場所を見つけます。 Brewは、コマンドラインツールによってインストールされたバージョンと競合しないように、gccにバージョン番号を追加します。シンボリックリンクはusr/local/binにあります。私の場合、usr/local/bin/gcc-5です。右クリックして「オリジナルを表示」を選択すると、gcc-5実行可能ファイルが/usr/local/Cellar/gcc/5.3.0/bin/gcc-5に表示されます(バージョン番号は異なる場合があります)。

  3. 次に、システムにそのことを伝える必要があります。コンパイラを呼び出すとき、bashは/usr/binではなくデフォルトで/usr/local/binを調べます。このディレクトリを$ PATHに追加する必要があります。これは次のコマンドで簡単に実行できます。

    PATH=/usr/local/bin:$PATH

  4. これで、OpenMPを有効にしてコンパイルできるようになります:

    gcc-5 -fopenmp -o your_program your_program.c

    注:gcc-5は私がインストールしたバージョンであり、異なる場合があります。

37
  • clang-ompをインストール

    brew install clang-omp
    
  • 必ずコマンドラインツールをXcodeしてください

    xcode-select --install
    
  • サンプルのopenmpコードの実行中に実際に1つのエラーが発生しました

    /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の間にある1つのスペースをファイルから削除するだけです

  • 次のコマンドを使用します

    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で動作し、2016年2月18日に作成されたbrewアップデートで

14
prakharjain

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 installs、あなたのものかもしれませんgcc- 7またはgcc-9

==> Pouring gcc-8.2.0.high_sierra.bottle.1.tar.gz ???? /usr/local/Cellar/gcc/8.2.0: 1,495 files, 344.8MB

それでおしまい!

  1. Brewを使用してgccをインストールします。

    brew install gcc
    
  2. Gccがインストールされていることを確認してください。

    $which g++-7
    /usr/local/bin/g++-7
    
  3. Cmake cxxコンパイラを変更します。

    cmake -DCMAKE_CXX_COMPILER=g++-7
    make
    

たぶんこれはあなたを助けるでしょう。

1
Javan You
brew install cmake
brew install gcc --without-multilib
cmake -DCMAKE_CXX_COMPILER=g++-6 .. 
make -j 
0
Adrian Leo

Gccのインストール後:

brew install gcc --without-multilib

エクスポートパス:

export PATH=/usr/local/bin:$PATH

CCをエクスポートする必要があるかもしれません。

export CC=/usr/local/bin/gcc

これはおそらくgcc-7などです。

0
navins