gpt4 book ai didi

python - 下标值不是数组、指针或 vector ,当我尝试执行此内核代码时收到此错误消息

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:00 25 4
gpt4 key购买 nike

xx_np = np.random.rand(16500).astype(np.float32)
u_np = np.random.rand(16500).astype(np.float32)
vector_np = np.random.rand(16500).astype(np.float32)
temp_np = np.random.rand(16500).astype(np.float32)
ctx= cl.Context([device]) #context
queue = cl.CommandQueue(ctx) #commandqueue

mf = cl.mem_flags #memoryflags

xx_g = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=xx_np)

u_g = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=u_np)

vector_g = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=vector_np)

temp_g = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=temp_np)

q00=q0

prg = cl.Program(ctx, """
__kernel void dota( __global float *xx, __global float *u, __global float *vector, __global float *temp, __global float *res, float q00, float s,float i)

{

int index = get_global_id(0);

int qindex= get_global_id(0);

res[index] = xx[index]*u[index-1];

res[index] = res[index]*u[index-1];

xx[index]= xx[index]-res[index];

float a= pow(pow(xx[index],2)+pow(xx[index+1],2),0.5);

float b= pow(pow(vector[index],2)+pow(vector[index+1],2),0.5);

if(b==0)

{ i=vector[qindex]+q00;

b=pow(pow(i,2)+pow(i,2),0.5);

}

s=100*(a/b);

s[index]=s;

temp[index]=s[index];

}

""").build()

res_g = cl.Buffer(ctx, mf.WRITE_ONLY, temp_np.nbytes)

prg.dota(queue, temp_np.shape, None, temp_g, xx_g,res_g)

res_np = np.empty_like(temp_np)

cl.enqueue_copy(queue, res_np, res_g)

print res_np

下标值不是数组、指针或 vector ,当我尝试执行此内核代码时收到此错误消息。

我是 opencl 和内核代码的新手,所以无法弄清楚为什么我会收到此错误消息。因为我使用了 global_id(0) 然后使用它的大小作为我的索引。它应该可以正常工作。

最佳答案

s 是一个浮点变量,所以 s[index]=s; 会引发错误

关于python - 下标值不是数组、指针或 vector ,当我尝试执行此内核代码时收到此错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42440233/

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