Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过f2py将pgfortran(具有OpenAcc direvantive)与python连接_Python_Fortran_F2py_Pgi - Fatal编程技术网

如何通过f2py将pgfortran(具有OpenAcc direvantive)与python连接

如何通过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

使用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
    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。