如何通过f2py将pgfortran(具有OpenAcc direvantive)与python连接
使用f2py连接python和Fortran语言。 f2py网站 Fortran在使用之前,gfortran和pgfortran(PGI)集成了OpenMP,两者都可以工作 makefile文件在下面 gfortran版本如何通过f2py将pgfortran(具有OpenAcc direvantive)与python连接,python,fortran,f2py,pgi,Python,Fortran,F2py,Pgi,使用f2py连接python和Fortran语言。 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 pgfortra
gfortran -c -fopenmp mod_readfile.f90 -lgomp
f2py -c mod_readfile.f90 --f90flags="-fopenmp" -lgomp -m mod_readfile
pgfortran -c -mp mod_readfile.f90 -lgomp
f2py -c mod_readfile.f90 --fcompiler=pg --f90flags="-mp" -lgomp -m mod_readfile
pgfortran版本
gfortran -c -fopenmp mod_readfile.f90 -lgomp
f2py -c mod_readfile.f90 --f90flags="-fopenmp" -lgomp -m mod_readfile
pgfortran -c -mp mod_readfile.f90 -lgomp
f2py -c mod_readfile.f90 --fcompiler=pg --f90flags="-mp" -lgomp -m mod_readfile
那么$已识别Fortran中的omp direvantive
我想把它扩展到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
谷歌搜索后
用acc(gfortran)和f2py编译,
但我仍然想知道,是否有可能让带有acc的pgfortran与python连接?我应该使用哪些编译标志?
谢谢试着用“-ta=tesla:nordc”编译。RDC代表可重定位设备代码,它要求设备代码与设备链接器链接。虽然我们(PGI)增加了对在共享对象中使用RDC的支持,但我不确定f2py使用的流程是否正确,因此可能没有使用pgfortran创建共享对象,因此错过了设备链接步骤
使用nordc的警告是,您不能在模块本身之外使用设备模块数据(通过“declare”指令),也不能调用设备例程(通过“routine”指令) 该语言的名称是Fortran。自1990年以来,它一直被拼写为Fortran。