由于我描述earlier的原因,我需要在Python中使用LAPACKs dgesvd和zgesvd方法,而不是在numpy中包含的方法。
有人指出,我可以使用f2py创建自己的python包。麻烦的是,lapack中的dgesdd调用了许多其他方法,如dbdsqr,dgelqf以及一些BLAS例程,我不知道,我该如何处理。
任何人都可以指出,创建dgesvd python模块的方法是什么,而不必重新编译整个lapack库?
非常感谢 米莎
答案 0 :(得分:4)
您不需要包装整个LAPACK库,只需要包装所需的LAPACK例程。例程与下面的Fortran调用连接。我已经成功地使用英特尔的MKL完成了这个问题,其中一个解决方案类似于dgesvd(显然我无法重新编译,因为它是封闭源代码!)。
唯一的要求是你提供链接到LAPACK库的路径(无论如何你都需要顶层例程):
f2py -L/path/to/lapack -llapack -m module -c module.f
(当然,将库路径和库名称替换为适用于您机器的名称)
在module.f中的代码周围只需要一个包装器,因为module.f中的所有调用都像纯Fortran一样完成。