#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;
}
当用gcc pi.c -fopenacc -foffload=nvptx-none -foffload="-O3" -O3 -o gpu.x
编译它时,它可以完美地工作。在
然后我尝试用一个非常简单的.pyx
文件将其包装在cython中:
我的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_ext --inplace
构建可以工作,但是当我试图从python调用函数时,我得到一个错误:“libgomp:target function was not mapped”
当我尝试在没有-fno-lto
标志的情况下构建时,在python中调用它后,我得到错误“ImportError:…so:undefined symbol:\uu offload_func_table”。在
我在网上没有发现类似的东西。。。在
目前没有回答
相关问题 更多 >
编程相关推荐