内核数组调用问题

版主,
你好,内核函数传递二维数组时,其维度(如下面的HEIGHT)从主机读取的文件里面获得时,编译不了。但是将HEIGHT不从文件读入,变为宏定义,如#define HEIGHT 128则可以。怎么改为从文件里读取并成功实现内核传递呢?
global void gpu0(float (*d_u0)[HEIGHT])
{
//code
}

楼主你好,如果现在要使用带有维度信息的指针,则你的HEIGHT常数必须是编译时刻能确定的,你在运行时刻从文件读取是不可以的。

建议的解决方案:
将HEIGHT作为参数传递,同时将d_u0改成普通指针,自己去计算下标。
(即:d_u0[y * HEIGHT + x])

请立刻尝试,感谢来访。