gpt4 book ai didi

python - 无法为 prange 中的数组赋值

转载 作者:行者123 更新时间:2023-11-28 05:44:04 25 4
gpt4 key购买 nike

我正在尝试为每个 thead 分配一个单独的数组。但是,当我尝试为其分配值时,出现错误:错误:从“int”到“int*”的无效转换 [-fpermissive]这是代码:

cdef void test(int size,int num,int len,int height,int *f,int n_f):
cdef int k
cdef Node* tree_root
cdef int i
cdef int *a

for i in prange(num,nogil=True,num_threads=2):
a=<int *>malloc(sizeof(int)*size)
srand(rand())
#a[0]=rand()%len #if uncommented gives error
with gil:
for k in range(size):#if uncommented gives error
a[k]=rand()%len

无法理解为什么不允许赋值的问题??

最佳答案

这对我来说似乎是一个错误。我可以在 Ubuntu 14.04.4 上使用 cython 版本 0.20.1post0 重现它。这是由 % 操作引起的。如果您删除这两个事件,它应该可以正常工作。

如果我用 cython 编译上面的代码,生成的 C 代码包含以下行

int * __pyx_parallel_temp1 = 1;

这会导致问题,因为 int 已分配给 int*

我假设您使用 g++ 编译,在这种情况下会引发错误。使用 gcc 只会在我的系统上发出警告,这应该没问题。或者,您可以将标志 -fpermissive 传递给 g++ 以使其工作。

因此,以下对我有用:

cython code.pxy
g++ code.c -c `pkg-config --libs --cflags python2` -fpermissive

同样:

cython code.pxy
gcc code.c -c `pkg-config --libs --cflags python2`

关于python - 无法为 prange 中的数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36577182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com