現在、Cython コンパイラを使用して、次のように setup.py スクリプトで OpenMP を必要とする C 言語プログラムをラップしています (Cython スクリプト「test.pyx」は「test.h」モジュールをインポートします)。
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [
Extension("wrap_test",
["test.pyx"],
libraries=["gomp"],
extra_compile_args=["-fopenmp"])]
setup(
name="wrap_test",
cmdclass={"build_ext": build_ext},
ext_modules=ext_modules)
これはgcc用です。では、インテル・コンパイラー (icc) の対応物は何ですか? 誰も答えを知っていますか?
環境変数 CC を icc に設定して「python setup.py build_ext --inplace」と入力すると、いくつかのエラー メッセージが表示され、(オブジェクト ファイルをリンクするために) icc の代わりに gcc が自動的に呼び出されます。これにより、共有オブジェクト「wrap_test.so」が生成されます。これは、いくつかの間違いにより、他の Python スクリプトにインポートできません。したがって、setup.py スクリプトで使用するコンパイラ、ライブラリ、およびコンパイル オプションの適切なセットを Cython に指示する必要があると思います。