【问题标题】:f2py: Wrapping fortran module which makes use of subrouines distributed in different files?f2py:包装使用分布在不同文件中的子程序的 fortran 模块?
【发布时间】:2012-05-26 14:11:23
【问题描述】:

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

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

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

非常感谢 米沙

【问题讨论】:

    标签: python lapack f2py


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 听起来不错,我会试一试并回复您,谢谢!!
    • 这已经帮助了很多,谢谢,我仍然有一个问题,虽然获取奇异向量的返回数组。请看一下我的follow-up Q 好吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多