【发布时间】:2014-07-03 10:25:39
【问题描述】:
我倾向于编写如下 OpenCL 代码:
void do_something(float4 *thefoo)
{
thefoo->s0++;
}
__kernel void MyKernel(__global float4 myfloat)
{
do_something(&myfloat);
}
当然,这是一个玩具示例。它在 Nvidida 的 OpenCL SDK(我可以访问)下按预期工作,但我的朋友/项目合作伙伴正在运行 AMD APP SDK,他抱怨这不能编译。它给出了:
error: expression must have pointer-to-struct-or-union type
在他的系统上使用(*thefoo).s0++ 可以工作,但它使代码非常难看。
我在 OpenCL 规范中找不到任何提及 -> 运算符的内容,但我也不认为我违反了任何指针限制。我写的 OpenCL 是有效的吗?
此外,我打算在上述上下文中使用结构而不是向量类型编写更多代码。如果这是我的错误,那么当他提取我的代码时我会遇到同样的问题吗?
【问题讨论】:
标签: opencl