LoginSignup
1
4

More than 5 years have passed since last update.

MacでCython環境構築してたらOpenMPの設定で手間取った話

Posted at

ついに念願のMacBook Proを手にしました!
一通り使い勝手のよさを味わったので,こちらでもCythonの作業環境を整えてみることにしました。

まあWindowsじゃないんだしpip install cythonで一瞬だろうと思っていたら,OpenMPの設定で軽くつまずきました。

Cのコンパイラを最新版にして環境変数の設定をいじったところ動くようになったので,その時の対処方法を記事にしました。

環境

OS : macOS Mojave 10.14.1
Python version : 3.7.1
Cython version : 0.29.2

Cythonのインストール後実行するも,コンパイルエラー

前回の記事で扱ったコードを実行してみたいと思います。
(使用コードは,こちらにアップしてあります。)

冒頭で述べたように,Cython自体はpip install cythonの一瞬で入りました。
ただし,そこから.pyxをコンパイルしようとしたところ,うまくいきませんでした。

tatamiya$ python setup.py build_ext --inplace
(中略)
clang: error: unsupported option '-fopenmp'
error: command 'clang' failed with exit status 1

並列処理に使うOpenMPがどうやら入っていないか認識されていないようです。

Cコンパイラを最新のものにする

調べてみたところ,macOSデフォルトのCコンパイラはgcc, g++ではなくclangというのが使われていて,こちらにはOpenMPがサポートされていないそうです。
(参考:https://qiita.com/ligerbolt/items/6e27c882838fdcc1a490)

なので,コンパイラを最新のgcc, g++に指定しました。

最新版コンパイラのインストール

tatamiya$ brew install gcc

さらに,こちらのページに従ってシンボリックリンクを作成しました。

tatamiya$ ln -s /usr/local/bin/gcc-8 /usr/local/bin/gcc
tatamiya$ ln -s /usr/local/bin/g++-8 /usr/local/bin/g++

環境変数の設定

ただコンパイラをインストールしただけでは動かず,環境変数もいじる必要がありました。
理屈はよくわからないのですが,vimでbash_profileこちらのページのように追記したら動くようになりました:

~/.bash_profile
export CC=gcc
export CXX=gcc
export ARCHFLAGS="-arch x86_64"

実行結果

In [1]: %run -t simple_sum_cython.py                                            

IPython CPU timings (estimated):
  User   :       0.01 s.
  System :       0.00 s.
Wall time:       0.01 s.

ちなみに,おおよそ0.01~0.02sくらいでした。
今までのWindows PCでの実行時間が0.5秒程度だったことを考えると,少なくとも20倍は速くなってます。
さすがMacBook Pro!

参考サイト

https://shinaji.bitbucket.io/2014/09/03/Cython_OpenMP.html
https://qiita.com/wawawa/items/50c2c612b0937f28d92b
https://qiita.com/ligerbolt/items/6e27c882838fdcc1a490

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4