4

前述の理由により、numpy でラップされたものではなく、Python で LAPACK の dgesvd および zgesvd メソッドを使用する必要があります。

誰かが、f2py を使用して独自の python パッケージを作成できると指摘しました。問題は、lapack の dgesdd が​​ dbdsqr、dgelqf、およびいくつかの BLAS ルーチンなどの他のメソッドを呼び出すことです。

lapack ライブラリ全体を再コンパイルせずに dgesvd python モジュールを作成する適切な方法は何でしょうか?

どうもありがとうミーシャ

4

1 に答える 1

5

LAPACK ライブラリ全体をラップする必要はなく、必要な LAPACK ルーチンだけをラップする必要があります。ルーチンは、その下で Fortran 呼び出しに接続されています。dgesvd に似たソルバーの 1 つである Intel の MKL を使用して、これを成功裏に実行しました (クローズド ソースであるため、明らかに再コンパイルできません!)。

唯一の要件は、LAPACK ライブラリにリンクするためのパスを提供することです (いずれにせよ、トップ レベルのルーチンに必要でした)。

f2py -L/path/to/lapack -llapack -m module -c module.f

(もちろん、ライブラリ パスとライブラリ名をマシンに適用できるものに置き換えます)

module.f 内のすべての呼び出しは純粋な Fortran であるかのように行われるため、module.f 内のコードの周囲にはラッパーのみが必要です。

于 2012-05-26T15:30:08.727 に答える