【发布时间】:2019-11-05 19:12:09
【问题描述】:
使用 f2py 连接 python 和 Fortran 语言。 f2py 网站 https://docs.scipy.org/doc/numpy/f2py/
Fortran 之前使用 gfortran 和 pgfortran(PGI) 集成 OpenMP 都可以工作。
makefile 文件在下面
gfortran 版本
gfortran -c -fopenmp mod_readfile.f90 -lgomp
f2py -c mod_readfile.f90 --f90flags="-fopenmp" -lgomp -m mod_readfile
pgfortran 版本
pgfortran -c -mp mod_readfile.f90 -lgomp
f2py -c mod_readfile.f90 --fcompiler=pg --f90flags="-mp" -lgomp -m mod_readfile
然后 !$omp 在 Fortran 中的衍生被识别
我想把它扩展成OpenAcc,!$acc也能被识别,但是失败了,因为openacc被合并到pgfortran(PGI)中,所以我使用makefile如下
pgfortran -c -acc mod_readfile.f90 -lcublas -lcudart -lgomp
f2py -c mod_readfile.f90 --fcompiler=pg --f90flags="-acc" -m mod_readfile -lcublas -lcudart -lgomp
在我检查之前
pgfortran -c -acc mod_readfile.f90
单独使用效果很好。 但是当它作为python模块操作时,它有一些问题。也混淆了这些标志(-lcublas -lcudart -lgomp),下面不起作用,因为缺少 -lgomp 标志
gfortran -c -fopenmp mod_readfile.f90
f2py -c mod_readfile.f90 --f90flags="-fopenmp" -m mod_readfile
google 后找到Using F2Py with OpenACC gives import error in Python 用 acc (gfortran) 和 f2py 编译, 但我仍然想知道是否可以将 pgfortran 与 acc 连接到 python?我应该使用哪些编译标志? 谢谢
【问题讨论】:
-
语言名称是 Fortran。自 1990 年以来,它一直被拼写为 Fortran。