所以我试图在我的opencl主机代码中初始化一个变量,如下所示:
cl_float2 es = (cl_float2)(0.0f,0.0f);
其中,使用Clang 2.9失败了:
source/solveEikonalEq.c:75:38: warning: expression result unused [-Wunused-value]
cl_float2 es = (cl_float2)(0.0f,0.0f);
^~~~
source/solveEikonalEq.c:75:26: error: cast to union type from type 'float' not present in union
cl_float2 es = (cl_float2)(0.0f,0.0f); //ray's tangent vector
^ ~~~~~~~~~~~
并且,当使用GCC 4.6.1时,失败:
source/solveEikonalEq.c:75:42: warning: left-hand operand of comma expression has no effect [-Wunused-value]
source/solveEikonalEq.c:75:26: error: cast to union type from type not present in union
我正在使用AMD的opencl sdk,并且可以很好地构建示例。 我做错了什么?
答案 0 :(得分:5)
您正尝试在主机代码中使用OpenCL C样式的初始化程序,这可能是使用C编译器编译的。换句话说,这种初始化方式仅在您的内核中有效。在那里,您不会使用平台类型,而只需使用float2
。
请在主机代码中尝试此操作:
cl_float2 var = { 0.0f, 0.0f };
这对你有用。