4

始める前に、この投稿に別のタイトルを付けさせてください。

インテル® MKL で CVXOPT をコンパイルする方法は?

CVXOPT の __init__.py をインテル® MKL でコンパイルするように変更するにはどうすればよいですか?

問題を説明しましょう。Enthought python は Ubuntu パッケージ マネージャーの python と比較して大幅な速度向上を提供するため、Enthought python で pystruct をインストールしようとしています。高速化は主に、インテル® MKL ライブラリーを使用してバックエンドの線形代数ライブラリーをコンパイルしたことによるものです。CVXOPT と pystruc は gnu python でうまく動作すると言わざるを得ません。

Enthought python (Canopy 以前の EPD) で CVXOpt をインストールしようとした人がいるかどうか疑問に思っていました。インテル® MKL でコンパイルする必要があります。

CVXOPT をビルドして Python でインポートしようとすると、次のエラーが発生します (リンカー エラーのようです)。

>>> import cvxopt
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "cvxopt/__init__.py", line 32, in <module>
    import cvxopt.base
ImportError: /home/kayhan/Enthought/Canopy_64bit/User/bin/../lib/libgfortran.so.3: version `GFORTRAN_1.4' not found (required by /usr/lib/liblapack.so.3gf)

しかし、デフォルトのpythonでインポートしようとすると、エラーは発生しません(テストも機能します)。

問題は、間違ったライブラリへのリンクにあると思います。また、MKL に関して CVXOPT を再コンパイルする必要がある場合に備えて、INTEL MKL も持っています (blas Enthought のバージョンが使用されているようです)。ドキュメンテーションには、Enthough で動作させる方法についての説明が見つかりませんでした。アドバイスをお願いします。

更新:前述したように、CVXOPT は gnu python でコンパイルおよび実行されます。私は次のトリックを行いましたが、これはあまり良い考えではありませんが、うまくいきます:

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libfreetype.so:/usr/lib/x86_64-linux-gnu/libgfortran.so.3 python

この投稿から学んだこと: ( libgfortran: version `GFORTRAN_1.4' not found )

さて、問題は、これを行うためのクリーンな方法は何ですか? 1 つのパッケージに対してのみライブラリをプリロードするにはどうすればよいですか。またはインテル® MKL で CVXOPT をコンパイルし、ライブラリーをプリロードする必要はありませんか?

ありがとう、
ケイハン

4

0 に答える 0