由于我之前所述的原因,我需要在Python中使用LAPACK的dgesvd和zgesvd方法,而不是numpy中包装的方法。 有人指出,我可以使用f2py创建自己的Python包。问题是,lapack中的dgesdd调用了一堆其他方法,如dbdsqr、dgelqf以及一些BLAS例程,我不知道该如何处理。 有人能指出,创建一个dgesvd Python模块的正确方法而不必重新编译整个lapack库吗? 非常感谢 Mischa
您不需要包装整个LAPACK库,只需要包装您想要的LAPACK例程。例程在底层与Fortran调用相关联。我已经成功地使用Intel的MKL完成了其中一种类似于dgesvd的求解器的这项工作(显然我无法重新编译它,因为它是闭源的!)。 唯一的要求是您提供链接到LAPACK库的路径(无论如何,您都需要这个顶级例程)。 f2py -L/path/to/lapack -llapack -m module -c module.f 当然,根据你的机器,替换库路径和库名称。 在module.f中仅需要包装代码,因为所有module.f内部调用都像纯Fortran一样执行。