首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用f2py连接pgfortran(has OpenAcc direvative )和python

如何用f2py连接pgfortran(has OpenAcc direvative )和python
EN

Stack Overflow用户
提问于 2019-10-28 06:05:17
回答 1查看 170关注 0票数 1

使用f2py连接python和Fortran语言。f2py网站https://docs.scipy.org/doc/numpy/f2py/

在使用Fortran之前,gfortran和pgfortran(PGI)集成OpenMP都可以工作。

makefile文件如下

gfortran版本

代码语言:javascript
复制
    gfortran -c -fopenmp mod_readfile.f90 -lgomp
    f2py -c  mod_readfile.f90 --f90flags="-fopenmp" -lgomp -m mod_readfile

pgfortran版本

代码语言:javascript
复制
    pgfortran -c -mp mod_readfile.f90  -lgomp
    f2py -c  mod_readfile.f90 --fcompiler=pg --f90flags="-mp" -lgomp -m mod_readfile 

然后!Fortran中的$omp direvative就被识别出来了

我想将它扩展到OpenAcc,也可以识别!$acc,但失败了,因为openacc被合并到pgfortran(PGI)中,所以我使用makefile,如下所示

代码语言:javascript
复制
    pgfortran -c -acc mod_readfile.f90 -lcublas -lcudart -lgomp
    f2py -c  mod_readfile.f90 --fcompiler=pg --f90flags="-acc"  -m mod_readfile -lcublas -lcudart -lgomp

在我检查之前

代码语言:javascript
复制
pgfortran -c -acc mod_readfile.f90

单独使用效果很好。但是,当它作为python的模块进行操作时,它会出现一些问题。我也混淆了这些标志(-lcublas -lcudart -lgomp),下面不能工作,因为缺少-lgomp标志

代码语言:javascript
复制
    gfortran -c -fopenmp mod_readfile.f90 
    f2py -c  mod_readfile.f90 --f90flags="-fopenmp" -m mod_readfile

在google find用acc (Gfortran)和f2py编译了Using F2Py with OpenACC gives import error in Python之后,我还是想知道有没有可能让pgfortran和acc连接到python上?我应该使用哪些编译标志?谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-10-28 22:46:37

尝试使用"-ta=tesla:nordc“进行编译。RDC代表可重定位的设备代码,它需要设备代码与设备链接器链接。虽然我们(PGI)已经添加了对在共享对象中使用RDC的支持,但我不确定f2py使用的进程可能没有使用pgfortran来创建共享对象,从而错过了设备链接步骤。

使用nordc需要注意的是,您不能在模块本身之外使用设备模块数据(通过"declare“指令),也不能调用设备例程(通过”routines“指令)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58583765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档