OpenAcc&x2B;Cython不工作了 我有一些C++代码,我想用OpenACC加速。我使用Cython调用Python中的C++,但是当我添加OpenACC PRAPMAS时,它似乎不起作用。我尝试了一个简单的程序: #include <stdio.h> #define N 2000000000 #define vl 1024 int main(void) { double pi = 0.0f; long long i; #pragma acc parallel vector_length(vl) #pragma acc loop reduction(+:pi) for (i=0; i<N; i++) { double t= (double)((i+0.5)/N); pi +=4.0/(1.0+t*t); } printf("pi=%11.10f\n",pi/N); return 0; }

OpenAcc&x2B;Cython不工作了 我有一些C++代码,我想用OpenACC加速。我使用Cython调用Python中的C++,但是当我添加OpenACC PRAPMAS时,它似乎不起作用。我尝试了一个简单的程序: #include <stdio.h> #define N 2000000000 #define vl 1024 int main(void) { double pi = 0.0f; long long i; #pragma acc parallel vector_length(vl) #pragma acc loop reduction(+:pi) for (i=0; i<N; i++) { double t= (double)((i+0.5)/N); pi +=4.0/(1.0+t*t); } printf("pi=%11.10f\n",pi/N); return 0; },python,c,cython,openacc,Python,C,Cython,Openacc,我的setup.py文件如下所示: from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize extensions = [Extension(name="cpi", sources=["cpi.pyx"], extra_compile_ar

我的
setup.py
文件如下所示:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize

extensions = [Extension(name="cpi",
                        sources=["cpi.pyx"],
                        extra_compile_args=["-O3", "-fopenacc", "-foffload=nvptx-none"],
                        extra_link_args=["-lgomp", "-fno-lto"],
                        language="c")]

setup(ext_modules = cythonize(extensions))
使用
python setup.py build\u ext--inplace
构建可以工作,但是当我尝试从python调用函数时,我得到一个错误:“libgomp:target function未映射”

当我尝试在不使用
-fno lto
标志的情况下构建时,在python中调用它之后,会出现错误“ImportError:…so:undefined symbol:\uuuu offload\u func\u table”


我在互联网上没有发现任何类似的东西…

main
在C中有特殊的含义。当你从Cython调用它时,我会尝试调用其他名称。我尝试过重命名它,同样的错误。对于其他C++代码,我也得到了同样的错误,我认为这不是代码的特殊之处,但更可能是一些错误的编译器选项…尝试添加<代码>“-fOpenACC”、“-fFoFult+NVPTX NONE”< /C> >代码> EXTRO-LIKKYARGS >否则链接器不知道OpenACC是必需的。在详细模式下运行gcc命令
-v
,查看真正发生的情况,并将build\u ext Run与
-v
进行比较。哇,非常感谢!我觉得我其实很蠢。。。我以为我尝试了编译参数和链接参数的每一种组合,但似乎我只是忘记了将
-fopenacc
-foffload=nvptx none
添加到
额外链接参数
。。。
from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize

extensions = [Extension(name="cpi",
                        sources=["cpi.pyx"],
                        extra_compile_args=["-O3", "-fopenacc", "-foffload=nvptx-none"],
                        extra_link_args=["-lgomp", "-fno-lto"],
                        language="c")]

setup(ext_modules = cythonize(extensions))