gpt4 book ai didi

c - OpenCL 结构参数无效的地址空间

转载 作者:太空狗 更新时间:2023-10-29 17:12:01 25 4
gpt4 key购买 nike

我是 OpenCL 的新手,我正在尝试使以下内核正常工作。当我运行该程序时,我在内核程序的构建过程中遇到错误。更具体的错误如下:

Error: Failed to build program executable!
<program source>:19:64: error: invalid address space for argument to __kernel function
__kernel void accelarate_flow(__global const t_param params,
^

你可以在这里看到内核。一开始我以为那​​是因为我没有在内核中定义结构,但即使我添加了它们,问题仍然存在。我在这里做错了什么?

const char *accelerate_flow_kernel_source =  
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
typedef struct
{
int nx;
int ny;
int maxIters;
int reynolds_dim;
double density;
double accel;
double omega;
} t_param;

typedef struct
{
double speeds[9];
} t_speed;

__kernel void accelarate_flow(__global const t_param params,
__global const int* obstacles,
__global t_speed* cells,
const unsigned int count)
{
int pos = get_global_id(0);
if(pos >= count || pos % params.nx != 0) return;
double w1,w2;
w1 = params.density * params.accel / 9.0;
w2 = params.density * params.accel / 36.0;
if(!obstacles[pos] &&
(cells[pos].speeds[3] - w1) > 0.0 &&
(cells[pos].speeds[6] - w2) > 0.0 &&
(cells[pos].speeds[7] - w2) > 0.0 )
{
cells[pos].speeds[1] += w1;
cells[pos].speeds[5] += w2;
cells[pos].speeds[8] += w2;
cells[pos].speeds[3] -= w1;
cells[pos].speeds[6] -= w2;
cells[pos].speeds[7] -= w2;
}
}

最佳答案

global 是一个指针限定符(地址空间),所以你必须传递global const t_param* params

关于c - OpenCL 结构参数无效的地址空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10018342/

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