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))