4

由于我之前描述的原因,我需要在 Python 中使用 LAPACK 的 dgesvd 和 zgesvd 方法,而不是使用 numpy 包装的方法。

有人指出,我可以使用 f2py 来创建自己的 python 包。问题是,lapack 中的 dgesdd 调用了许多其他方法,例如 dbdsqr、dgelqf 以及一些 BLAS 例程,我不知道应该如何处理。

谁能指出,在不必重新编译整个 lapack 库的情况下创建 dgesvd python 模块的正确方法是什么?

非常感谢米沙

4

1 回答 1

5

你不需要包装整个 LAPACK 库,只需要你想要的 LAPACK 例程。这些例程与下面的 Fortran 调用相关联。对于类似于 dgesvd 的求解器之一,我已经使用英特尔的 MKL 成功完成了此操作(显然我无法重新编译它,因为它是封闭源代码!)。

唯一的要求是您提供链接到 LAPACK 库的路径(无论如何您都需要顶级例程):

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

(当然,将库路径和库名称替换为您机器上适用的内容)

module.f 中的代码只需要一个包装器,因为 module.f 中的所有调用都像纯 Fortran 一样完成。

于 2012-05-26T15:30:08.727 回答